[med-svn] [seqan2] 03/04: Imported Upstream version 2.2.0+dfsg

Andreas Tille tille at debian.org
Wed Aug 3 20:18:34 UTC 2016


This is an automated email from the git hooks/post-receive script.

tille pushed a commit to branch master
in repository seqan2.

commit 7c3e54b2d18e986e9bc8d8afc46df8ea605499ff
Author: Andreas Tille <tille at debian.org>
Date:   Wed Aug 3 21:13:20 2016 +0200

    Imported Upstream version 2.2.0+dfsg
---
 CHANGELOG.rst                                      |   122 +-
 CMakeLists.txt                                     |    44 +-
 CONTRIBUTING.rst                                   |    20 +
 README.rst                                         |    18 +-
 apps/CMakeLists.txt                                |     1 -
 apps/alf/CMakeLists.txt                            |     2 +-
 apps/bs_tools/CMakeLists.txt                       |    15 +-
 apps/bs_tools/casbar.cpp                           |     4 +-
 apps/bs_tools/tests/run_tests.py                   |     4 +-
 apps/dfi/CMakeLists.txt                            |     2 +-
 apps/dfi/tests/run_tests.py                        |     2 +-
 apps/fiona/CMakeLists.txt                          |    14 +-
 apps/fiona/fiona.cpp                               |     8 +-
 apps/fiona/tests/run_tests.py                      |     2 +-
 apps/fx_tools/CMakeLists.txt                       |     2 +-
 apps/gustaf/CMakeLists.txt                         |     2 +-
 apps/gustaf/msplazer_algorithms.h                  |    16 +-
 apps/gustaf/tests/run_tests.py                     |     2 +-
 apps/gustaf/tests/st1_l30.gff                      |     4 +-
 apps/gustaf/tests/st1_l30.vcf                      |     4 +-
 apps/gustaf/tests/st1_l30_gth3.gff                 |     4 +-
 apps/gustaf/tests/st1_l30_gth3.vcf                 |     4 +-
 apps/gustaf/tests/st1_l30_ith5.gff                 |     2 +-
 apps/gustaf/tests/st1_l30_ith5.vcf                 |     2 +-
 apps/gustaf/tests/st1_l30_m.gff                    |     4 +-
 apps/gustaf/tests/st1_l30_m.vcf                    |     4 +-
 apps/insegt/CMakeLists.txt                         |     2 +-
 apps/insegt/LICENSE                                |    27 +-
 apps/insegt/tests/run_tests.py                     |     2 +-
 apps/mason2/CMakeLists.txt                         |     7 +-
 apps/mason2/external_split_merge.cpp               |     6 +-
 apps/mason2/tests/run_tests.py                     |     2 +-
 apps/mason2/vcf_materialization.cpp                |     4 +-
 apps/micro_razers/CMakeLists.txt                   |     2 +-
 apps/micro_razers/micro_razers.cpp                 |     2 +-
 apps/micro_razers/tests/run_tests.py               |     2 +-
 apps/ngs_roi/CMakeLists.txt                        |     2 +-
 apps/ngs_roi/tests/run_tests.py                    |     2 +-
 apps/ngs_roi/tool_shed/ctd2galaxy.py               |     2 +-
 apps/ngs_roi/tool_shed/ngs_roi/app.py              |     2 +-
 apps/ngs_roi/tool_shed/ngs_roi/argparse.py         |     2 +-
 apps/ngs_roi/tool_shed/ngs_roi/io.py               |     2 +-
 apps/ngs_roi/tool_shed/roi_details.py              |     2 +-
 apps/ngs_roi/tool_shed/roi_plot_thumbnails.py      |     2 +-
 apps/ngs_roi/tool_shed/roi_report.py               |     2 +-
 apps/ngs_roi/tool_shed/roi_table.py                |     2 +-
 apps/ngs_roi/tool_shed/rois.py                     |     2 +-
 apps/pair_align/CMakeLists.txt                     |     2 +-
 apps/pair_align/lib/CMakeLists.txt                 |    19 +-
 apps/pair_align/tests/run_tests.py                 |     2 +-
 apps/param_chooser/CMakeLists.txt                  |     2 +-
 apps/rabema/CMakeLists.txt                         |     2 +-
 apps/rabema/rabema_stats.h                         |     6 +-
 apps/rabema/tests/run_tests.py                     |     2 +-
 apps/razers/CMakeLists.txt                         |     2 +-
 apps/razers/gapped_params/dat2cpp.py               |     2 +-
 apps/razers/razers.cpp                             |     4 +-
 apps/razers/tests/run_tests.py                     |     2 +-
 apps/razers3/CMakeLists.txt                        |    10 +-
 apps/razers3/outputFormat.h                        |     6 +-
 apps/razers3/parallel_store.h                      |    10 +-
 apps/razers3/paramChooser.h                        |     3 +-
 apps/razers3/profile_timeline.h                    |    14 +-
 apps/razers3/razers.cpp                            |    10 +-
 .../razers3/tests/pe-adeno-reads100_2-f-tc0.razers |    16 +-
 .../tests/pe-adeno-reads100_2-i100-tc1.razers      |    42 +-
 .../tests/pe-adeno-reads100_2-i90-tc0.razers       |    16 +-
 .../tests/pe-adeno-reads100_2-i90-tc1.razers       |    24 +-
 .../tests/pe-adeno-reads100_2-i91-tc0.razers       |    36 +-
 .../tests/pe-adeno-reads100_2-i91-tc1.razers       |    16 +-
 .../tests/pe-adeno-reads100_2-i92-tc0.razers       |    16 +-
 .../tests/pe-adeno-reads100_2-i92-tc1.razers       |    16 +-
 .../tests/pe-adeno-reads100_2-i93-tc1.razers       |    24 +-
 .../tests/pe-adeno-reads100_2-i94-tc0.razers       |    16 +-
 .../tests/pe-adeno-reads100_2-i94-tc1.razers       |    20 +-
 .../tests/pe-adeno-reads100_2-i95-tc0.razers       |    24 +-
 .../tests/pe-adeno-reads100_2-i95-tc1.razers       |     8 +-
 .../tests/pe-adeno-reads100_2-i96-tc0.razers       |    20 +-
 .../tests/pe-adeno-reads100_2-i96-tc1.razers       |    12 +-
 .../tests/pe-adeno-reads100_2-of0-tc0.razers       |    24 +-
 .../tests/pe-adeno-reads100_2-of0-tc1.razers       |     8 +-
 apps/razers3/tests/pe-adeno-reads100_2-of4-tc0.sam |     2 +-
 apps/razers3/tests/pe-adeno-reads100_2-of4-tc1.sam |     2 +-
 .../razers3/tests/pe-adeno-reads100_2-r-tc0.razers |     8 +-
 .../tests/pe-adeno-reads100_2-so0-tc0.razers       |    24 +-
 .../tests/pe-adeno-reads100_2-so0-tc1.razers       |     8 +-
 .../tests/pe-adeno-reads100_2-so1-tc0.razers       |    24 +-
 .../tests/pe-adeno-reads100_2-so1-tc1.razers       |     8 +-
 apps/razers3/tests/pe-adeno-reads100_2-tc0.razers  |    24 +-
 apps/razers3/tests/pe-adeno-reads100_2-tc1.razers  |     8 +-
 .../tests/pe-adeno-reads36_2-i100-tc1.razers       |   118 +-
 .../tests/pe-adeno-reads36_2-i90-tc0.razers        |     8 +-
 .../tests/pe-adeno-reads36_2-i90-tc1.razers        |     8 +-
 .../tests/pe-adeno-reads36_2-i91-tc0.razers        |     8 +-
 .../tests/pe-adeno-reads36_2-i91-tc1.razers        |     8 +-
 .../tests/pe-adeno-reads36_2-i98-tc1.razers        |   118 +-
 .../tests/pe-adeno-reads36_2-i99-tc1.razers        |   118 +-
 apps/razers3/tests/pe-adeno-reads36_2-of4-tc0.sam  |     2 +-
 apps/razers3/tests/pe-adeno-reads36_2-of4-tc1.sam  |     2 +-
 apps/razers3/tests/run_tests.py                    |     2 +-
 apps/razers3/tests/run_tests_sequential.py         |     2 +-
 apps/razers3/tests/se-adeno-reads100_1-of4-tc0.sam |     2 +-
 apps/razers3/tests/se-adeno-reads100_1-of4-tc1.sam |     2 +-
 apps/razers3/tests/se-adeno-reads36_1-of4-tc0.sam  |     2 +-
 apps/razers3/tests/se-adeno-reads36_1-of4-tc1.sam  |     2 +-
 apps/rep_sep/CMakeLists.txt                        |     2 +-
 apps/sak/CMakeLists.txt                            |     2 +-
 apps/sak/sak.cpp                                   |   105 +-
 apps/sak/tests/adeno.sn.fa                         |     5 -
 apps/sak/tests/run_tests.py                        |     2 +-
 apps/sam2matrix/CMakeLists.txt                     |     2 +-
 apps/sam2matrix/tests/run_tests.py                 |     2 +-
 apps/samcat/CMakeLists.txt                         |     2 +-
 apps/samcat/tests/run_tests.py                     |     2 +-
 apps/searchjoin/CMakeLists.txt                     |     2 +-
 apps/searchjoin/join.cpp                           |     8 +
 apps/searchjoin/search.cpp                         |     7 +
 apps/searchjoin/tests/run_tests.py                 |     2 +-
 apps/seqan_tcoffee/CMakeLists.txt                  |     2 +-
 apps/seqan_tcoffee/tests/run_tests.py              |     2 +-
 apps/seqcons2/CMakeLists.txt                       |     2 +-
 apps/seqcons2/tests/run_tests.py                   |     2 +-
 apps/sgip/CMakeLists.txt                           |     2 +-
 apps/sgip/tests/run_tests.py                       |     2 +-
 apps/snp_store/CMakeLists.txt                      |     6 +-
 apps/snp_store/snp_store.cpp                       |     2 +-
 apps/snp_store/snp_store.h                         |     2 +-
 apps/snp_store/tests/run_tests.py                  |     2 +-
 apps/splazers/CMakeLists.txt                       |     2 +-
 apps/splazers/splazers.cpp                         |     2 +-
 apps/splazers/tests/run_tests.py                   |     2 +-
 apps/stellar/CMakeLists.txt                        |     2 +-
 apps/stellar/tests/run_tests.py                    |     2 +-
 apps/tree_recon/CMakeLists.txt                     |     2 +-
 apps/tree_recon/tests/run_tests.py                 |     2 +-
 apps/yara/CMakeLists.txt                           |    39 +-
 apps/yara/README.rst                               |    99 +-
 apps/yara/basic_alphabet.h                         |     2 +-
 apps/yara/bits_matches.h                           |    54 +-
 apps/yara/find_extender.h                          |    35 +-
 apps/yara/find_verifier.h                          |    22 +-
 apps/yara/index_fm.h                               |    63 +-
 apps/yara/mapper.cpp                               |    60 +-
 apps/yara/mapper.h                                 |    94 +-
 apps/yara/mapper_aligner.h                         |     4 +-
 apps/yara/mapper_writer.h                          |    69 +-
 apps/yara/misc_options.h                           |     8 +-
 apps/yara/misc_tags.h                              |    10 +
 apps/yara/misc_types.h                             |    20 +-
 apps/yara/tests/gold/adeno-reads_1.t1.sam          |  1992 +--
 apps/yara/tests/run_tests.py                       |     4 +-
 demos/CMakeLists.txt                               |     1 -
 demos/blast/blast_in_lowlevel.cpp                  |     2 +-
 demos/dox/align/gaps_example.cpp.stdout            |    10 +-
 demos/dox/graph_algorithms/dijkstra.cpp.stdout     |     8 +-
 demos/dox/index/open_save.cpp                      |     4 +
 demos/dox/modifier/cyclic_shape.cpp                |     4 +-
 demos/dox/stream/lexical_cast.cpp                  |    21 +-
 demos/howto/align_gaps_clipping.cpp.stdout         |    27 +
 demos/howto/filter_similar_sequences.cpp           |     5 +-
 demos/howto/filter_similar_sequences.cpp.stderr    |     1 +
 .../filter_similar_sequences.cpp.stdout}           |     0
 demos/howto/scores/init_score.cpp                  |     2 +-
 demos/howto/scores/load_score.cpp.stdout           |    12 +-
 .../align.cpp                                      |    89 +-
 demos/tutorial/alignment/align.cpp.stdout          |    74 +
 .../align_assignment1.cpp}                         |     0
 .../align_assignment1.cpp.stdout                   |     0
 demos/tutorial/alignment/graph.cpp                 |    59 +
 .../graph.cpp.stdout                               |     4 +
 .../graph_assignment1.cpp                          |    42 +-
 .../graph_assignment1.cpp.stdout                   |     0
 .../alignment/scoring_scheme_affine_dgs.cpp        |    42 +
 .../alignment/scoring_scheme_affine_dgs.cpp.stdout |    16 +
 .../scoring_scheme_matrix.cpp}                     |     9 +-
 .../alignment/scoring_scheme_matrix.cpp.stdout     |     5 +
 .../scoring_scheme_simple.cpp}                     |    11 +-
 .../alignment/scoring_scheme_simple.cpp.stdout     |     5 +
 .../alignment_representation/align.cpp.stdout      |    48 -
 demos/tutorial/alignment_representation/graph.cpp  |    43 -
 demos/tutorial/alphabets/assignment_1_solution.cpp |     2 +-
 .../alphabets/assignment_1_solution.cpp.stdout     |   Bin 183 -> 200 bytes
 demos/tutorial/basics/allocator.cpp.stdout         |    12 +-
 demos/tutorial/bed_io/base.cpp                     |    20 +-
 demos/tutorial/bed_io/example1.cpp.stdout          |     5 +
 demos/tutorial/bed_io/solution1.cpp.stdout         |     5 +
 demos/tutorial/{blast => blast_io}/plus_sub.m0     |     0
 .../{blast => blast_io}/read_assignment.cpp        |    11 +-
 demos/tutorial/blast_io/read_assignment.cpp.stderr |     1 +
 .../{blast => blast_io}/write_assignment.cpp       |    11 +-
 .../tutorial/blast_io/write_assignment.cpp.stderr  |     1 +
 .../{blast => blast_io}/write_assignment.m0        |     0
 .../{blast => blast_io}/write_assignment.m8        |     0
 .../{blast => blast_io}/write_assignment.m9        |     0
 .../{blast => blast_io}/write_assignment_legacy.m8 |     0
 demos/tutorial/file_io_overview/example1.cpp       |    11 +-
 .../fragment_store/access_aligned_reads2.cpp       |     2 +-
 .../access_aligned_reads2.cpp.stdout               |     4 +-
 demos/tutorial/gff_and_gtf_io/base.cpp             |    10 +-
 demos/tutorial/graph/graph_algo_scc.cpp            |     4 +-
 demos/tutorial/graph/graph_hmm.cpp                 |     1 -
 demos/tutorial/graph/solution_1.cpp                |     3 -
 demos/tutorial/index_iterators/index_search.cpp    |     2 +-
 demos/tutorial/indexed_fasta_io/base.cpp           |     2 +-
 demos/tutorial/indexed_fasta_io/base.cpp.stdout    |     1 -
 demos/tutorial/indexed_fasta_io/example.fasta.fai  |     1 +
 demos/tutorial/indexed_fasta_io/solution1.cpp      |     6 +-
 .../tutorial/indexed_fasta_io/solution1.cpp.stderr |     1 +
 .../solution1.cpp.stdout                           |     0
 demos/tutorial/indexed_fasta_io/solution2.cpp      |    14 +-
 .../tutorial/indexed_fasta_io/solution2.cpp.stderr |     1 +
 .../solution2.cpp.stdout}                          |     0
 demos/tutorial/indices/base.cpp                    |    15 +-
 demos/tutorial/iterators/base.cpp                  |     4 +-
 .../journaled_string_tree_base.cpp                 |    64 +
 .../journaled_string_tree_base.cpp.stdout          |     2 +
 .../journaled_string_tree_base_assignment1.cpp     |    52 +
 ...urnaled_string_tree_base_assignment1.cpp.stdout |    20 +
 .../metafunctions/assignment1_solution.cpp         |    35 +
 .../metafunctions/assignment1_solution.cpp.stdout  |     2 +
 demos/tutorial/metafunctions/base.cpp              |    14 +-
 demos/tutorial/metafunctions/base.cpp.stdout       |     7 +-
 demos/tutorial/metafunctions/swap.cpp              |    61 -
 demos/tutorial/metafunctions/swap.cpp.stdout       |     2 -
 .../multiple_sequence_alignment/consensus.cpp      |     2 +-
 .../alignment_global_assignment1.cpp               |     4 +-
 .../alignment_global_assignment2.cpp               |     6 +-
 .../alignment_global_overlap.cpp                   |     2 +-
 .../alignment_global_standard.cpp                  |     2 +-
 .../alignment_local.cpp                            |     2 +-
 .../pairwise_sequence_alignment/assignment5.cpp    |    36 +-
 .../assignment5.cpp.stdout                         |     6 +-
 .../assignment5_step6.cpp                          |    30 +-
 .../assignment5_step6.cpp.stdout                   |     6 +-
 .../example_with_struct.cpp                        |     4 +
 .../q_gram_index/index_assignment6.cpp.stdout      |    20 +-
 demos/tutorial/sam_and_bam_io/base.cpp             |    16 +-
 demos/tutorial/seed_and_extend/example1.cpp        |    38 +-
 demos/tutorial/seed_and_extend/example1.cpp.stdout |    22 +-
 demos/tutorial/seed_and_extend/example2.cpp        |    12 +-
 demos/tutorial/seed_and_extend/example2.cpp.stdout |     4 +-
 demos/tutorial/seed_and_extend/example3.cpp        |    32 +-
 demos/tutorial/seed_and_extend/example3.cpp.stdout |    11 +-
 demos/tutorial/seed_and_extend/example4.cpp        |    38 +-
 demos/tutorial/seed_and_extend/example4.cpp.stdout |    13 +-
 demos/tutorial/seed_and_extend/example5.cpp        |    28 +-
 demos/tutorial/seed_and_extend/example5.cpp.stdout |     3 +-
 demos/tutorial/seed_and_extend/example7.cpp        |    54 +-
 demos/tutorial/seed_and_extend/example7.cpp.stdout |    12 +-
 demos/tutorial/seed_and_extend/example8.cpp        |    39 -
 demos/tutorial/seed_and_extend/example8.cpp.stdout |     8 -
 demos/tutorial/seed_and_extend/solution1.cpp       |    43 +-
 .../tutorial/seed_and_extend/solution1.cpp.stdout  |    14 +-
 demos/tutorial/seed_and_extend/solution2.cpp       |    12 +-
 .../tutorial/seed_and_extend/solution2.cpp.stdout  |     4 +-
 demos/tutorial/seed_and_extend/solution3.cpp       |    32 +-
 .../tutorial/seed_and_extend/solution3.cpp.stdout  |    14 +-
 demos/tutorial/seed_and_extend/solution4.cpp       |    46 +-
 .../tutorial/seed_and_extend/solution4.cpp.stdout  |    12 +-
 demos/tutorial/seed_and_extend/solution5.cpp       |    33 +-
 .../tutorial/seed_and_extend/solution5.cpp.stdout  |     4 -
 demos/tutorial/seed_and_extend/solution6.cpp       |    30 +-
 .../tutorial/seed_and_extend/solution6.cpp.stdout  |     8 +
 demos/tutorial/seed_and_extend/solution7.cpp       |    34 -
 .../tutorial/seed_and_extend/solution7.cpp.stdout  |     8 -
 .../{seed_and_extend => seeds}/example1.cpp        |     0
 .../{seed_and_extend => seeds}/example1.cpp.stdout |     0
 .../{seed_and_extend => seeds}/solution1.cpp       |     0
 demos/tutorial/sequence_io/solution4.cpp           |     2 +-
 demos/tutorial/sequence_io/solution4.cpp.stdout    |     9 +-
 demos/tutorial/sequences/assignment_6_solution.cpp |     2 +-
 .../sequences/assignment_6_solution.cpp.stdout     |    20 +
 demos/tutorial/sequences/base.cpp                  |    10 +-
 .../assignment_exact_generous_solution.cpp.stdout  |     4 +-
 .../genequant_assignment2.cpp.stdout               |     2 +
 .../genequant_assignment3.cpp.stdout               |     2 +
 .../genequant_assignment4.cpp.stdout               |     2 +
 .../genequant_assignment5.cpp.stdout               |     2 +
 demos/tutorial/vcf_io/base.cpp                     |     8 +-
 demos/tutorial/vcf_io/example1.cpp.stdout          |    24 +
 demos/tutorial/vcf_io/solution1.cpp.stdout         |    24 +
 .../workflows}/knime_node.cpp                      |     0
 .../benchmark_stream_write.cpp                     |    20 +-
 demos/unassigned_or_unused/cuda/count.cu           |   144 -
 demos/unassigned_or_unused/cuda/mmap.cu            |    67 -
 demos/unassigned_or_unused/index_lcp.cpp           |     2 +-
 dox/CMakeLists.txt                                 |     5 +-
 dox/pages/index.dox                                |    25 +-
 include/seqan/align.h                              |    16 +-
 include/seqan/align/align_base.h                   |     2 +-
 include/seqan/align/align_interface_wrapper.h      |   179 +
 include/seqan/align/dp_algorithm_impl.h            |   395 +-
 include/seqan/align/dp_align_simd_helper.h         |   517 +
 include/seqan/align/dp_cell.h                      |    47 +-
 include/seqan/align/dp_cell_affine.h               |    64 +-
 include/seqan/align/dp_cell_dynamic.h              |    96 +-
 include/seqan/align/dp_cell_linear.h               |    42 +-
 include/seqan/align/dp_context.h                   |     4 +-
 include/seqan/align/dp_formula.h                   |    84 +-
 include/seqan/align/dp_formula_affine.h            |   420 +-
 include/seqan/align/dp_formula_dynamic.h           |   379 +-
 include/seqan/align/dp_formula_linear.h            |   172 +-
 .../seqan/align/dp_matrix_navigator_score_matrix.h |    26 +-
 .../dp_matrix_navigator_score_matrix_sparse.h      |    26 +-
 .../seqan/align/dp_matrix_navigator_trace_matrix.h |    81 +-
 include/seqan/align/dp_meta_info.h                 |    32 +
 include/seqan/align/dp_profile.h                   |   114 +-
 include/seqan/align/dp_scout.h                     |   154 +-
 include/seqan/align/dp_scout_simd.h                |   454 +
 include/seqan/align/dp_setup.h                     |    96 +-
 include/seqan/align/dp_trace_segment.h             |    40 +-
 include/seqan/align/dp_traceback_adaptor.h         |    18 +-
 include/seqan/align/dp_traceback_impl.h            |   195 +-
 include/seqan/align/fragment.h                     |     4 +-
 include/seqan/align/gaps_anchor.h                  |    36 +-
 include/seqan/align/gaps_array.h                   |    27 +-
 include/seqan/align/gaps_base.h                    |    26 +-
 include/seqan/align/global_alignment_banded.h      |   239 +
 .../seqan/align/global_alignment_hirschberg_impl.h |    68 +-
 .../align/global_alignment_myers_hirschberg_impl.h |    65 +-
 include/seqan/align/global_alignment_unbanded.h    |   220 +-
 include/seqan/align/local_alignment_banded.h       |    69 +
 include/seqan/align/local_alignment_enumeration.h  |     1 +
 include/seqan/align/local_alignment_unbanded.h     |    66 +-
 include/seqan/align/matrix_base.h                  |    14 +-
 include/seqan/align_extend/dp_scout_xdrop.h        |     8 +-
 include/seqan/align_split/align_split_interface.h  |   359 +-
 include/seqan/align_split/dp_scout_split.h         |     8 +-
 include/seqan/arg_parse.h                          |     2 +-
 include/seqan/arg_parse/arg_parse_argument.h       |    16 +-
 include/seqan/arg_parse/arg_parse_ctd_support.h    |     8 +
 include/seqan/bam_io/read_sam.h                    |     7 +-
 include/seqan/basic.h                              |     4 +-
 include/seqan/basic/aggregate_concept.h            |     5 +-
 include/seqan/basic/allocator_interface.h          |   116 +-
 include/seqan/basic/alphabet_adapt_builtins.h      |    24 -
 include/seqan/basic/alphabet_concept.h             |     2 +-
 include/seqan/basic/alphabet_math.h                |    13 +-
 include/seqan/basic/alphabet_residue.h             |     8 -
 include/seqan/basic/alphabet_residue_funcs.h       |     4 +-
 include/seqan/basic/alphabet_residue_tabs.h        |     2 +-
 include/seqan/basic/alphabet_simple_type.h         |   186 +-
 include/seqan/basic/alphabet_storage.h             |     6 +-
 include/seqan/basic/array_construct_destruct.h     |     4 +-
 include/seqan/basic/basic_allocator.h              |     1 +
 include/seqan/basic/basic_exception.h              |     4 +-
 include/seqan/basic/basic_simd_vector.h            |  1547 +-
 include/seqan/basic/basic_type.h                   |    12 +-
 include/seqan/basic/boost_preprocessor_subset.h    |   336 +-
 include/seqan/basic/concept_checking.h             |     2 +-
 include/seqan/basic/debug_test_system.h            |   372 +-
 include/seqan/basic/fundamental_comparison.h       |    10 +-
 include/seqan/basic/fundamental_conversion.h       |     4 +-
 include/seqan/basic/holder_simple.h                |    11 -
 include/seqan/basic/iterator_adapt_std.h           |    23 +-
 include/seqan/basic/iterator_adaptor.h             |    82 +-
 include/seqan/basic/iterator_base.h                |     2 +-
 include/seqan/basic/iterator_interface.h           |    28 +-
 include/seqan/basic/iterator_range.h               |    38 +-
 include/seqan/basic/math_functions.h               |     4 +-
 include/seqan/basic/metaprogramming_math.h         |     2 +-
 include/seqan/basic/pair_base.h                    |    12 +-
 include/seqan/basic/pair_bit_compressed.h          |    14 +-
 include/seqan/basic/pair_packed.h                  |    22 +-
 include/seqan/basic/profiling.h                    |     4 +-
 include/seqan/basic/test_system.h                  |    19 +-
 include/seqan/basic/triple_packed.h                |    14 +-
 include/seqan/basic/tuple_base.h                   |    31 +-
 include/seqan/basic/tuple_bit_compressed.h         |    56 +-
 include/seqan/blast.h                              |     2 +-
 include/seqan/blast/blast_base.h                   |     2 +-
 include/seqan/blast/blast_report_out.h             |    50 +-
 include/seqan/blast/blast_statistics.h             |   111 +-
 include/seqan/blast/blast_tabular_in.h             |     2 +-
 include/seqan/blast/blast_tabular_out.h            |     2 +-
 include/seqan/file/file_base.h                     |    10 +-
 include/seqan/file/file_cstyle.h                   |     8 +-
 include/seqan/file/file_interface.h                |    10 +-
 include/seqan/file/file_mapping.h                  |    45 +-
 include/seqan/file/file_page.h                     |     6 +-
 include/seqan/file/string_external.h               |    64 +-
 include/seqan/file/string_mmap.h                   |     8 +-
 include/seqan/find/find_base.h                     |     8 +-
 include/seqan/graph_msa/graph_align_tcoffee_msa.h  |     2 +-
 include/seqan/index.h                              |    13 +-
 include/seqan/index/find2_backtracking.h           |    14 +-
 include/seqan/index/find2_base.h                   |    16 +-
 include/seqan/index/find2_functors.h               |    19 +-
 include/seqan/index/find2_index.h                  |    16 +-
 include/seqan/index/find2_index_multi.h            |   168 +-
 include/seqan/index/find2_vstree_factory.h         |     8 +-
 include/seqan/index/find_backtracking.h            |     2 +-
 include/seqan/index/find_index_binary.h            |    22 +-
 include/seqan/index/index_base.h                   |    92 +-
 include/seqan/index/index_bidirectional.h          |   211 +
 include/seqan/index/index_bidirectional_stree.h    |   392 +
 .../seqan/index/index_bifm.h                       |    61 +-
 include/seqan/index/index_bifm_stree.h             |   108 +
 include/seqan/index/index_dfi.h                    |    14 +
 include/seqan/index/index_esa_base.h               |    28 +-
 include/seqan/index/index_esa_stree.h              |   150 +-
 include/seqan/index/index_fm.h                     |    55 +-
 include/seqan/index/index_fm_compressed_sa.h       |    16 +-
 include/seqan/index/index_fm_device.h              |   151 -
 include/seqan/index/index_fm_lf_table.h            |    90 +-
 .../seqan/index/index_fm_rank_dictionary_base.h    |    26 +-
 .../seqan/index/index_fm_rank_dictionary_levels.h  |  1227 +-
 .../seqan/index/index_fm_rank_dictionary_naive.h   |     6 +-
 include/seqan/index/index_fm_rank_dictionary_wt.h  |    24 +-
 include/seqan/index/index_fm_sparse_string.h       |    22 +-
 include/seqan/index/index_fm_stree.h               |   123 +-
 include/seqan/index/index_pizzachili.h             |    16 +
 include/seqan/index/index_pizzachili_string.h      |     2 +
 include/seqan/index/index_qgram.h                  |    26 +-
 include/seqan/index/index_qgram_openaddressing.h   |    22 +-
 include/seqan/index/index_sa_stree.h               |    16 +-
 include/seqan/index/index_shims.h                  |    23 +-
 include/seqan/index/index_view.h                   |    40 +-
 include/seqan/index/index_wotd.h                   |    12 +
 include/seqan/index/pizzachili_api.h               |    12 +
 include/seqan/index/shape_base.h                   |    12 +-
 include/seqan/index/shape_minimizer.h              |     2 +-
 include/seqan/index/shape_threshold.h              |    89 +-
 .../journaled_set/journal_alignment_interface.h    |     4 +-
 .../journal_alignment_traceback_adaptor.h          |     4 +-
 .../journaled_string_tree/jst_extension_base.h     |     7 +-
 include/seqan/misc/bit_twiddling.h                 |    63 +-
 include/seqan/misc/cuda.h                          |   296 -
 include/seqan/misc/terminal.h                      |    22 +-
 include/seqan/modifier.h                           |     1 +
 include/seqan/modifier/modifier_padding.h          |   413 +
 include/seqan/modifier/modifier_position.h         |     4 +-
 include/seqan/modifier/modifier_string.h           |    12 +-
 include/seqan/parallel.h                           |    17 +-
 include/seqan/parallel/parallel_algorithms.h       |     4 +-
 .../seqan/parallel/parallel_atomic_primitives.h    |    26 +-
 include/seqan/parallel/parallel_lock.h             |    50 +-
 include/seqan/parallel/parallel_macros.h           |    17 +-
 .../seqan/parallel/parallel_queue_suspendable.h    |   173 +-
 include/seqan/parallel/parallel_serializer.h       |     8 +-
 include/seqan/pipe/pool_base.h                     |     4 +-
 include/seqan/platform.h                           |   381 +-
 include/seqan/platform/platform_gcc.h              |   178 -
 include/seqan/platform/platform_icc.h              |    69 -
 include/seqan/platform/platform_nvcc.h             |   150 -
 include/seqan/platform/platform_windows.h          |   125 -
 include/seqan/score.h                              |     5 +
 include/seqan/score/score_base.h                   |    16 +
 include/seqan/score/score_matrix.h                 |    22 +-
 include/seqan/score/score_matrix_dyn.h             |   240 +
 include/seqan/score/score_simd_wrapper.h           |   183 +
 include/seqan/score/score_simple.h                 |     1 -
 include/seqan/seeds/banded_chain_alignment.h       |     2 +-
 include/seqan/seeds/banded_chain_alignment_impl.h  |     4 +-
 include/seqan/seeds/banded_chain_alignment_scout.h |     5 +-
 .../seqan/seeds/banded_chain_alignment_traceback.h |    31 +-
 include/seqan/seq_io/fai_index.h                   |     4 +-
 include/seqan/seq_io/read_genbank.h                |     1 +
 include/seqan/sequence.h                           |    15 -
 include/seqan/sequence/adapt_thrust_vector.h       |   800 -
 include/seqan/sequence/container_view.h            |    86 +-
 include/seqan/sequence/container_view_zip.h        |     5 +
 include/seqan/sequence/segment_base.h              |    12 +-
 include/seqan/sequence/segment_infix.h             |    59 +-
 include/seqan/sequence/segment_prefix.h            |    28 +-
 include/seqan/sequence/segment_suffix.h            |    20 +-
 include/seqan/sequence/sequence_forwards.h         |    80 +-
 include/seqan/sequence/sequence_interface.h        |    32 +-
 include/seqan/sequence/string_alloc.h              |    20 +-
 include/seqan/sequence/string_array.h              |    10 +
 include/seqan/sequence/string_base.h               |    25 +-
 include/seqan/sequence/string_cstyle.h             |    13 -
 include/seqan/sequence/string_packed.h             |    16 -
 include/seqan/sequence/string_set_base.h           |    96 +-
 include/seqan/sequence/string_set_concat_direct.h  |   129 +-
 include/seqan/sequence/string_set_device.h         |    76 -
 include/seqan/sequence/string_set_segment.h        |    60 +-
 include/seqan/store/store_annotation.h             |     2 +-
 include/seqan/stream/file_stream.h                 |    16 +-
 include/seqan/stream/formatted_file.h              |     3 +-
 include/seqan/stream/iostream_bgzf.h               |    87 +-
 include/seqan/stream/stream_base.h                 |     2 +-
 include/seqan/system.h                             |    25 +-
 include/seqan/system/file_async.h                  |  1414 +-
 include/seqan/system/file_directory.h              |     4 +-
 include/seqan/system/file_forwards.h               |    33 +-
 include/seqan/system/file_sync.h                   |   631 +-
 include/seqan/system/system_base.h                 |     6 +-
 include/seqan/system/system_condition.h            |   147 -
 .../system/{system_event.h => system_event_win.h}  |   165 +-
 include/seqan/system/system_forwards.h             |    39 -
 include/seqan/system/system_mutex.h                |   215 -
 include/seqan/system/system_thread.h               |   225 -
 include/seqan/vcf_io/read_vcf.h                    |     2 +-
 include/seqan/version.h                            |     2 +-
 manual/README                                      |     2 +-
 manual/source/BuildManual.rst                      |    12 -
 .../BuildManual/UsingFindSeqAnCMakeModule.rst      |   212 -
 .../BuildManual/UsingTheSeqAnBuildSystem.rst       |   573 -
 manual/source/Glossary.rst                         |    10 -
 manual/source/Glossary/SuffixTree.rst              |    40 -
 manual/source/HowTo.rst                            |    12 -
 manual/source/HowTo/AutomateTests.rst              |   102 -
 manual/source/HowTo/DevelopCUDA.rst                |    91 -
 manual/source/HowTo/EditorSetup.rst                |    86 -
 .../HowTo/GenerateKnimeNodesExternalTools.rst      |   430 -
 manual/source/HowTo/GenerateSeqAnKnimeNodes.rst    |   441 -
 manual/source/HowTo/GwnImport1.png                 |   Bin 52622 -> 0 bytes
 manual/source/HowTo/GwnImport2.png                 |   Bin 60605 -> 0 bytes
 manual/source/HowTo/GwnImport3.png                 |   Bin 93823 -> 0 bytes
 manual/source/HowTo/GwnImportDone.png              |   Bin 41378 -> 0 bytes
 .../source/HowTo/GwnInstallFileHandlingNodes.png   |   Bin 97082 -> 0 bytes
 manual/source/HowTo/GwnRunConfiguration.png        |   Bin 134914 -> 0 bytes
 manual/source/HowTo/InstallContribsWindows.rst     |    46 -
 manual/source/HowTo/SamPlugins.png                 |   Bin 30583 -> 0 bytes
 manual/source/HowTo/SamWorkflow.png                |   Bin 8245 -> 0 bytes
 manual/source/HowTo/SetupNightlyBuilds.rst         |    18 -
 .../source/HowTo/UseParallelBuildDirectories.rst   |   153 -
 manual/source/HowTo/UseSeqAnNodesInKnime.rst       |    93 -
 .../HowTo/editor_setup_VS_space_indentation.png    |   Bin 366965 -> 0 bytes
 .../editor_setup_eclipse_space_indentation.png     |   Bin 201408 -> 0 bytes
 .../source/HowTo/indentation_settings_xcode3.png   |   Bin 73000 -> 0 bytes
 .../source/HowTo/indentation_settings_xcode4.png   |   Bin 91404 -> 0 bytes
 manual/source/HowTo/install-knime-1.png            |   Bin 195909 -> 0 bytes
 manual/source/HowTo/install-knime-2.png            |   Bin 196914 -> 0 bytes
 manual/source/HowTo/install-knime-3.png            |   Bin 184471 -> 0 bytes
 manual/source/HowTo/install-knime-4.png            |   Bin 149059 -> 0 bytes
 manual/source/HowTo/workflow_plugin_dir.zip        |   Bin 808808 -> 0 bytes
 manual/source/Infrastructure.rst                   |    13 -
 manual/source/Infrastructure/BuildSystem.rst       |    73 -
 .../Contribute}/DoxApiDocs.rst                     |    83 +-
 .../GitWorkflow.rst}                               |    31 +-
 .../Contribute/StyleCpp.rst}                       |    49 +-
 .../Contribute/StyleOther.rst}                     |    16 +-
 .../Contribute}/WriteCommitMessages.rst            |    20 +-
 manual/source/Infrastructure/Contribute/index.rst  |    42 +
 manual/source/Infrastructure/Documentation.rst     |    50 -
 .../source/Infrastructure/Manage/NightlyBuilds.rst |   115 +
 manual/source/Infrastructure/Manage/Releases.rst   |    79 +
 .../Infrastructure/Manage/RepositoryStructure.rst  |   194 +
 .../Manage}/WriteAppTests.rst                      |    19 +-
 .../Manage}/WriteTutorials.rst                     |    24 +-
 .../Manage/WriteUnitTests.rst}                     |    41 +-
 .../{HowTo => Infrastructure/Manage}/app_tests.png |   Bin
 .../{HowTo => Infrastructure/Manage}/app_tests.svg |     0
 manual/source/Infrastructure/Manage/index.rst      |    19 +
 .../Misc}/FixWhitespaceAutomatically.rst           |    17 +-
 .../Misc}/ProfilePrograms.rst                      |    15 +-
 .../Misc}/WriteNiceUnixPrograms.rst                |    31 +-
 .../Misc}/Xcode-Behavior.png                       |   Bin
 manual/source/Infrastructure/Misc/index.rst        |    13 +
 .../{HowTo => Infrastructure/Misc}/uig-1.png       |   Bin
 .../{HowTo => Infrastructure/Misc}/uig-2.png       |   Bin
 .../{HowTo => Infrastructure/Misc}/uig-3.png       |   Bin
 .../{HowTo => Infrastructure/Misc}/uig-4.png       |   Bin
 .../{HowTo => Infrastructure/Misc}/uig-5.png       |   Bin
 .../source/Infrastructure/RepositoryStructure.rst  |   128 -
 .../source/Infrastructure/Use/CMakeBuildDirs.rst   |   162 +
 .../Use/CustomBuildSystem.rst}                     |   164 +-
 .../source/Infrastructure/Use/FindSeqAnCMake.rst   |   232 +
 manual/source/Infrastructure/Use/Install.rst       |    87 +
 .../Infrastructure/Use/InstallDependencies.rst     |    46 +
 manual/source/Infrastructure/Use/index.rst         |    49 +
 manual/source/StyleGuide.rst                       |    10 -
 manual/source/StyleGuide/JavaScript.rst            |     6 -
 manual/source/Tutorial.rst                         |   257 -
 .../Alignment}/MultipleSequenceAlignment.rst       |    11 +-
 .../Alignment}/PairwiseSequenceAlignment.rst       |   102 +-
 .../Algorithms/Alignment/align_transcript.png      |   Bin 0 -> 85088 bytes
 .../Alignment}/alignment_AlignConfig.png           |   Bin
 .../{ => Algorithms/Alignment}/alignment_band.png  |   Bin
 .../Alignment}/alignment_example.png               |   Bin
 .../source/Tutorial/Algorithms/Alignment/index.rst |    38 +
 .../{ => Algorithms}/ConsensusAlignment.rst        |     7 +-
 .../Tutorial/{ => Algorithms}/GlobalChaining.png   |   Bin
 .../Tutorial/{ => Algorithms}/GlobalChaining.svg   |     0
 .../source/Tutorial/Algorithms/GraphAlgorithms.rst |   201 +
 .../PatternMatching/IndexedPatternMatching.rst     |   143 +
 .../PatternMatching/OnlinePatternMatching.rst}     |   143 +-
 .../Tutorial/Algorithms/PatternMatching/index.rst  |    36 +
 .../Tutorial/{ => Algorithms}/ReadLayout.png       |   Bin
 .../Tutorial/{ => Algorithms}/ReadLayout.svg       |     0
 .../Tutorial/{ => Algorithms}/Realignment.rst      |    15 +-
 .../SeedExtension.rst}                             |   134 +-
 .../Tutorial/Algorithms/fionaalg-150x150.png       |   Bin 0 -> 20446 bytes
 manual/source/Tutorial/Algorithms/index.rst        |    46 +
 .../Algorithms/stellarextension-150x150.png        |   Bin 0 -> 18467 bytes
 manual/source/Tutorial/Applications/Lambda.rst.bak |    10 +
 manual/source/Tutorial/Applications/Yara.rst.bak   |    10 +
 manual/source/Tutorial/Applications/index.rst.bak  |    13 +
 manual/source/Tutorial/BackgroundAndMotivation.rst |   143 -
 manual/source/Tutorial/BasicTechniques.rst         |    55 -
 manual/source/Tutorial/Basics.rst                  |   212 -
 .../Alignment/AlignmentGaps.rst}                   |   200 +-
 .../DataStructures/Alignment/AlignmentGraph.rst    |   115 +
 .../DataStructures/Alignment/ScoringSchemes.rst    |   188 +
 .../Tutorial/DataStructures/Alignment/affine.png   |   Bin 0 -> 8470 bytes
 .../DataStructures/Alignment/alig_ins_del.png      |   Bin 0 -> 83646 bytes
 .../Tutorial/DataStructures/Alignment/index.rst    |    24 +
 .../Tutorial/DataStructures/Alignment/linear.png   |   Bin 0 -> 6070 bytes
 .../Tutorial/{ => DataStructures}/Graphs.rst       |   283 +-
 .../Indices}/IndexIterators.rst                    |    66 +-
 .../{ => DataStructures/Indices}/QgramIndex.rst    |    33 +-
 .../Indices/StringIndices.rst}                     |    89 +-
 .../Tutorial/DataStructures/Indices/index.rst      |    76 +
 .../DataStructures/Indices}/streeNoSentinel.png    |   Bin
 .../Indices}/streePostorder.png                    |   Bin
 .../{ => DataStructures/Indices}/streePreorder.png |   Bin
 .../DataStructures/Indices}/streeSentinel.png      |   Bin
 .../Tutorial/DataStructures/JournalStringTree.rst  |   233 +
 .../Tutorial/{ => DataStructures}/Modifiers.rst    |    19 +-
 .../source/Tutorial/{ => DataStructures}/Seeds.png |   Bin
 manual/source/Tutorial/DataStructures/Seeds.rst    |    69 +
 .../source/Tutorial/{ => DataStructures}/Seeds.svg |     0
 .../{ => DataStructures/Sequence}/Alphabets.rst    |    15 +-
 .../{ => DataStructures/Sequence}/StringSets.rst   |    55 +-
 .../Sequence/StringsAndSegments.rst}               |   337 +-
 .../Tutorial/DataStructures/Sequence/index.rst     |    29 +
 .../{ => DataStructures/Store}/AnnotationStore.png |   Bin
 .../{ => DataStructures/Store}/AnnotationTree.png  |   Bin
 .../{ => DataStructures/Store}/FragmentStore.png   |   Bin
 .../{ => DataStructures/Store}/FragmentStore.rst   |    41 +-
 .../Store}/GenomeAnnotations.rst                   |    19 +-
 .../{ => DataStructures/Store}/ReadLayout.png      |   Bin
 .../{ => DataStructures/Store}/ReadLayout.svg      |     0
 .../Store}/assignment_annotations.gtf              |     0
 .../source/Tutorial/DataStructures/Store/index.rst |    15 +
 .../Tutorial/{ => DataStructures}/graph_cities.jpg |   Bin
 manual/source/Tutorial/DataStructures/index.rst    |    52 +
 .../{ => DataStructures}/modify_string.png         |   Bin
 manual/source/Tutorial/GenericProgramming.rst      |    94 -
 manual/source/Tutorial/GettingStarted.rst          |    77 -
 .../{ => GettingStarted}/AFirstExample.rst         |    56 +-
 .../GettingStarted/BackgroundAndMotivation.rst     |   242 +
 manual/source/Tutorial/GettingStarted/Eclipse.png  |   Bin 5104 -> 0 bytes
 manual/source/Tutorial/GettingStarted/Linux.png    |   Bin 23078 -> 0 bytes
 .../Tutorial/GettingStarted/LinuxEclipse.rst       |   249 -
 .../Tutorial/GettingStarted/LinuxMakefiles.rst     |   215 -
 .../Tutorial/GettingStarted/LinuxTerminal.png      |   Bin 7415 -> 0 bytes
 .../Tutorial/GettingStarted/MacMakefiles.rst       |   215 -
 manual/source/Tutorial/GettingStarted/MacOsX.png   |   Bin 15772 -> 0 bytes
 .../source/Tutorial/GettingStarted/MacTerminal.png |   Bin 4890 -> 0 bytes
 manual/source/Tutorial/GettingStarted/MacXcode.rst |   256 -
 .../ParsingCommandLineArguments.rst                |   124 +-
 .../Tutorial/GettingStarted/VisualStudio2010.png   |   Bin 4044 -> 0 bytes
 manual/source/Tutorial/GettingStarted/Windows7.png |   Bin 42197 -> 0 bytes
 .../GettingStarted/WindowsVisualStudio.rst         |   253 -
 manual/source/Tutorial/GettingStarted/Xcode.png    |   Bin 16306 -> 0 bytes
 .../GettingStarted/download-command-line-tools.png |   Bin 120139 -> 0 bytes
 .../GettingStarted/eclipse_linux_build_demo.png    |   Bin 220338 -> 0 bytes
 .../eclipse_linux_import_projects.png              |   Bin 114760 -> 0 bytes
 .../eclipse_linux_import_projects_2.png            |   Bin 89232 -> 0 bytes
 .../eclipse_linux_preference_build.png             |   Bin 143815 -> 0 bytes
 .../Tutorial/GettingStarted/eclipse_linux_run.png  |   Bin 20931 -> 0 bytes
 .../eclipse_linux_run_configurations.png           |   Bin 119260 -> 0 bytes
 .../GettingStarted/eclipse_linux_select_target.png |   Bin 146934 -> 0 bytes
 .../Tutorial/GettingStarted/first_demo_inital.png  |   Bin 172111 -> 0 bytes
 .../Tutorial/GettingStarted/first_demo_run.png     |   Bin 212071 -> 0 bytes
 manual/source/Tutorial/GettingStarted/index.rst    |    26 +
 .../{ => GettingStarted}/modify_string.png         |   Bin
 .../Tutorial/GettingStarted/razers2_built.png      |   Bin 220579 -> 0 bytes
 .../Tutorial/GettingStarted/razers2_selection.png  |   Bin 24186 -> 0 bytes
 .../GettingStarted/vs-solution-explorer.png        |   Bin 178618 -> 0 bytes
 .../Tutorial/GettingStarted/vs-startup-project.png |   Bin 381738 -> 0 bytes
 .../Tutorial/GettingStarted/win_tortoise.png       |   Bin 9946 -> 0 bytes
 .../Tutorial/GettingStarted/xcode_startup.png      |   Bin 127272 -> 0 bytes
 manual/source/Tutorial/GlobalFunctionInterface.rst |    13 -
 .../HowTo/Recipes}/AccessIndexFibres.rst           |    17 +-
 .../HowTo/Recipes}/ChooseTheJre.rst                |     7 +-
 .../HowTo/Recipes}/ClipAlignments.rst              |     8 +-
 .../HowTo/Recipes}/FilterSimilarSequences.rst      |     8 +-
 .../HowTo/Recipes}/JavaCompiler.png                |   Bin
 .../{HowTo => Tutorial/HowTo/Recipes}/JreHome.png  |   Bin
 .../{HowTo => Tutorial/HowTo/Recipes}/MacOSJre.png |   Bin
 .../Tutorial/HowTo/Recipes/Metafunctions.rst       |    90 +
 .../HowTo/Recipes}/Preferences.png                 |   Bin
 .../HowTo/Recipes}/ProjectProperties.png           |   Bin
 .../HowTo/Recipes}/WorkWithCustomScoreMatrices.rst |    27 +-
 .../HowTo/Recipes}/gaps_transformations.png        |   Bin
 manual/source/Tutorial/HowTo/Recipes/index.rst     |    12 +
 .../source/Tutorial/HowTo/UseCases/Overlapper.rst  |    10 +
 .../Tutorial/{ => HowTo/UseCases}/SimpleRnaSeq.rst |    21 +-
 manual/source/Tutorial/HowTo/UseCases/index.rst    |    12 +
 .../{ => HowTo/UseCases}/mini_bowtie_search.png    |   Bin
 manual/source/Tutorial/HowTo/index.rst             |    16 +
 manual/source/Tutorial/{ => InputOutput}/BedIO.rst |    25 +-
 .../source/Tutorial/{ => InputOutput}/BlastIO.rst  |   108 +-
 .../Tutorial/{ => InputOutput}/FileIOOverview.rst  |    74 +-
 .../Tutorial/{ => InputOutput}/GffAndGtfIO.rst     |    18 +-
 .../Tutorial/{ => InputOutput}/IndexedFastaIO.rst  |    31 +-
 .../Tutorial/{ => InputOutput}/SamAndBamIO.rst     |    52 +-
 .../Tutorial/{ => InputOutput}/SequenceIO.rst      |    30 +-
 manual/source/Tutorial/{ => InputOutput}/VcfIO.rst |    38 +-
 manual/source/Tutorial/InputOutput/index.rst       |    33 +
 .../Tutorial/{ => InputOutput}/sequences.fasta     |     0
 manual/source/Tutorial/Iterators.rst               |   203 -
 manual/source/Tutorial/JournaledSet.rst            |   615 -
 manual/source/Tutorial/KnimeNode.rst               |    71 -
 manual/source/Tutorial/Metafunctions.rst           |   169 -
 manual/source/Tutorial/SequencesInDepth.rst        |   148 -
 .../Tutorial/Workflows/GenerateKnimeNodes.rst      |   464 +
 .../Tutorial/Workflows/GenerateSeqAnKnimeNodes.rst |   192 +
 .../Tutorial/Workflows/KnimeReadySeqAnApp.rst      |    87 +
 .../Tutorial/Workflows/UseSeqAnNodesInKnime.rst    |    99 +
 manual/source/Tutorial/Workflows/example_data.zip  |   Bin 0 -> 43383 bytes
 manual/source/Tutorial/Workflows/folder.png        |   Bin 0 -> 2978 bytes
 manual/source/Tutorial/Workflows/gkn-import-1.png  |   Bin 0 -> 143868 bytes
 manual/source/Tutorial/Workflows/gkn-import-2.png  |   Bin 0 -> 164778 bytes
 manual/source/Tutorial/Workflows/gkn-import-3.png  |   Bin 0 -> 284737 bytes
 .../source/Tutorial/Workflows/gkn-import-done.png  |   Bin 0 -> 176978 bytes
 .../Workflows/gkn-install-file-handling-nodes.png  |   Bin 0 -> 89858 bytes
 .../Tutorial/Workflows/gkn-run-configuration.png   |   Bin 0 -> 349210 bytes
 manual/source/Tutorial/Workflows/index.rst         |    42 +
 .../source/Tutorial/Workflows/install-knime-1.png  |   Bin 0 -> 152452 bytes
 .../source/Tutorial/Workflows/install-knime-2.png  |   Bin 0 -> 176155 bytes
 .../source/Tutorial/Workflows/install-knime-3.png  |   Bin 0 -> 140572 bytes
 .../source/Tutorial/Workflows/install-knime-4.png  |   Bin 0 -> 283604 bytes
 .../source/Tutorial/Workflows/install-knime-5.png  |   Bin 0 -> 114639 bytes
 .../source/Tutorial/Workflows/install-knime-6.png  |   Bin 0 -> 169351 bytes
 .../Workflows/plugin-workflow.png}                 |   Bin
 manual/source/Tutorial/Workflows/sam-plugins.png   |   Bin 0 -> 129043 bytes
 manual/source/Tutorial/Workflows/sam-workflow.png  |   Bin 0 -> 44448 bytes
 .../Tutorial/Workflows/workflow_plugin_dir.zip     |   Bin 0 -> 1776963 bytes
 manual/source/Tutorial/WritingTests.rst            |   278 -
 manual/source/_static/seqan_ext.css                |    20 +
 manual/source/conf.py                              |     3 +
 manual/source/index.rst                            |   160 +-
 manual/source/seqan.bib                            |    33 +
 manual/source/under_construction.jpg               |   Bin 0 -> 10056 bytes
 manual/source/zreferences.rst                      |     1 +
 tests/align/CMakeLists.txt                         |    21 +
 tests/align/test_align_align.h                     |     4 -
 .../hello.cu => tests/align/test_align_simd.cpp    |    19 +-
 tests/align/test_align_simd.h                      |   559 +
 tests/align/test_alignment_algorithms_global.h     |     2 -
 .../test_alignment_algorithms_global_banded.h      |    25 +-
 .../align/test_alignment_dp_adapt_tracesegments.h  |    88 +-
 tests/align/test_alignment_dp_formula.h            |   560 +-
 tests/align/test_alignment_dp_trace_segment.h      |    60 +-
 tests/align/test_alignment_dp_traceback.h          |   500 +-
 tests/align_split/test_align_split.cpp             |     2 +
 tests/align_split/test_align_split.h               |   178 +-
 tests/arg_parse/test_arg_parse_ctd_support.h       |     2 +-
 tests/basic/CMakeLists.txt                         |    18 -
 tests/basic/test_basic_alphabet_adapt_builtins.h   |    16 +-
 tests/basic/test_basic_iterator.h                  |     4 +-
 tests/basic/test_basic_simd_vector.h               |     4 +-
 tests/blast/test_blast.cpp                         |     3 +-
 tests/blast/test_blast_misc.h                      |     2 +-
 tests/blast/test_blast_output.h                    |    13 +
 tests/cuda/test_cuda_index.cu                      |   249 -
 tests/cuda/test_cuda_sequence.cu                   |   151 -
 tests/graph_align/test_graph_match_refinement.h    |     2 +-
 tests/index/CMakeLists.txt                         |     6 +
 tests/index/test_index_bifm.cpp                    |   210 +
 tests/index/test_index_finder.cpp                  |     2 +-
 tests/index/test_index_fm.cpp                      |    27 +-
 tests/index/test_index_fm_rank_dictionary.cpp      |   114 +-
 tests/index/test_index_helpers.h                   |    35 +-
 tests/journaled_string_tree/CMakeLists.txt         |     3 -
 .../test_journaled_string_tree_traverser.h         |     9 +-
 tests/misc/test_misc.cpp                           |     6 +-
 tests/modifier/CMakeLists.txt                      |     3 +-
 tests/modifier/test_modifier.cpp                   |    10 +
 tests/modifier/test_modifier_string.h              |     2 +-
 tests/modifier/test_modifier_string_padding.h      |   184 +
 tests/pipe/test_pipe.cpp                           |    36 +-
 tests/{cuda => platform}/CMakeLists.txt            |    41 +-
 .../test_platform.cpp}                             |    26 +-
 .../platform/test_platform_range_based_for_loops.h |   112 +-
 tests/reduced_aminoacid/test_reduced_aminoacid.h   |    10 +-
 tests/score/test_score.cpp                         |    15 +
 tests/sequence/test_sequence.cpp                   |     4 +-
 tests/sequence/test_string_set.h                   |   515 +-
 tests/stream/test_stream_file_stream.h             |     2 +-
 util/bin/auto_build.py                             |     2 +-
 util/bin/dddoc.py                                  |     2 +-
 util/bin/demo_checker.py                           |    49 +-
 util/bin/dox.py                                    |     2 +-
 util/bin/fixgcov.py                                |     2 +-
 util/bin/profile2pdf.py                            |     2 +-
 util/bin/pyclangcheck.py                           |     2 +-
 util/bin/release_page.py                           |    14 -
 util/bin/skel.py                                   |     2 +-
 util/cmake/FindSeqAn.cmake                         |   230 +-
 util/cmake/SeqAnBuildSystem.cmake                  |   495 +-
 util/cmake/SeqAnCtdSetup.cmake                     |     2 +
 util/cmake/SetCPackSystemName.cmake                |    13 +
 util/cmake/ctd/configure_profile_properties.cmake  |     8 +
 util/cmake/ctd/mime.types                          |    28 +-
 util/cmake/ctd/plugin.properties.in                |     4 +-
 util/cmake/package.cmake                           |    24 +-
 util/colornvcc                                     |   259 -
 util/ctd2galaxy.py                                 |     2 +-
 util/makefile_project/Makefile.rules               |     3 +-
 util/makefile_project/debug/Makefile               |     2 +-
 util/makefile_project/release/Makefile             |     2 +-
 util/py_lib/pyratemp.py                            |     2 +-
 util/py_lib/seqan/app_tests.py                     |     2 +-
 util/py_lib/seqan/auto_build.py                    |     2 +-
 util/py_lib/seqan/dddoc/__init__.py                |     2 +-
 util/py_lib/seqan/dddoc/core.py                    |     2 +-
 util/py_lib/seqan/dddoc/dddoc.py                   |     2 +-
 util/py_lib/seqan/dddoc/html.py                    |     2 +-
 util/py_lib/seqan/dddoc/main.py                    |     2 +-
 util/py_lib/seqan/dox/dot_diagrams.py              |     2 +-
 util/py_lib/seqan/dox/dox_parser.py                |     2 +-
 util/py_lib/seqan/dox/dox_tokens.py                |     2 +-
 util/py_lib/seqan/dox/file_mgr.py                  |     2 +-
 util/py_lib/seqan/dox/inc_mgr.py                   |     2 +-
 util/py_lib/seqan/dox/lexer.py                     |     2 +-
 util/py_lib/seqan/dox/migration.py                 |     2 +-
 util/py_lib/seqan/dox/proc_doc.py                  |    15 +-
 util/py_lib/seqan/dox/pure.py                      |     6 +-
 util/py_lib/seqan/dox/raw_doc.py                   |     6 +-
 util/py_lib/seqan/dox/sig_parser.py                |     2 +-
 util/py_lib/seqan/dox/test/test_dox_parser.py      |     2 +-
 util/py_lib/seqan/dox/test/test_file_mgr.py        |     2 +-
 util/py_lib/seqan/dox/test/test_inc_mgr.py         |     2 +-
 util/py_lib/seqan/dox/test/test_lexer.py           |     2 +-
 util/py_lib/seqan/dox/test/test_proc_doc.py        |     4 +-
 util/py_lib/seqan/dox/test/test_raw_doc.py         |     2 +-
 util/py_lib/seqan/dox/test/test_sig_parser.py      |     2 +-
 util/py_lib/seqan/dox/tpl/css/full_list.css        |    13 +-
 .../bootstrap-treeview/css/bootstrap-treeview.css  |    60 +
 .../bootstrap-treeview/js/bootstrap-treeview.js    |  1248 ++
 util/py_lib/seqan/dox/tpl/list.html                | 14708 ++++++++++++++++++-
 util/py_lib/seqan/dox/validation.py                |     2 +-
 util/py_lib/seqan/dox/write_html.py                |    28 +-
 util/py_lib/seqan/fixgcov/__init__.py              |     2 +-
 util/py_lib/seqan/fixgcov/app.py                   |     2 +-
 util/py_lib/seqan/one_package.html                 |   175 -
 util/py_lib/seqan/paths.py                         |     2 +-
 util/py_lib/seqan/pyclangcheck/__init__.py         |     2 +-
 util/py_lib/seqan/pyclangcheck/app.py              |     2 +-
 util/py_lib/seqan/pyclangcheck/rules.py            |     2 +-
 util/py_lib/seqan/pyclangcheck/simple_checks.py    |     2 +-
 util/py_lib/seqan/pyclangcheck/suppressions.py     |     2 +-
 util/py_lib/seqan/pyclangcheck/violations.py       |     2 +-
 util/py_lib/seqan/release_page.html                |   215 -
 util/py_lib/seqan/release_page.py                  |   250 -
 util/py_lib/seqan/skel.py                          |     2 +-
 util/skel/app_tests_template/run_tests.py          |     2 +-
 util/uncrustify/uncrustify.cfg                     |     4 +-
 844 files changed, 38389 insertions(+), 21036 deletions(-)

diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 3b3d15a..cc92f1f 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -3,11 +3,125 @@ SeqAn Changelog
 
 This file summarizes the changes to the SeqAn library and apps.
 
+Release 2.2.0
+~~~~~~~~~~~~~
+
+Library Features
+^^^^^^^^^^^^^^^^
+
+- Indices:
+    - FM index now has several options to reduce space consumption or improve running time
+        - up to three level rank dictionaries
+        - size of blocks on the lowest level (referred to as ``WORDS_PER_BLOCK``)
+    - Bidirectional FM index with constant running time using EPR-dictionaries
+    - Please see the `manual <seqan.readthedocs.io/en/master/Tutorial/DataStructures/Indices/FMIndex.html>`_ for more information
+
+- Alignment:
+    - Vectorized DP-Alignment algorithms using SSE3/AVX2. Allows for inter-parallel alignment computation in a many-vs-many or one-vs-many mode.
+    - add a scoring matrix type that can be specified at runtime (e.g. BLOSSUM62, BLOSSUM50)
+
+- Modifier:
+    - ModifiedString ModPadding: Expand a string with padding symbols, without changing the source.
+
+- Other:
+    - Replace pthread implementation with STLs thread support library. Increases performance and fixes rare bugs in bam_io.
+
+App Updates
+^^^^^^^^^^^
+
+- SAK (Swiss Army Knife):
+    - fixed sequence filters.
+- Yara:
+    - verifying seeds
+    - fixes CIGARs and secondary records.
+
+Selected Bug Fixes
+^^^^^^^^^^^^^^^^^^
+
+- Alignments:
+    - fixes MyersHirschberg implementation.
+    - accept '=' operations in CIGAR string
+- Split Alignment:
+    - computes correct trace from split position.
+    - allows flexible free-end gaps configuration.
+- close Fasta file after FAI-Index is built.
+- fixes Character to AminoAcid conversion.
+- remove temporary files created during tests on Windows.
+
+Infrastructure Updates
+^^^^^^^^^^^^^^^^^^^^^^
+
+- Build System:
+    - The Intel Compiler is now fully supported on Linux and Windows, both 32bit and 64bit; it builds faster binaries and supports some functionality not available in MSVC.
+    - On Windows there is now experimental support for Clang/C2, the Microsoft version of the clang compiler.
+    - Please see the `manual <http://seqan.readthedocs.io/en/master/Infrastructure/Use/CMakeBuildDirs.html#visual-studio>`_ for more information on how to use these compilers.
+    - support deb/rpm/exe/dmg packages and SSE4+POPCNT binaries
+
+- Platforms:
+    - full FreeBSD support
+    - Ship UCRT, OPENMP and Intel DLLs for apps on windows
+    - more apps available on Windows and some packaging fixes
+
+Documentation Updates
+^^^^^^^^^^^^^^^^^^^^^
+
+- Api Docs:
+    - Tree-View by Module
+
+Release 2.1.1
+~~~~~~~~~~~~~
+
+Minor release including major improvements of the manual, several library bug-fixes and changes in the build system. All library modules are backward compatible
+with 2.1.0. For a complete list of changes visit `GitHub <https://github.com/seqan/seqan/pulls?q=is%3Apr+is%3Amerged++milestone%3A%22Release+2.1.1%22+>`_.
+
+Selected Bug Fixes
+^^^^^^^^^^^^^^^^^^
+
+- Tests:
+    - delete automatically created temp directories in unit and app tests
+    - demo tests: ``std::cout`` was not considered in tests
+
+App Updates
+^^^^^^^^^^^
+
+- Yara:
+    - fall back to single-end mapping when paired-end library length distribution is neither given nor estimable
+    - fixed handling of reference metagenomes (references larger than 16k sequences)
+    - enabled support for reference metagenomes by default (``-DYARA_LARGE_CONTIGS=ON``)
+    - added option ``--sensitivity`` (low, high, full)
+    - replaced option --output-secondary with ``--secondary-alignments`` (tag, record, omit)
+    - renamed several options
+
+Documentation Updates
+^^^^^^^^^^^^^^^^^^^^^
+
+- Manual:
+    - major reworking of the manual
+    - repaired links to API dox
+    - hourly update of API dox for nightly builds
+
+Infrastructure Updates
+^^^^^^^^^^^^^^^^^^^^^^
+
+- Build System:
+    - more sensible execinfo detection
+    - don't ship apps and the manual on library releases
+    - introduce cmake ``-DSEQAN_OFFICIAL_PKGS=1`` to build upstream releases with static binaries
+    - cache dependency detection on ``DEVELOP``
+    - make it possible to do ``RELEASE_LIBRARY`` without dox
+
+- Platforms:
+    - basic BSD support
+    - fixed warnings on Windows
+
+- KNIME:
+    - packaging - more flexibility when generating KNIME plugins of external apps
+
 
 Release 2.1.0
 ~~~~~~~~~~~~~
 
-Major release with many new features and applications. 
+Major release with many new features and applications.
 Except where noted below, this release is compatible to previous 2.x releases.
 For a complete list of changes visit `GitHub <https://github.com/seqan/seqan/pulls?q=is%3Apr+is%3Amerged++milestone%3A%22Release+2.1.0%22+>`_.
 
@@ -88,7 +202,7 @@ Infrastructure Updates
     - Major improvements to build system resulting in cleanup and dropped dependencies
     - C++11 is now required and many datatypes now have move cosntructors and -assignment operators
     - added support for new compiler versions, but dropped support for older compilers
-    - requirements are now GCC ≥ 4.8 or LLVM / Clang ≥ 3.4 (for Linux, Mac OSX, FreeBSD) and Visual C++ ≥ 10.0 / Visual Studio ≥ 2010 (for Windows)
+    - requirements are now GCC ≥ 4.9 or LLVM / Clang ≥ 3.5 (for Linux, Mac OSX, FreeBSD) and Visual C++ ≥ 14.0 / Visual Studio ≥ 2015 (for Windows)
 
 
 Release 2.0.2
@@ -228,7 +342,7 @@ Infrastructure Updates
 Release 2.0.0
 ~~~~~~~~~~~~~
 
-Major release with many new features and applications. 
+Major release with many new features and applications.
 Note, the majority of the modules are backward compatible to the previous version.
 Some modules, e.g. I/O-modules, have some adapted easier-to-use or unified interfaces.
 
@@ -255,7 +369,7 @@ Infrastructure Updates
 
 - The repository has been migrated to GitHub (https://github.com/seqan/seqan).
 - Continuous integration builds happen on TravisCI.
-- The manual has been migrated to sphinx (http://seqan.readthedocs.org).
+- The manual has been migrated to sphinx (http://seqan.readthedocs.io).
 - The ``core`` and ``extras`` subfolders have been removed.
 
 New Apps
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0334f74..4b9fd1c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -73,11 +73,10 @@ set (SEQAN_CTD_EXECUTABLES CACHE INTERNAL "Global list of executables for workfl
 # Build System Configuration Variables
 # ===========================================================================
 
-# Setting SEQAN_ENABLE_CUDA to ON through the command line or CMakeCache.txt
-# enables CUDA, provided the CUDA toolkit is found.
-option (SEQAN_ENABLE_CUDA
-        "Enable CUDA, if the toolkit is available."
-	OFF)
+option (SEQAN_STATIC_APPS "Build static apps." OFF)
+option (SEQAN_ARCH_SSE4 "Build SSE optimized binaries." OFF)
+option (SEQAN_ARCH_AVX2 "Build AVX optimized binaries." OFF)
+option (SEQAN_ARCH_NATIVE "Build natively optimized binaries." OFF)
 
 # ===========================================================================
 # Setup Modules and Find Packages.
@@ -118,28 +117,35 @@ seqan_get_repository_info ()
 # Include Subdirectories
 # ===========================================================================
 
-# Tests are only built when building in DEVELOP mode.
+# Tests, demos and manual are only built when building in DEVELOP mode.
 if ("${SEQAN_BUILD_SYSTEM}" STREQUAL "DEVELOP")
     message (STATUS "Configuring tests")
     add_subdirectory (tests)
-endif ()
 
-# Demos are required when doing a whole SeqAn release (copy demos) or when
-# developing (build demos).
-if (("${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE") OR
-    ("${SEQAN_BUILD_SYSTEM}" STREQUAL "DEVELOP"))
     message (STATUS "Configuring demos")
     add_subdirectory (demos)
+
+    message (STATUS "Configuring manual")
+    add_subdirectory (manual)
 endif ()
 
-message (STATUS "Configuring apps")
-add_subdirectory (apps)
-message (STATUS "Configuring dox")
-add_subdirectory (dox)
-message (STATUS "Configuring manual")
-add_subdirectory (manual)
-message (STATUS "Configuring util/py_lib")
-add_subdirectory (util/py_lib)
+if ((("${SEQAN_BUILD_SYSTEM}" STREQUAL "DEVELOP") OR
+     ("${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE_LIBRARY")) AND
+     (NOT SEQAN_NO_DOX))
+
+    message (STATUS "Configuring dox")
+    add_subdirectory (dox)
+
+    if ("${SEQAN_BUILD_SYSTEM}" STREQUAL "DEVELOP")
+        message (STATUS "Configuring util/py_lib")
+        add_subdirectory (util/py_lib)
+    endif ()
+endif ()
+
+if (NOT "${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE_LIBRARY")
+    message (STATUS "Configuring apps")
+    add_subdirectory (apps)
+endif ()
 
 # ===========================================================================
 # Register Libraries (for GUI project generators)
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
new file mode 100644
index 0000000..cf8ed2c
--- /dev/null
+++ b/CONTRIBUTING.rst
@@ -0,0 +1,20 @@
+
+Contributing to SeqAn
+=====================
+
+If you submit any issues or pull requests to SeqAn it implies that you have read this document and agreed to its terms so **read it carefully and completely**!
+
+Copyright
+---------
+
+SeqAn is an free and open source software library, released to the public under the terms described in the `license file <./COPYING.rst>`__, but to stay safe we require that all contributors `sign the contributor license agreement <https://www.clahub.com/agreements/seqan/seqan>`__. Really, it's just a few clicks.
+
+Without signing the agreement, you cannot create pull requests.
+
+
+Workflow, Code Style et cetera
+------------------------------
+
+Before you start coding, please read through the `Contributor Guide <http://seqan.readthedocs.io/en/master/Infrastructure/Contribute/index.html>`__ in our manual.
+
+It will make life easier for both you, the contributor, and our maintainers who review the code. Contributions that clearly indicate that you have not read the Contributor Guide will be closed without extensive review.
diff --git a/README.rst b/README.rst
index 4b44f2b..63ab10a 100644
--- a/README.rst
+++ b/README.rst
@@ -1,5 +1,5 @@
-.. image:: https://readthedocs.org/projects/seqan/badge/?version=develop
-   :target: https://seqan.readthedocs.org/en/develop?badge=develop
+.. image:: https://readthedocs.io/projects/seqan/badge/?version=develop
+   :target: https://seqan.readthedocs.io/en/develop?badge=develop
    :alt: Documentation Status
 
 SeqAn - The Library for Sequence Analysis
@@ -23,9 +23,12 @@ Prerequisites
 
 Linux, Mac OSX, FreeBSD:
   * GCC ≥ 4.9
-  * LLVM / Clang ≥ 3.5
+  * Clang/LLVM ≥ 3.5
+  * Intel Compiler ≥ 16.0.2
 Windows:
   * Visual C++ ≥ 14.0 / Visual Studio ≥ 2015
+  * Intel Compiler ≥ 16.0.3 / Visual Studio ≥ 2015u2
+  * Clang/C2 ≥ 3.8.0 / Visual Studio ≥ 2015u3 [experimental, requires CMake ≥ 3.6]
 
 We test on 32-bit and 64-bit Intel/AMD architectures, although we highly recommend 64-bit platforms.
 
@@ -37,13 +40,12 @@ Some of the official applications might have additional requirements or work onl
 Documentation Resources
 -----------------------
 
-* `Getting Started <http://seqan.readthedocs.org/en/master/Tutorial/GettingStarted.html>`_
-* `Manual <http://seqan.readthedocs.org/en/master>`_
-* `Tutorial <http://seqan.readthedocs.org/en/master/Tutorial.html>`_
-* `How-Tos <http://seqan.readthedocs.org/en/master/HowTo.html>`_
+* `Getting Started <http://seqan.readthedocs.io/en/master/Tutorial/GettingStarted>`_
+* `Manual <http://seqan.readthedocs.io/en/master>`_
+* `Tutorial <http://seqan.readthedocs.io/en/master/index.html#tutorials>`_
+* `How-Tos <http://seqan.readthedocs.io/en/master/Tutorial/HowTo>`_
 * `API Documentation (stable) <http://docs.seqan.de/seqan/master/>`_
 
-
 Contact
 =======
 
diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt
index 508523d..feba062 100644
--- a/apps/CMakeLists.txt
+++ b/apps/CMakeLists.txt
@@ -8,7 +8,6 @@
 
 cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps CXX)
-message (STATUS "Configuring apps")
 
 # Register all apps in core.  The apps will be built in SEQAN_RELEASE mode or
 # the apps called ${app} in APP:${app} mode.
diff --git a/apps/alf/CMakeLists.txt b/apps/alf/CMakeLists.txt
index ce12e4b..dd46ac5 100644
--- a/apps/alf/CMakeLists.txt
+++ b/apps/alf/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_alf CXX)
 message (STATUS "Configuring apps/alf")
 
-set (SEQAN_APP_VERSION "1.1.4")
+set (SEQAN_APP_VERSION "1.1.6")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/bs_tools/CMakeLists.txt b/apps/bs_tools/CMakeLists.txt
index 2cbccd5..1b9aa03 100644
--- a/apps/bs_tools/CMakeLists.txt
+++ b/apps/bs_tools/CMakeLists.txt
@@ -10,7 +10,12 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_bs_tools CXX)
 message (STATUS "Configuring apps/bs_tools")
 
-set (SEQAN_APP_VERSION "0.1.4")
+set (SEQAN_APP_VERSION "0.1.6")
+
+if ((${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") AND ("$ENV{MODEL}" STREQUAL "Nightly"))
+    message (STATUS "bs_tools skipped on FreeBSD because math.h rounding errors.")
+    return ()
+endif ()
 
 # ----------------------------------------------------------------------------
 # Dependencies
@@ -18,19 +23,14 @@ set (SEQAN_APP_VERSION "0.1.4")
 
 # Search SeqAn and select dependencies.
 find_package (ZLIB)
-find_package (SeqAn REQUIRED)
 find_package (Boost)
+find_package (SeqAn REQUIRED)
 
 if (NOT Boost_FOUND OR NOT ZLIB_FOUND)
     message (STATUS "  Boost or zlib not found: Not building bs_tools.")
     return ()
 endif (NOT Boost_FOUND OR NOT ZLIB_FOUND)
 
-if (MSVC)
-    message (STATUS "  Not building bs_tools under Visual Studio.")
-    return ()
-endif()
-
 # ----------------------------------------------------------------------------
 # Build Setup
 # ----------------------------------------------------------------------------
@@ -127,4 +127,3 @@ if (SEQAN_BUILD_SYSTEM STREQUAL "APP:bs_tools")
 
   seqan_configure_cpack_app (bs_tools "bs_tools")
 endif (SEQAN_BUILD_SYSTEM STREQUAL "APP:bs_tools")
-
diff --git a/apps/bs_tools/casbar.cpp b/apps/bs_tools/casbar.cpp
index 0b07fd3..8bc8294 100755
--- a/apps/bs_tools/casbar.cpp
+++ b/apps/bs_tools/casbar.cpp
@@ -47,7 +47,7 @@
 #include <seqan/bam_io.h>
 #include <seqan/parallel.h>
 
-//#ifdef PLATFORM_WINDOWS
+//#ifdef STDLIB_VS
 //#define SEQAN_DEFAULT_TMPDIR "C:\\TEMP\\"
 //#else
 //#define SEQAN_DEFAULT_TMPDIR "./"
@@ -959,6 +959,7 @@ int detectSNPs(SNPCallingOptions &options, TMethOptions &methOptions)
                 appendName(contigNamesCache(context(vcfFileOut)), fragmentStore1.contigNameStore[i]);
             writeRecord(vcfFileOut, vcfRecord);
         }
+        ClassTest::_deleteTempFile(ClassTest::_stripFileName(toCString(contigTempFileNamesVcf[i])));
         remove(toCString(contigTempFileNamesVcf[i]));  // Delete temp. files
 
         // BED
@@ -975,6 +976,7 @@ int detectSNPs(SNPCallingOptions &options, TMethOptions &methOptions)
             readRecord(bedRecord, bedFileIn);
             writeRecord(bedFileOut, bedRecord);
         }
+        ClassTest::_deleteTempFile(ClassTest::_stripFileName(toCString(contigTempFileNamesBed[i])));
         remove(toCString(contigTempFileNamesBed[i]));
     }
 
diff --git a/apps/bs_tools/tests/run_tests.py b/apps/bs_tools/tests/run_tests.py
index 4c65bd8..298a120 100644
--- a/apps/bs_tools/tests/run_tests.py
+++ b/apps/bs_tools/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for bs_tools.
 
 The golden test outputs are generated by the script generate_outputs.sh.
@@ -209,7 +209,7 @@ def main(source_base, binary_base):
     # ============================================================
     # 0
 
-    if not sys.platform.startswith('freebsd'):
+    if not (sys.platform.startswith('freebsd') or sys.platform.startswith('win')):
         conf = app_tests.TestConf(
             program=path_to_casbar,
             redir_stdout=ph.outFile('other.stdout'),
diff --git a/apps/dfi/CMakeLists.txt b/apps/dfi/CMakeLists.txt
index 89af268..28aca24 100644
--- a/apps/dfi/CMakeLists.txt
+++ b/apps/dfi/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_dfi CXX)
 message (STATUS "Configuring apps/dfi")
 
-set (SEQAN_APP_VERSION "2.1.4")
+set (SEQAN_APP_VERSION "2.1.6")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/dfi/tests/run_tests.py b/apps/dfi/tests/run_tests.py
index 6ac25e0..916cd65 100644
--- a/apps/dfi/tests/run_tests.py
+++ b/apps/dfi/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for the pair_align program.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/fiona/CMakeLists.txt b/apps/fiona/CMakeLists.txt
index f02eef4..7b1a457 100644
--- a/apps/fiona/CMakeLists.txt
+++ b/apps/fiona/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_fiona CXX)
 message (STATUS "Configuring apps/fiona")
 
-set (SEQAN_APP_VERSION "0.2.4")
+set (SEQAN_APP_VERSION "0.2.6")
 
 # ----------------------------------------------------------------------------
 # Dependencies
@@ -19,8 +19,8 @@ set (SEQAN_APP_VERSION "0.2.4")
 # Search SeqAn and select dependencies.
 find_package (OpenMP)
 find_package (ZLIB)
-find_package (SeqAn REQUIRED)
 find_package (Boost)
+find_package (SeqAn REQUIRED)
 
 # Stop here if we cannot find Boost or OpenMP.
 if (NOT Boost_FOUND OR NOT OPENMP_FOUND)
@@ -28,13 +28,14 @@ if (NOT Boost_FOUND OR NOT OPENMP_FOUND)
     return ()
 endif ()
 
-if (MSVC)
-    message (STATUS "  Not building fiona under Visual Studio.")
+if (NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
+    message (STATUS "  Not building fiona on 32bit architectures.")
     return ()
 endif()
 
-if (NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
-    message (STATUS "  Not building fiona on 32bit architectures.")
+# all windows compilers are currently broken with Fiona (in different ways)
+if (MSVC)
+    message (STATUS "  Not building fiona under Visual Studio.")
     return ()
 endif()
 
@@ -115,4 +116,3 @@ if (SEQAN_BUILD_SYSTEM STREQUAL "APP:fiona")
 
   seqan_configure_cpack_app (fiona "fiona")
 endif (SEQAN_BUILD_SYSTEM STREQUAL "APP:fiona")
-
diff --git a/apps/fiona/fiona.cpp b/apps/fiona/fiona.cpp
index 318fe4a..f22c423 100644
--- a/apps/fiona/fiona.cpp
+++ b/apps/fiona/fiona.cpp
@@ -81,9 +81,15 @@
     // Thus, we do not enable it in this case.
         #define _GLIBCXX_PARALLEL
     #endif  // #if !defined(__MINGW32__) || defined(__amd64__) || defined(__x86_64__) || defined(__ia64__)
+
+    #if defined(__INTEL_COMPILER)
+        #pragma message("The Intel Compiler crashes with _GLIBCXX_PARALLEL defined (at least until v16.0.2). Therefore, the feature will be disabled.")
+        #if __INTEL_COMPILER < 1600 || (__INTEL_COMPILER == 1600 && __INTEL_COMPILER_UPDATE <= 2)
+            #undef _GLIBCXX_PARALLEL
+        #endif
+    #endif // #if defined(__INTEL_COMPILER)
 #else
     #warning "Please enable OpenMP."
-    #define omp_get_wtime() 0
 #endif  // #ifdef _OPENMP
 
 // The q-gram length used for the q-gram index.  This has to be hard-coded as a precompiler definition since it is part
diff --git a/apps/fiona/tests/run_tests.py b/apps/fiona/tests/run_tests.py
index 8f746f4..98f5f65 100755
--- a/apps/fiona/tests/run_tests.py
+++ b/apps/fiona/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for the fiona program.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/fx_tools/CMakeLists.txt b/apps/fx_tools/CMakeLists.txt
index 51f4d01..b1dba00 100644
--- a/apps/fx_tools/CMakeLists.txt
+++ b/apps/fx_tools/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_fx_tools CXX)
 message (STATUS "Configuring apps/fx_tools")
 
-set (SEQAN_APP_VERSION "0.2.4")
+set (SEQAN_APP_VERSION "0.2.6")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/gustaf/CMakeLists.txt b/apps/gustaf/CMakeLists.txt
index 8ecf95a..ba8de50 100644
--- a/apps/gustaf/CMakeLists.txt
+++ b/apps/gustaf/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_gustaf CXX)
 message (STATUS "Configuring apps/gustaf")
 
-set (SEQAN_APP_VERSION "1.0.4")
+set (SEQAN_APP_VERSION "1.0.6")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/gustaf/msplazer_algorithms.h b/apps/gustaf/msplazer_algorithms.h
index 62383e4..163be9a 100644
--- a/apps/gustaf/msplazer_algorithms.h
+++ b/apps/gustaf/msplazer_algorithms.h
@@ -422,12 +422,10 @@ void _chainMatches(QueryMatches<StellarMatch<TSequence, TId> > & queryMatches,
                     // Compute breakpoint score
                     // The resulting score is the sum of the scores of both alignments. --> substract old match scores
                     // Note: old match scores are already distances, new score is a negative score bc. we use scoring sceme (0, -1, -1, -1)
-                    score = _splitAlignmentImpl(row(match1, 0), row(match1, 1), row(match2, 0), row(match2, 1),
-                                                minValue<int>(), maxValue<int>(),
-                                                scoreType);
-
-                    SEQAN_ASSERT_NEQ(score, maxValue<int>());
-                    score += (static_cast<int>(matchDistanceScores[m1]) + static_cast<int>(matchDistanceScores[m2]));
+                    auto tmp = _splitAlignmentImpl(row(match1, 0), row(match1, 1), row(match2, 0), row(match2, 1),
+                                                   scoreType, AlignConfig<false, false, true, true>());
+                    SEQAN_ASSERT_NEQ(std::get<0>(tmp) + std::get<1>(tmp), maxValue<int>());
+                    score = std::get<0>(tmp) + std::get<1>(tmp) + (static_cast<int>(matchDistanceScores[m1]) + static_cast<int>(matchDistanceScores[m2]));
                     splitPos = endPosition(row(match1, 0)) + stMatch1.begin2;
 
                     // Refine cargo by reducing distance by score, score is the number of edit errors avoided by the breakpoint/trimming
@@ -640,9 +638,9 @@ void _chainMatchesReference(QueryMatches<StellarMatch<TSequence, TId> > & queryM
                         // int lDiag = -10, uDiag = 10;
                         // score = splitAlignment(match1, match2, scoreType, lDiag, uDiag);
                         // score = splitAlignment(match1, match2, scoreType);
-                        score = _splitAlignmentImpl(row(match1, 0), row(match1, 1), row(match2, 0), row(match2, 1),
-                                                    minValue<int>(), maxValue<int>(),
-                                                    scoreType);
+                        auto tmp = _splitAlignmentImpl(row(match1, 0), row(match1, 1), row(match2, 0), row(match2, 1),
+                                                    scoreType, AlignConfig<false, false, true, true>());
+                        score = std::get<0>(tmp) + std::get<1>(tmp);
                         SEQAN_ASSERT_EQ(endPosition(row(match1, 0)), beginPosition(row(match2, 0)));
 
                         // Compute cargo, reduce distance by score
diff --git a/apps/gustaf/tests/run_tests.py b/apps/gustaf/tests/run_tests.py
index e88ac7e..edda05b 100755
--- a/apps/gustaf/tests/run_tests.py
+++ b/apps/gustaf/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for program gustaf.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/gustaf/tests/st1_l30.gff b/apps/gustaf/tests/st1_l30.gff
index 3dfadcf..8933471 100644
--- a/apps/gustaf/tests/st1_l30.gff
+++ b/apps/gustaf/tests/st1_l30.gff
@@ -1,6 +1,6 @@
 gi|9632547|ref|NC_002077.1|	GUSTAF	inversion	211	280	.	-	.	ID=0;endChr=gi|9632547|ref|NC_002077.1|;endPos=280;endStrand=+;support=1;supportIds=210-350_inversion_210-280_bp_71,;breakpoint=71
-gi|9632547|ref|NC_002077.1|	GUSTAF	deletion	422	490	.	+	.	ID=1;size=69;support=1;supportIds=420-560_deletion_420-490_bp_71,;breakpoint=71
+gi|9632547|ref|NC_002077.1|	GUSTAF	deletion	421	490	.	+	.	ID=1;size=70;support=1;supportIds=420-560_deletion_420-490_bp_71,;breakpoint=71
 gi|9632547|ref|NC_002077.1|	GUSTAF	insertion	910	910	.	+	.	ID=2;size=-70;seq=CTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTT;support=1;supportIds=insertion_840-1050_bp_71,;breakpoint=70
-gi|9632547|ref|NC_002077.1|	GUSTAF	deletion	1053	1120	.	+	.	ID=3;size=68;support=1;supportIds=980-1120_deletion_1050-1120_bp_71,;breakpoint=71
+gi|9632547|ref|NC_002077.1|	GUSTAF	deletion	1051	1120	.	+	.	ID=3;size=70;support=1;supportIds=980-1120_deletion_1050-1120_bp_71,;breakpoint=71
 gi|9632547|ref|NC_002077.1|	GUSTAF	deletion	1194	1262	.	+	.	ID=4;size=69;support=1;supportIds=1050-1190_deletion_1050-1120_1190-1260_bp_71,;breakpoint=71
 gi|9632547|ref|NC_002077.1|	GUSTAF	translocation	1469	1469	.	+	.	ID=5;middlePos=1820;endPos=1888;support=3;supportIds=1260-1470_translocation_1820-1890,1330-1400_bp_71_141,1778-1918_translocation_1820-1890,1330-1400_del-bp_32,;breakpoint=139
diff --git a/apps/gustaf/tests/st1_l30.vcf b/apps/gustaf/tests/st1_l30.vcf
index 928cac7..ee344d1 100644
--- a/apps/gustaf/tests/st1_l30.vcf
+++ b/apps/gustaf/tests/st1_l30.vcf
@@ -17,9 +17,9 @@
 ##contig=<ID=gi|1234567|,length=1148>
 #CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT
 gi|9632547|ref|NC_002077.1|	210	.	G	<INV>	.	PASS	SVTYPE=INV;END=280;SVLEN=70;BM=6;DP=1	.	1
-gi|9632547|ref|NC_002077.1|	421	.	G	<DEL>	.	PASS	SVTYPE=DEL;END=490;SVLEN=-69;BM=0;DP=1	.	1
+gi|9632547|ref|NC_002077.1|	420	.	G	<DEL>	.	PASS	SVTYPE=DEL;END=490;SVLEN=-70;BM=0;DP=1	.	1
 gi|9632547|ref|NC_002077.1|	909	.	A	<INS>	.	PASS	SVTYPE=INS;SVLEN=70;BM=1;DP=1	.	1
-gi|9632547|ref|NC_002077.1|	1052	.	A	<DEL>	.	PASS	SVTYPE=DEL;END=1120;SVLEN=-68;BM=2;DP=1	.	1
+gi|9632547|ref|NC_002077.1|	1050	.	A	<DEL>	.	PASS	SVTYPE=DEL;END=1120;SVLEN=-70;BM=2;DP=1	.	1
 gi|9632547|ref|NC_002077.1|	1193	.	C	<DEL>	.	PASS	SVTYPE=DEL;END=1262;SVLEN=-69;BM=3;DP=1	.	1
 gi|9632547|ref|NC_002077.1|	1468	BND_5_1	G	G[gi|9632547|ref|NC_002077.1|:1821[	.	PASS	SVTYPE=BND;EVENT=Trans5;BM=4;DP=3	.	1
 gi|9632547|ref|NC_002077.1|	1469	BND_5_2	G	]gi|9632547|ref|NC_002077.1|:1888]G	.	PASS	SVTYPE=BND;EVENT=Trans5;BM=4;DP=3	.	1
diff --git a/apps/gustaf/tests/st1_l30_gth3.gff b/apps/gustaf/tests/st1_l30_gth3.gff
index 5aa267e..952aad5 100644
--- a/apps/gustaf/tests/st1_l30_gth3.gff
+++ b/apps/gustaf/tests/st1_l30_gth3.gff
@@ -1,5 +1,5 @@
 gi|9632547|ref|NC_002077.1|	GUSTAF	inversion	211	280	.	-	.	ID=0;endChr=gi|9632547|ref|NC_002077.1|;endPos=280;endStrand=+;support=1;supportIds=210-350_inversion_210-280_bp_71,;breakpoint=71
-gi|9632547|ref|NC_002077.1|	GUSTAF	deletion	422	490	.	+	.	ID=1;size=69;support=1;supportIds=420-560_deletion_420-490_bp_71,;breakpoint=71
+gi|9632547|ref|NC_002077.1|	GUSTAF	deletion	421	490	.	+	.	ID=1;size=70;support=1;supportIds=420-560_deletion_420-490_bp_71,;breakpoint=71
 gi|9632547|ref|NC_002077.1|	GUSTAF	insertion	910	910	.	+	.	ID=2;size=-70;seq=CTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTT;support=1;supportIds=insertion_840-1050_bp_71,;breakpoint=70
-gi|9632547|ref|NC_002077.1|	GUSTAF	deletion	1053	1120	.	+	.	ID=3;size=68;support=1;supportIds=980-1120_deletion_1050-1120_bp_71,;breakpoint=71
+gi|9632547|ref|NC_002077.1|	GUSTAF	deletion	1051	1120	.	+	.	ID=3;size=70;support=1;supportIds=980-1120_deletion_1050-1120_bp_71,;breakpoint=71
 gi|9632547|ref|NC_002077.1|	GUSTAF	translocation	1469	1469	.	+	.	ID=4;middlePos=1820;endPos=1888;support=3;supportIds=1260-1470_translocation_1820-1890,1330-1400_bp_71_141,1778-1918_translocation_1820-1890,1330-1400_del-bp_32,;breakpoint=139
diff --git a/apps/gustaf/tests/st1_l30_gth3.vcf b/apps/gustaf/tests/st1_l30_gth3.vcf
index 8dac985..58da1b2 100644
--- a/apps/gustaf/tests/st1_l30_gth3.vcf
+++ b/apps/gustaf/tests/st1_l30_gth3.vcf
@@ -17,9 +17,9 @@
 ##contig=<ID=gi|1234567|,length=1148>
 #CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT
 gi|9632547|ref|NC_002077.1|	210	.	G	<INV>	.	PASS	SVTYPE=INV;END=280;SVLEN=70;BM=5;DP=1	.	1
-gi|9632547|ref|NC_002077.1|	421	.	G	<DEL>	.	PASS	SVTYPE=DEL;END=490;SVLEN=-69;BM=0;DP=1	.	1
+gi|9632547|ref|NC_002077.1|	420	.	G	<DEL>	.	PASS	SVTYPE=DEL;END=490;SVLEN=-70;BM=0;DP=1	.	1
 gi|9632547|ref|NC_002077.1|	909	.	A	<INS>	.	PASS	SVTYPE=INS;SVLEN=70;BM=1;DP=1	.	1
-gi|9632547|ref|NC_002077.1|	1052	.	A	<DEL>	.	PASS	SVTYPE=DEL;END=1120;SVLEN=-68;BM=2;DP=1	.	1
+gi|9632547|ref|NC_002077.1|	1050	.	A	<DEL>	.	PASS	SVTYPE=DEL;END=1120;SVLEN=-70;BM=2;DP=1	.	1
 gi|9632547|ref|NC_002077.1|	1468	BND_4_1	G	G[gi|9632547|ref|NC_002077.1|:1821[	.	PASS	SVTYPE=BND;EVENT=Trans4;BM=3;DP=3	.	1
 gi|9632547|ref|NC_002077.1|	1469	BND_4_2	G	]gi|9632547|ref|NC_002077.1|:1888]G	.	PASS	SVTYPE=BND;EVENT=Trans4;BM=3;DP=3	.	1
 gi|9632547|ref|NC_002077.1|	1820	BND_4_3	G	G[gi|9632547|ref|NC_002077.1|:1889[	.	PASS	SVTYPE=BND;EVENT=Trans4;BM=3;DP=3	.	1
diff --git a/apps/gustaf/tests/st1_l30_ith5.gff b/apps/gustaf/tests/st1_l30_ith5.gff
index 0cb8fee..bc5ec23 100644
--- a/apps/gustaf/tests/st1_l30_ith5.gff
+++ b/apps/gustaf/tests/st1_l30_ith5.gff
@@ -1,5 +1,5 @@
 gi|9632547|ref|NC_002077.1|	GUSTAF	inversion	211	280	.	-	.	ID=0;endChr=gi|9632547|ref|NC_002077.1|;endPos=280;endStrand=+;support=1;supportIds=210-350_inversion_210-280_bp_71,;breakpoint=71
-gi|9632547|ref|NC_002077.1|	GUSTAF	deletion	422	490	.	+	.	ID=1;size=69;support=1;supportIds=420-560_deletion_420-490_bp_71,;breakpoint=71
+gi|9632547|ref|NC_002077.1|	GUSTAF	deletion	421	490	.	+	.	ID=1;size=70;support=1;supportIds=420-560_deletion_420-490_bp_71,;breakpoint=71
 gi|9632547|ref|NC_002077.1|	GUSTAF	insertion	910	910	.	+	.	ID=2;size=-70;seq=CTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTT;support=1;supportIds=insertion_840-1050_bp_71,;breakpoint=70
 gi|9632547|ref|NC_002077.1|	GUSTAF	deletion	1194	1262	.	+	.	ID=3;size=69;support=1;supportIds=1050-1190_deletion_1050-1120_1190-1260_bp_71,;breakpoint=71
 gi|9632547|ref|NC_002077.1|	GUSTAF	translocation	1469	1469	.	+	.	ID=4;middlePos=1820;endPos=1888;support=3;supportIds=1260-1470_translocation_1820-1890,1330-1400_bp_71_141,1778-1918_translocation_1820-1890,1330-1400_del-bp_32,;breakpoint=139
diff --git a/apps/gustaf/tests/st1_l30_ith5.vcf b/apps/gustaf/tests/st1_l30_ith5.vcf
index 7bc3763..dcfaf58 100644
--- a/apps/gustaf/tests/st1_l30_ith5.vcf
+++ b/apps/gustaf/tests/st1_l30_ith5.vcf
@@ -17,7 +17,7 @@
 ##contig=<ID=gi|1234567|,length=1148>
 #CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT
 gi|9632547|ref|NC_002077.1|	210	.	G	<INV>	.	PASS	SVTYPE=INV;END=280;SVLEN=70;BM=5;DP=1	.	1
-gi|9632547|ref|NC_002077.1|	421	.	G	<DEL>	.	PASS	SVTYPE=DEL;END=490;SVLEN=-69;BM=0;DP=1	.	1
+gi|9632547|ref|NC_002077.1|	420	.	G	<DEL>	.	PASS	SVTYPE=DEL;END=490;SVLEN=-70;BM=0;DP=1	.	1
 gi|9632547|ref|NC_002077.1|	909	.	A	<INS>	.	PASS	SVTYPE=INS;SVLEN=70;BM=1;DP=1	.	1
 gi|9632547|ref|NC_002077.1|	1193	.	C	<DEL>	.	PASS	SVTYPE=DEL;END=1262;SVLEN=-69;BM=2;DP=1	.	1
 gi|9632547|ref|NC_002077.1|	1468	BND_4_1	G	G[gi|9632547|ref|NC_002077.1|:1821[	.	PASS	SVTYPE=BND;EVENT=Trans4;BM=3;DP=3	.	1
diff --git a/apps/gustaf/tests/st1_l30_m.gff b/apps/gustaf/tests/st1_l30_m.gff
index 3dfadcf..8933471 100644
--- a/apps/gustaf/tests/st1_l30_m.gff
+++ b/apps/gustaf/tests/st1_l30_m.gff
@@ -1,6 +1,6 @@
 gi|9632547|ref|NC_002077.1|	GUSTAF	inversion	211	280	.	-	.	ID=0;endChr=gi|9632547|ref|NC_002077.1|;endPos=280;endStrand=+;support=1;supportIds=210-350_inversion_210-280_bp_71,;breakpoint=71
-gi|9632547|ref|NC_002077.1|	GUSTAF	deletion	422	490	.	+	.	ID=1;size=69;support=1;supportIds=420-560_deletion_420-490_bp_71,;breakpoint=71
+gi|9632547|ref|NC_002077.1|	GUSTAF	deletion	421	490	.	+	.	ID=1;size=70;support=1;supportIds=420-560_deletion_420-490_bp_71,;breakpoint=71
 gi|9632547|ref|NC_002077.1|	GUSTAF	insertion	910	910	.	+	.	ID=2;size=-70;seq=CTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTTCCCTTT;support=1;supportIds=insertion_840-1050_bp_71,;breakpoint=70
-gi|9632547|ref|NC_002077.1|	GUSTAF	deletion	1053	1120	.	+	.	ID=3;size=68;support=1;supportIds=980-1120_deletion_1050-1120_bp_71,;breakpoint=71
+gi|9632547|ref|NC_002077.1|	GUSTAF	deletion	1051	1120	.	+	.	ID=3;size=70;support=1;supportIds=980-1120_deletion_1050-1120_bp_71,;breakpoint=71
 gi|9632547|ref|NC_002077.1|	GUSTAF	deletion	1194	1262	.	+	.	ID=4;size=69;support=1;supportIds=1050-1190_deletion_1050-1120_1190-1260_bp_71,;breakpoint=71
 gi|9632547|ref|NC_002077.1|	GUSTAF	translocation	1469	1469	.	+	.	ID=5;middlePos=1820;endPos=1888;support=3;supportIds=1260-1470_translocation_1820-1890,1330-1400_bp_71_141,1778-1918_translocation_1820-1890,1330-1400_del-bp_32,;breakpoint=139
diff --git a/apps/gustaf/tests/st1_l30_m.vcf b/apps/gustaf/tests/st1_l30_m.vcf
index 928cac7..ee344d1 100644
--- a/apps/gustaf/tests/st1_l30_m.vcf
+++ b/apps/gustaf/tests/st1_l30_m.vcf
@@ -17,9 +17,9 @@
 ##contig=<ID=gi|1234567|,length=1148>
 #CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT
 gi|9632547|ref|NC_002077.1|	210	.	G	<INV>	.	PASS	SVTYPE=INV;END=280;SVLEN=70;BM=6;DP=1	.	1
-gi|9632547|ref|NC_002077.1|	421	.	G	<DEL>	.	PASS	SVTYPE=DEL;END=490;SVLEN=-69;BM=0;DP=1	.	1
+gi|9632547|ref|NC_002077.1|	420	.	G	<DEL>	.	PASS	SVTYPE=DEL;END=490;SVLEN=-70;BM=0;DP=1	.	1
 gi|9632547|ref|NC_002077.1|	909	.	A	<INS>	.	PASS	SVTYPE=INS;SVLEN=70;BM=1;DP=1	.	1
-gi|9632547|ref|NC_002077.1|	1052	.	A	<DEL>	.	PASS	SVTYPE=DEL;END=1120;SVLEN=-68;BM=2;DP=1	.	1
+gi|9632547|ref|NC_002077.1|	1050	.	A	<DEL>	.	PASS	SVTYPE=DEL;END=1120;SVLEN=-70;BM=2;DP=1	.	1
 gi|9632547|ref|NC_002077.1|	1193	.	C	<DEL>	.	PASS	SVTYPE=DEL;END=1262;SVLEN=-69;BM=3;DP=1	.	1
 gi|9632547|ref|NC_002077.1|	1468	BND_5_1	G	G[gi|9632547|ref|NC_002077.1|:1821[	.	PASS	SVTYPE=BND;EVENT=Trans5;BM=4;DP=3	.	1
 gi|9632547|ref|NC_002077.1|	1469	BND_5_2	G	]gi|9632547|ref|NC_002077.1|:1888]G	.	PASS	SVTYPE=BND;EVENT=Trans5;BM=4;DP=3	.	1
diff --git a/apps/insegt/CMakeLists.txt b/apps/insegt/CMakeLists.txt
index ebb2a5a..c121b5d 100644
--- a/apps/insegt/CMakeLists.txt
+++ b/apps/insegt/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_insegt CXX)
 message (STATUS "Configuring apps/insegt")
 
-set (SEQAN_APP_VERSION "1.1.4")
+set (SEQAN_APP_VERSION "1.1.6")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/insegt/LICENSE b/apps/insegt/LICENSE
index 87bda28..8983afe 100644
--- a/apps/insegt/LICENSE
+++ b/apps/insegt/LICENSE
@@ -1 +1,26 @@
-INSEGT
+Copyright (c) 2006-2016, Knut Reinert, FU Berlin
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of Knut Reinert or the FU Berlin nor the names of
+      its contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
diff --git a/apps/insegt/tests/run_tests.py b/apps/insegt/tests/run_tests.py
index 811d741..8f51b73 100755
--- a/apps/insegt/tests/run_tests.py
+++ b/apps/insegt/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for insegt.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/mason2/CMakeLists.txt b/apps/mason2/CMakeLists.txt
index 239c39b..a2f93ad 100644
--- a/apps/mason2/CMakeLists.txt
+++ b/apps/mason2/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_mason2 CXX)
 message (STATUS "Configuring apps/mason2")
 
-set (SEQAN_APP_VERSION "2.0.3")
+set (SEQAN_APP_VERSION "2.0.5")
 
 # ----------------------------------------------------------------------------
 # Dependencies
@@ -26,11 +26,6 @@ if (NOT ZLIB_FOUND)
   return ()
 endif (NOT ZLIB_FOUND)
 
-if (MSVC)
-  message (STATUS "  Not building MASON2 under Visual Studio.")
-  return ()
-endif()
-
 # Enable C++11 in GCC and/or CLANG.
 #if (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG)
 #    add_definitions ("-std=c++0x")
diff --git a/apps/mason2/external_split_merge.cpp b/apps/mason2/external_split_merge.cpp
index bf0426a..6d9314d 100644
--- a/apps/mason2/external_split_merge.cpp
+++ b/apps/mason2/external_split_merge.cpp
@@ -43,7 +43,7 @@ void IdSplitter::open()
     close();
     for (unsigned i = 0; i < numContigs; ++i)
     {
-#if defined(PLATFORM_WINDOWS)
+#if defined(STDLIB_VS)
         char fileNameBuffer[1000];
         char filePathBuffer[1000];
         //  Gets the temp path env string (no guarantee it's a valid path).
@@ -123,9 +123,9 @@ void IdSplitter::close()
         if (files[i])
         {
             delete files[i];
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
             DeleteFile(fileNames[i].c_str());
-#endif  // #ifdef PLATFORM_WINDOWS
+#endif  // #ifdef STDLIB_VS
             files[i] = 0;
         }
     files.clear();
diff --git a/apps/mason2/tests/run_tests.py b/apps/mason2/tests/run_tests.py
index d2332df..b04e1ad 100644
--- a/apps/mason2/tests/run_tests.py
+++ b/apps/mason2/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for the mason_variator program.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/mason2/vcf_materialization.cpp b/apps/mason2/vcf_materialization.cpp
index 0903ba5..6e3dc5f 100644
--- a/apps/mason2/vcf_materialization.cpp
+++ b/apps/mason2/vcf_materialization.cpp
@@ -205,12 +205,12 @@ void VcfMaterializer::init()
     {
         if (!open(methFaiIndex, toCString(methFastaFileName)))
         {
-            if (!build(faiIndex, toCString(methFastaFileName)))
+            if (!build(methFaiIndex, toCString(methFastaFileName)))
                 throw MasonIOException("Could not build methylation levels FAI index.");
 
             seqan::CharString faiPath = methFastaFileName;
             append(faiPath, ".fai");
-            if (!save(faiIndex, toCString(faiPath)))
+            if (!save(methFaiIndex, toCString(faiPath)))
                 throw MasonIOException("Could not write methylation levels FAI index.");
         }
     }
diff --git a/apps/micro_razers/CMakeLists.txt b/apps/micro_razers/CMakeLists.txt
index fee109a..2bfe6de 100644
--- a/apps/micro_razers/CMakeLists.txt
+++ b/apps/micro_razers/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_micro_razers CXX)
 message (STATUS "Configuring apps/micro_razers")
 
-set (SEQAN_APP_VERSION "1.0.5")
+set (SEQAN_APP_VERSION "1.0.7")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/micro_razers/micro_razers.cpp b/apps/micro_razers/micro_razers.cpp
index ef84105..439bae4 100644
--- a/apps/micro_razers/micro_razers.cpp
+++ b/apps/micro_razers/micro_razers.cpp
@@ -28,7 +28,7 @@
 #define RAZERS_EXTENDED_MATCH
 
 #include "seqan/platform.h"
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     #define SEQAN_DEFAULT_TMPDIR "C:\\TEMP\\"
 #else
     #define SEQAN_DEFAULT_TMPDIR "./"
diff --git a/apps/micro_razers/tests/run_tests.py b/apps/micro_razers/tests/run_tests.py
index 51cc92f..71d5e99 100755
--- a/apps/micro_razers/tests/run_tests.py
+++ b/apps/micro_razers/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for micro_razers.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/ngs_roi/CMakeLists.txt b/apps/ngs_roi/CMakeLists.txt
index 89268a4..1c35b9c 100644
--- a/apps/ngs_roi/CMakeLists.txt
+++ b/apps/ngs_roi/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_ngs_roi CXX)
 message (STATUS "Configuring apps/ngs_roi")
 
-set (SEQAN_APP_VERSION "0.2.6")
+set (SEQAN_APP_VERSION "0.2.8")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/ngs_roi/tests/run_tests.py b/apps/ngs_roi/tests/run_tests.py
index 758d1ab..d494674 100644
--- a/apps/ngs_roi/tests/run_tests.py
+++ b/apps/ngs_roi/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for the roi_intersect program.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/ngs_roi/tool_shed/ctd2galaxy.py b/apps/ngs_roi/tool_shed/ctd2galaxy.py
index fb92c5b..0ae5f3d 100755
--- a/apps/ngs_roi/tool_shed/ctd2galaxy.py
+++ b/apps/ngs_roi/tool_shed/ctd2galaxy.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Conversion of the CTD format into Galaxy XML.
 
 The CTD parser should be reusable but is not in its own module since it is
diff --git a/apps/ngs_roi/tool_shed/ngs_roi/app.py b/apps/ngs_roi/tool_shed/ngs_roi/app.py
index 8bc27f4..aba8b96 100644
--- a/apps/ngs_roi/tool_shed/ngs_roi/app.py
+++ b/apps/ngs_roi/tool_shed/ngs_roi/app.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Support code for writing the NGS ROI report generation apps."""
 
 __author__    = 'Manuel Holtgrewe <manuel.holtgrewe at fu-berlin.de>'
diff --git a/apps/ngs_roi/tool_shed/ngs_roi/argparse.py b/apps/ngs_roi/tool_shed/ngs_roi/argparse.py
index d1bae8c..d4cfac3 100644
--- a/apps/ngs_roi/tool_shed/ngs_roi/argparse.py
+++ b/apps/ngs_roi/tool_shed/ngs_roi/argparse.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Helper for ROI tools when using argparse module.
 
 This module contains helper functions for setup of argparse.ArgumentParser
diff --git a/apps/ngs_roi/tool_shed/ngs_roi/io.py b/apps/ngs_roi/tool_shed/ngs_roi/io.py
index b362658..f6983ef 100644
--- a/apps/ngs_roi/tool_shed/ngs_roi/io.py
+++ b/apps/ngs_roi/tool_shed/ngs_roi/io.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Input / Output Routines for ROI files.
 
 You can load the records sequentially one by one by iterating over a
diff --git a/apps/ngs_roi/tool_shed/roi_details.py b/apps/ngs_roi/tool_shed/roi_details.py
index 106d5b3..6cee677 100755
--- a/apps/ngs_roi/tool_shed/roi_details.py
+++ b/apps/ngs_roi/tool_shed/roi_details.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Generation of detailed ROI reports with larger plots.
 
 This report generation works for hundred of ROIs.
diff --git a/apps/ngs_roi/tool_shed/roi_plot_thumbnails.py b/apps/ngs_roi/tool_shed/roi_plot_thumbnails.py
index b798487..3038dec 100755
--- a/apps/ngs_roi/tool_shed/roi_plot_thumbnails.py
+++ b/apps/ngs_roi/tool_shed/roi_plot_thumbnails.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Thumbnail Plot Generator.
 
 This report generator uses the binary roi_plot_thumbnails (C++ program, must
diff --git a/apps/ngs_roi/tool_shed/roi_report.py b/apps/ngs_roi/tool_shed/roi_report.py
index 507a8e8..e507c1a 100755
--- a/apps/ngs_roi/tool_shed/roi_report.py
+++ b/apps/ngs_roi/tool_shed/roi_report.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Create ROI overview report.
 
 This report consists of plots of all metrics (y: metric, x: rank of value).
diff --git a/apps/ngs_roi/tool_shed/roi_table.py b/apps/ngs_roi/tool_shed/roi_table.py
index 1bb0362..c3925b1 100755
--- a/apps/ngs_roi/tool_shed/roi_table.py
+++ b/apps/ngs_roi/tool_shed/roi_table.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """ROI Table Generator
 
 Generates a HTML page with a table of ROI record details.  Besides showing the
diff --git a/apps/ngs_roi/tool_shed/rois.py b/apps/ngs_roi/tool_shed/rois.py
index dac8721..00b12da 100644
--- a/apps/ngs_roi/tool_shed/rois.py
+++ b/apps/ngs_roi/tool_shed/rois.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 
 class RoiRecord(object):
     """Represent one record in a ROI file."""
diff --git a/apps/pair_align/CMakeLists.txt b/apps/pair_align/CMakeLists.txt
index a70f39d..2a8d343 100644
--- a/apps/pair_align/CMakeLists.txt
+++ b/apps/pair_align/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_pair_align CXX)
 message (STATUS "Configuring apps/pair_align")
 
-set (SEQAN_APP_VERSION "1.3.2")
+set (SEQAN_APP_VERSION "1.3.4")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/pair_align/lib/CMakeLists.txt b/apps/pair_align/lib/CMakeLists.txt
index d787069..75faef7 100644
--- a/apps/pair_align/lib/CMakeLists.txt
+++ b/apps/pair_align/lib/CMakeLists.txt
@@ -11,12 +11,12 @@
 # ---------------------------------------------------------------------------
 
 # Add library for lcs and local option.
-add_library(pair_align_lcs STATIC pair_align_lcs.cpp)
-add_library(pair_align_local STATIC pair_align_local.cpp)
+add_library(pair_align_lcs OBJECT pair_align_lcs.cpp)
+add_library(pair_align_local OBJECT pair_align_local.cpp)
 
 # Add lcs and local target names to the lib target list.
-set(LIB_TARGETS pair_align_lcs)
-list(APPEND LIB_TARGETS pair_align_local)
+set(LIB_TARGETS "$<TARGET_OBJECTS:pair_align_lcs>")
+list(APPEND LIB_TARGETS "$<TARGET_OBJECTS:pair_align_local>")
 
 # Add library for global options. 
 # For every combination of AlignConfig flags there is a separate library, which 
@@ -32,7 +32,7 @@ foreach(GAPS_T ${FLAG_VALUES})
 				# Build library from source -> Note: STATIC could be replaced with OBJECT only building 
 				# the object files not linking them into a lirary. However this feature
 				# is shipped with cmake 2.8.8, which is not supported at the moment.
-				add_library(${TARGET} STATIC pair_align_global.cpp)
+                add_library(${TARGET} OBJECT pair_align_global.cpp)
 
 				# Add properties for the four free-gap options.
 				set_target_properties (${TARGET} PROPERTIES COMPILE_DEFINITIONS "SUFFIX_GAP_TOP=${GAPS_T}")
@@ -41,7 +41,7 @@ foreach(GAPS_T ${FLAG_VALUES})
 				set_property (TARGET ${TARGET} APPEND PROPERTY COMPILE_DEFINITIONS "SUFFIX_GAP_BOTTOM=${GAPS_B}")
 				
 				# Add target name to lib targets.
-				list(APPEND LIB_TARGETS ${TARGET})
+                list(APPEND LIB_TARGETS "$<TARGET_OBJECTS:${TARGET}>")
 			endforeach(GAPS_B)
 		endforeach(GAPS_R)
 	endforeach(GAPS_L)
@@ -51,10 +51,7 @@ endforeach(GAPS_T)
 # Build static library linking all the object libraries.
 # ---------------------------------------------------------------------------
 
-add_library(pair_align_lib pair_align_lib.cpp pair_align_lib.h)
-target_link_libraries(pair_align_lib ${LIB_TARGETS} ${SEQAN_LIBRARIES})
-
 # This part can be used instead for cmake version greater or equal to 2.8.8. 
 # This requires to update the script above as well.
-## add_library(pair_align_lib pair_align_lib.cpp pair_align_lib.h ${OBJECT_REF})
-## target_link_libraries(pair_align_lib ${SEQAN_LIBRARIES})
+add_library(pair_align_lib pair_align_lib.cpp pair_align_lib.h ${LIB_TARGETS})
+target_link_libraries(pair_align_lib ${SEQAN_LIBRARIES})
diff --git a/apps/pair_align/tests/run_tests.py b/apps/pair_align/tests/run_tests.py
index 59eae54..6f5b134 100755
--- a/apps/pair_align/tests/run_tests.py
+++ b/apps/pair_align/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for the pair_align program.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/param_chooser/CMakeLists.txt b/apps/param_chooser/CMakeLists.txt
index 101707f..8172966 100644
--- a/apps/param_chooser/CMakeLists.txt
+++ b/apps/param_chooser/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_param_chooser CXX)
 message (STATUS "Configuring apps/param_chooser")
 
-set (SEQAN_APP_VERSION "0.0.3")
+set (SEQAN_APP_VERSION "0.0.5")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/rabema/CMakeLists.txt b/apps/rabema/CMakeLists.txt
index 12ea399..b329515 100644
--- a/apps/rabema/CMakeLists.txt
+++ b/apps/rabema/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_rabema CXX)
 message (STATUS "Configuring apps/rabema")
 
-set (SEQAN_APP_VERSION "1.2.4")
+set (SEQAN_APP_VERSION "1.2.6")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/rabema/rabema_stats.h b/apps/rabema/rabema_stats.h
index 17c74f5..b8d1737 100644
--- a/apps/rabema/rabema_stats.h
+++ b/apps/rabema/rabema_stats.h
@@ -151,7 +151,7 @@ void write(TStream & stream, RabemaStats const & stats, /*int maxError,*/ seqan:
     stream << "Found Intervals By Error Rate\n"
            << "\n";
     char buffer[1000];
-    sprintf(buffer, "  ERR\t%8s\t%8s\t%8s\t%8s\t%10s\t%10s\n", "#max", "#found", "%found", "norm max", "norm found", "norm found [%]");
+    snprintf(buffer, 1000, "  ERR\t%8s\t%8s\t%8s\t%8s\t%10s\t%10s\n", "#max", "#found", "%found", "norm max", "norm found", "norm found [%]");
     stream << buffer
            << "------------------------------------------------------------------------------------------------------\n";
     for (unsigned i = 0; i < length(stats.intervalsToFindForErrorRate); ++i)
@@ -164,7 +164,7 @@ void write(TStream & stream, RabemaStats const & stats, /*int maxError,*/ seqan:
         double percFoundNormalizedIntervals = 100.0 * stats.normalizedIntervalsFoundForErrorRate[i] / stats.normalizedIntervalsToFindForErrorRate[i];
         if (stats.normalizedIntervalsToFindForErrorRate[i] == 0)
             percFoundNormalizedIntervals = 0;
-        sprintf(buffer, "%5u\t%8d\t%8d\t%8.2f\t%8.2f\t%10.2f\t%10.2f\n", i, stats.intervalsToFindForErrorRate[i], stats.intervalsFoundForErrorRate[i],
+        snprintf(buffer, 1000,"%5u\t%8d\t%8d\t%8.2f\t%8.2f\t%10.2f\t%10.2f\n", i, stats.intervalsToFindForErrorRate[i], stats.intervalsFoundForErrorRate[i],
                 percFoundIntervals, stats.normalizedIntervalsToFindForErrorRate[i], stats.normalizedIntervalsFoundForErrorRate[i],
                 percFoundNormalizedIntervals);
         stream << buffer;
@@ -217,7 +217,7 @@ int write(TStream & stream, RabemaStats const & stats, int maxError, CharString
         double percFoundNormalizedIntervals = 100.0 * stats.normalizedIntervalsFoundForErrorRate[i] / stats.normalizedIntervalsToFindForErrorRate[i];
         if (stats.normalizedIntervalsToFindForErrorRate[i] == 0)
             percFoundNormalizedIntervals = 0;
-        sprintf(buffer, "%u\t%d\t%d\t%.2f\t%.2f\t%1.2f\t%.2f\n", i, stats.intervalsToFindForErrorRate[i], stats.intervalsFoundForErrorRate[i],
+        snprintf(buffer, 1000, "%u\t%d\t%d\t%.2f\t%.2f\t%1.2f\t%.2f\n", i, stats.intervalsToFindForErrorRate[i], stats.intervalsFoundForErrorRate[i],
                 percFoundIntervals, stats.normalizedIntervalsToFindForErrorRate[i], stats.normalizedIntervalsFoundForErrorRate[i],
                 percFoundNormalizedIntervals);
         stream << buffer;
diff --git a/apps/rabema/tests/run_tests.py b/apps/rabema/tests/run_tests.py
index 7f7195a..d6ec5aa 100644
--- a/apps/rabema/tests/run_tests.py
+++ b/apps/rabema/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for rabema.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/razers/CMakeLists.txt b/apps/razers/CMakeLists.txt
index d733140..aafa2d0 100644
--- a/apps/razers/CMakeLists.txt
+++ b/apps/razers/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_razers CXX)
 message (STATUS "Configuring apps/razers")
 
-set (SEQAN_APP_VERSION "1.5.2")
+set (SEQAN_APP_VERSION "1.5.4")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/razers/gapped_params/dat2cpp.py b/apps/razers/gapped_params/dat2cpp.py
index a503afa..f46cd29 100755
--- a/apps/razers/gapped_params/dat2cpp.py
+++ b/apps/razers/gapped_params/dat2cpp.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Convert RazerS gapped params .dat file to C++ fragment."""
 
 USAGE = 'dat2cpp.py INPUT.dat'
diff --git a/apps/razers/razers.cpp b/apps/razers/razers.cpp
index 6865859..b8e2f17 100644
--- a/apps/razers/razers.cpp
+++ b/apps/razers/razers.cpp
@@ -40,7 +40,7 @@
 #include <cctype>
 
 #include <seqan/platform.h>
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     #define SEQAN_DEFAULT_TMPDIR "C:\\TEMP\\"
 #else
     #define SEQAN_DEFAULT_TMPDIR "./"
@@ -435,7 +435,7 @@ extractOptions(
     {
         if (back(pm_options.paramFolder) != '/' && back(pm_options.paramFolder) != '\\')
         {
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
             appendValue(pm_options.paramFolder, '\\');
 #else
             appendValue(pm_options.paramFolder, '/');
diff --git a/apps/razers/tests/run_tests.py b/apps/razers/tests/run_tests.py
index 1499634..6fd2cb8 100644
--- a/apps/razers/tests/run_tests.py
+++ b/apps/razers/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for the pair_align program.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/razers3/CMakeLists.txt b/apps/razers3/CMakeLists.txt
index ebbf249..bcb8e32 100644
--- a/apps/razers3/CMakeLists.txt
+++ b/apps/razers3/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_razers3 CXX)
 message (STATUS "Configuring apps/razers3")
 
-set (SEQAN_APP_VERSION "3.5.2")
+set (SEQAN_APP_VERSION "3.5.4")
 
 # ----------------------------------------------------------------------------
 # Dependencies
@@ -106,12 +106,8 @@ install (FILES example/genome.fa
 # App Test
 # ----------------------------------------------------------------------------
 
-# The parallel code paths are only available when compiling with OpenMP.
-if (OpenMP_FLAG_DETECTED)
-  seqan_add_app_test (razers3)
-endif (OpenMP_FLAG_DETECTED)
-
-# However, the sequential tests are always executed.
+# Both tests are always executed; without OpenMP the first one is serial, too
+seqan_add_app_test (razers3)
 seqan_add_app_test (razers3 _sequential)
 
 # ----------------------------------------------------------------------------
diff --git a/apps/razers3/outputFormat.h b/apps/razers3/outputFormat.h
index 67f30df..8761cc4 100644
--- a/apps/razers3/outputFormat.h
+++ b/apps/razers3/outputFormat.h
@@ -693,7 +693,7 @@ int dumpMatches(
                 case 1:
                     append(line, readName);
                     appendValue(line, '#');
-                    sprintf(intBuf, "%09u", ar.readId + 1);
+                    snprintf(intBuf, 40, "%09u", ar.readId + 1);
                     append(line, intBuf);
                     //file.fill('0');
                     //file << readName << '#' << std::setw(pzeros) << ar.readId + 1;
@@ -728,7 +728,7 @@ int dumpMatches(
                     TContigFile & contigFile = store.contigFileStore[contig.fileId];
                     append(line, contigFile.fileName);
                     appendValue(line, '#');
-                    sprintf(intBuf, "%09u", ar.contigId - contigFile.firstContigId + 1);
+                    snprintf(intBuf, 40, "%09u", ar.contigId - contigFile.firstContigId + 1);
                     append(line, intBuf);
                     //strstrm.fill('0');
                     //strstrm << contigFile.fileName << '#' << std::setw(gzeros) << (ar.contigId - contigFile.firstContigId + 1);
@@ -745,7 +745,7 @@ int dumpMatches(
                 else
                     appendNumber(line, ar.beginPos);
                 appendValue(line, _sep_);
-                sprintf(intBuf, "%.5g", percId);
+                snprintf(intBuf, 40, "%.5g", percId);
                 append(line, intBuf);
                 //if (ar.beginPos < ar.endPos)
                 //	file << _sep_ << (ar.beginPos + options.positionFormat) << _sep_ << ar.endPos << _sep_ << std::setprecision(5) << percId;
diff --git a/apps/razers3/parallel_store.h b/apps/razers3/parallel_store.h
index bb84e0f..de5cdb1 100755
--- a/apps/razers3/parallel_store.h
+++ b/apps/razers3/parallel_store.h
@@ -1,19 +1,19 @@
 #ifndef APPS_RAZERS_PARALLEL_STORE_H
 #define APPS_RAZERS_PARALLEL_STORE_H
 
-#if defined(PLATFORM_GNU)
+#if defined(COMPILER_GCC) && defined(_OPENMP)
 #include <parallel/algorithm>
 #include <parallel/numeric>
 #else
 #include <algorithm>
 #include <numeric>
-#endif  // #ifdef PLATFORM_GNU
+#endif  // #ifdef COMPILER_GCC
 
 #include <seqan/parallel.h>
 
 namespace seqan {
 
-#if defined(PLATFORM_GNU)
+#if defined(COMPILER_GCC) && defined(_OPENMP)
 
 // use MCSTL which is part of the GCC since version 4.3
 
@@ -47,7 +47,7 @@ partialSum(TIntString & intString)
         begin(intString, Standard()));
 }
 
-#else  // #ifdef PLATFORM_GNU
+#else  // #ifdef COMPILER_GCC
 
 // sequential fallback
 
@@ -75,7 +75,7 @@ partialSum(TIntString & intString)
         begin(intString, Standard()));
 }
 
-#endif  // #ifdef PLATFORM_GNU
+#endif  // #ifdef COMPILER_GCC
 
 }
 
diff --git a/apps/razers3/paramChooser.h b/apps/razers3/paramChooser.h
index 0f58930..de3a173 100644
--- a/apps/razers3/paramChooser.h
+++ b/apps/razers3/paramChooser.h
@@ -102,7 +102,8 @@ struct ParamChooserOptions
         // global input parameters
         totalN = 32;                // sequence length
         totalK = 2;                 // errors
-        optionLossRate = (TFloat)0.01;      // in
+//         optionLossRate = (TFloat)0.01;      // in
+        optionLossRate = (TFloat)0.0;       // in
         chosenLossRate = (TFloat)0.0;       // out
         optionErrorRate = (TFloat)0.05;     //
         optionHammingOnly = false;
diff --git a/apps/razers3/profile_timeline.h b/apps/razers3/profile_timeline.h
index c0346c9..0462243 100644
--- a/apps/razers3/profile_timeline.h
+++ b/apps/razers3/profile_timeline.h
@@ -39,11 +39,11 @@
 
 #include <iostream>
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 #include <process.h>
-#else  // #ifdef PLATFORM_WINDOWS
+#else  // #ifdef STDLIB_VS
 #include <unistd.h>
-#endif  // #ifdef PLATFORM_WINDOWS
+#endif  // #ifdef STDLIB_VS
 
 #ifdef _OPENMP
 #include <omp.h>
@@ -170,13 +170,13 @@ dumpTimeline(char const * path, bool appendPid)
     strcpy(pathBuffer, path);
     if (appendPid)
     {
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
         int pid = _getpid();
-#else // #ifdef PLATFORM_WINDOWS
+#else // #ifdef STDLIB_VS
         int pid = getpid();
-#endif // #ifdef PLATFORM_WINDOWS
+#endif // #ifdef STDLIB_VS
         char buffer[30];
-        sprintf(buffer, "%d", pid);
+        snprintf(buffer, 30, "%d", pid);
         strcat(pathBuffer, ".");
         strcat(pathBuffer, buffer);
     }
diff --git a/apps/razers3/razers.cpp b/apps/razers3/razers.cpp
index 78a129d..74edd38 100644
--- a/apps/razers3/razers.cpp
+++ b/apps/razers3/razers.cpp
@@ -64,7 +64,7 @@
 #include <seqan/arg_parse.h>
 #include <seqan/parallel.h>
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 #include <process.h>
 #endif
 
@@ -159,11 +159,11 @@ int mapReads(
             cerr << "Taboo length:                    \t" << options.tabooLength << endl;
         if (options._debugLevel >= 1)
         {
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
             int pid = _getpid();
-#else // #ifdef PLATFORM_WINDOWS
+#else // #ifdef STDLIB_VS
             int pid = getpid();
-#endif // #ifdef PLATFORM_WINDOWS
+#endif // #ifdef STDLIB_VS
             cerr << "Program PID:                     \t" << pid << endl;
         }
         cerr << endl;
@@ -542,7 +542,7 @@ extractOptions(
     {
         if (back(pm_options.paramFolder) != '/' && back(pm_options.paramFolder) != '\\')
         {
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
             appendValue(pm_options.paramFolder, '\\');
 #else
             appendValue(pm_options.paramFolder, '/');
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-f-tc0.razers b/apps/razers3/tests/pe-adeno-reads100_2-f-tc0.razers
index 3984243..6c78bb3 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-f-tc0.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-f-tc0.razers
@@ -24,8 +24,8 @@ adeno-reads100.fasta.000000235/L	0	100	F	gi|9632547|ref|NC_002077.1|	1694	1793	9
 adeno-reads100.fasta.000000235/R	0	100	R	gi|9632547|ref|NC_002077.1|	1854	1954	99	16	-2	-260
 adeno-reads100.fasta.000000265/L	0	100	F	gi|9632547|ref|NC_002077.1|	3465	3565	100	36	0	269
 adeno-reads100.fasta.000000265/R	0	100	R	gi|9632547|ref|NC_002077.1|	3634	3734	100	36	0	-269
-adeno-reads100.fasta.000000319/L	0	100	F	gi|9632547|ref|NC_002077.1|	1151	1251	98	14	-5	260
-adeno-reads100.fasta.000000319/R	0	100	R	gi|9632547|ref|NC_002077.1|	1308	1411	97	14	-5	-260
+adeno-reads100.fasta.000000319/L	0	100	F	gi|9632547|ref|NC_002077.1|	1151	1251	98	13	-5	260
+adeno-reads100.fasta.000000319/R	0	100	R	gi|9632547|ref|NC_002077.1|	1308	1411	97	13	-5	-260
 adeno-reads100.fasta.000000362/L	0	100	F	gi|9632547|ref|NC_002077.1|	658	758	100	5	-1	269
 adeno-reads100.fasta.000000362/R	0	100	R	gi|9632547|ref|NC_002077.1|	827	927	99	5	-1	-269
 adeno-reads100.fasta.000000367/L	0	100	F	gi|9632547|ref|NC_002077.1|	4063	4163	98	40	-3	260
@@ -50,14 +50,14 @@ adeno-reads100.fasta.000000516/L	0	100	F	gi|9632547|ref|NC_002077.1|	709	809	100
 adeno-reads100.fasta.000000516/R	0	100	R	gi|9632547|ref|NC_002077.1|	873	973	100	7	0	-264
 adeno-reads100.fasta.000000555/L	0	100	F	gi|9632547|ref|NC_002077.1|	1019	1119	100	12	-2	262
 adeno-reads100.fasta.000000555/R	0	100	R	gi|9632547|ref|NC_002077.1|	1181	1281	98	12	-2	-262
-adeno-reads100.fasta.000000592/L	0	100	F	gi|9632547|ref|NC_002077.1|	300	400	99	0	-2	247
-adeno-reads100.fasta.000000592/R	0	100	R	gi|9632547|ref|NC_002077.1|	448	547	99	0	-2	-247
-adeno-reads100.fasta.000000598/L	0	100	F	gi|9632547|ref|NC_002077.1|	260	360	100	1	-2	263
-adeno-reads100.fasta.000000598/R	0	100	R	gi|9632547|ref|NC_002077.1|	424	523	98	1	-2	-263
+adeno-reads100.fasta.000000592/L	0	100	F	gi|9632547|ref|NC_002077.1|	300	400	99	1	-2	247
+adeno-reads100.fasta.000000592/R	0	100	R	gi|9632547|ref|NC_002077.1|	448	547	99	1	-2	-247
+adeno-reads100.fasta.000000598/L	0	100	F	gi|9632547|ref|NC_002077.1|	260	360	100	0	-2	263
+adeno-reads100.fasta.000000598/R	0	100	R	gi|9632547|ref|NC_002077.1|	424	523	98	0	-2	-263
 adeno-reads100.fasta.000000633/L	0	100	F	gi|9632547|ref|NC_002077.1|	3100	3200	100	31	0	257
 adeno-reads100.fasta.000000633/R	0	100	R	gi|9632547|ref|NC_002077.1|	3257	3357	100	31	0	-257
-adeno-reads100.fasta.000000644/L	0	100	F	gi|9632547|ref|NC_002077.1|	1164	1264	100	13	-4	256
-adeno-reads100.fasta.000000644/R	0	100	R	gi|9632547|ref|NC_002077.1|	1317	1420	96	13	-4	-256
+adeno-reads100.fasta.000000644/L	0	100	F	gi|9632547|ref|NC_002077.1|	1164	1264	100	14	-4	256
+adeno-reads100.fasta.000000644/R	0	100	R	gi|9632547|ref|NC_002077.1|	1317	1420	96	14	-4	-256
 adeno-reads100.fasta.000000653/L	0	100	F	gi|9632547|ref|NC_002077.1|	4219	4319	99	43	-2	265
 adeno-reads100.fasta.000000653/R	0	100	R	gi|9632547|ref|NC_002077.1|	4383	4484	99	43	-2	-265
 adeno-reads100.fasta.000000658/L	0	100	F	gi|9632547|ref|NC_002077.1|	2757	2857	99	25	-3	264
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-i100-tc1.razers b/apps/razers3/tests/pe-adeno-reads100_2-i100-tc1.razers
index ed50cde..b859fe7 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-i100-tc1.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-i100-tc1.razers
@@ -1,14 +1,28 @@
-adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	100	4	0	-253
-adeno-reads100.fasta.000000010/R	0	100	F	gi|9632547|ref|NC_002077.1|	4295	4395	100	4	0	253
-adeno-reads100.fasta.000000119/L	0	100	R	gi|9632547|ref|NC_002077.1|	3446	3546	100	1	0	-249
-adeno-reads100.fasta.000000119/R	0	100	F	gi|9632547|ref|NC_002077.1|	3297	3397	100	1	0	249
-adeno-reads100.fasta.000000507/L	0	100	R	gi|9632547|ref|NC_002077.1|	2895	2995	100	2	0	-268
-adeno-reads100.fasta.000000507/R	0	100	F	gi|9632547|ref|NC_002077.1|	2727	2827	100	2	0	268
-adeno-reads100.fasta.000000675/L	0	100	R	gi|9632547|ref|NC_002077.1|	4457	4557	100	0	0	-268
-adeno-reads100.fasta.000000675/R	0	100	F	gi|9632547|ref|NC_002077.1|	4289	4389	100	0	0	268
-adeno-reads100.fasta.000000751/L	0	100	R	gi|9632547|ref|NC_002077.1|	1889	1989	100	3	0	-268
-adeno-reads100.fasta.000000751/R	0	100	F	gi|9632547|ref|NC_002077.1|	1721	1821	100	3	0	268
-adeno-reads100.fasta.000000804/L	0	100	R	gi|9632547|ref|NC_002077.1|	3773	3873	100	6	0	-263
-adeno-reads100.fasta.000000804/R	0	100	F	gi|9632547|ref|NC_002077.1|	3610	3710	100	6	0	263
-adeno-reads100.fasta.000000950/L	0	100	R	gi|9632547|ref|NC_002077.1|	3686	3786	100	5	0	-268
-adeno-reads100.fasta.000000950/R	0	100	F	gi|9632547|ref|NC_002077.1|	3518	3618	100	5	0	268
+adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	100	11	0	-253
+adeno-reads100.fasta.000000010/R	0	100	F	gi|9632547|ref|NC_002077.1|	4295	4395	100	11	0	253
+adeno-reads100.fasta.000000119/L	0	100	R	gi|9632547|ref|NC_002077.1|	3446	3546	100	8	0	-249
+adeno-reads100.fasta.000000119/R	0	100	F	gi|9632547|ref|NC_002077.1|	3297	3397	100	8	0	249
+adeno-reads100.fasta.000000265/L	0	100	F	gi|9632547|ref|NC_002077.1|	3465	3565	100	4	0	269
+adeno-reads100.fasta.000000265/R	0	100	R	gi|9632547|ref|NC_002077.1|	3634	3734	100	4	0	-269
+adeno-reads100.fasta.000000507/L	0	100	R	gi|9632547|ref|NC_002077.1|	2895	2995	100	9	0	-268
+adeno-reads100.fasta.000000507/R	0	100	F	gi|9632547|ref|NC_002077.1|	2727	2827	100	9	0	268
+adeno-reads100.fasta.000000516/L	0	100	F	gi|9632547|ref|NC_002077.1|	709	809	100	5	0	264
+adeno-reads100.fasta.000000516/R	0	100	R	gi|9632547|ref|NC_002077.1|	873	973	100	5	0	-264
+adeno-reads100.fasta.000000633/L	0	100	F	gi|9632547|ref|NC_002077.1|	3100	3200	100	3	0	257
+adeno-reads100.fasta.000000633/R	0	100	R	gi|9632547|ref|NC_002077.1|	3257	3357	100	3	0	-257
+adeno-reads100.fasta.000000659/L	0	100	F	gi|9632547|ref|NC_002077.1|	638	738	100	0	0	262
+adeno-reads100.fasta.000000659/R	0	100	R	gi|9632547|ref|NC_002077.1|	800	900	100	0	0	-262
+adeno-reads100.fasta.000000675/L	0	100	R	gi|9632547|ref|NC_002077.1|	4457	4557	100	7	0	-268
+adeno-reads100.fasta.000000675/R	0	100	F	gi|9632547|ref|NC_002077.1|	4289	4389	100	7	0	268
+adeno-reads100.fasta.000000751/L	0	100	R	gi|9632547|ref|NC_002077.1|	1889	1989	100	10	0	-268
+adeno-reads100.fasta.000000751/R	0	100	F	gi|9632547|ref|NC_002077.1|	1721	1821	100	10	0	268
+adeno-reads100.fasta.000000771/L	0	100	F	gi|9632547|ref|NC_002077.1|	934	1034	100	1	0	267
+adeno-reads100.fasta.000000771/R	0	100	R	gi|9632547|ref|NC_002077.1|	1101	1201	100	1	0	-267
+adeno-reads100.fasta.000000804/L	0	100	R	gi|9632547|ref|NC_002077.1|	3773	3873	100	13	0	-263
+adeno-reads100.fasta.000000804/R	0	100	F	gi|9632547|ref|NC_002077.1|	3610	3710	100	13	0	263
+adeno-reads100.fasta.000000902/L	0	100	F	gi|9632547|ref|NC_002077.1|	971	1071	100	2	0	257
+adeno-reads100.fasta.000000902/R	0	100	R	gi|9632547|ref|NC_002077.1|	1128	1228	100	2	0	-257
+adeno-reads100.fasta.000000950/L	0	100	R	gi|9632547|ref|NC_002077.1|	3686	3786	100	12	0	-268
+adeno-reads100.fasta.000000950/R	0	100	F	gi|9632547|ref|NC_002077.1|	3518	3618	100	12	0	268
+adeno-reads100.fasta.000000992/L	0	100	F	gi|9632547|ref|NC_002077.1|	4391	4491	100	6	0	269
+adeno-reads100.fasta.000000992/R	0	100	R	gi|9632547|ref|NC_002077.1|	4560	4660	100	6	0	-269
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-i90-tc0.razers b/apps/razers3/tests/pe-adeno-reads100_2-i90-tc0.razers
index af7a22f..24a6a7b 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-i90-tc0.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-i90-tc0.razers
@@ -30,8 +30,8 @@ adeno-reads100.fasta.000000235/L	0	100	F	gi|9632547|ref|NC_002077.1|	1694	1793	9
 adeno-reads100.fasta.000000235/R	0	100	R	gi|9632547|ref|NC_002077.1|	1854	1954	99	16	-2	-260
 adeno-reads100.fasta.000000260/L	0	100	R	gi|9632547|ref|NC_002077.1|	3438	3538	100	56	-1	-270
 adeno-reads100.fasta.000000260/R	0	100	F	gi|9632547|ref|NC_002077.1|	3268	3368	99	56	-1	270
-adeno-reads100.fasta.000000265/L	0	100	F	gi|9632547|ref|NC_002077.1|	3465	3565	100	37	0	269
-adeno-reads100.fasta.000000265/R	0	100	R	gi|9632547|ref|NC_002077.1|	3634	3734	100	37	0	-269
+adeno-reads100.fasta.000000265/L	0	100	F	gi|9632547|ref|NC_002077.1|	3465	3565	100	36	0	269
+adeno-reads100.fasta.000000265/R	0	100	R	gi|9632547|ref|NC_002077.1|	3634	3734	100	36	0	-269
 adeno-reads100.fasta.000000291/L	0	100	R	gi|9632547|ref|NC_002077.1|	4113	4213	99	50	-2	-270
 adeno-reads100.fasta.000000291/R	0	100	F	gi|9632547|ref|NC_002077.1|	3943	4044	99	50	-2	270
 adeno-reads100.fasta.000000296/L	0	100	R	gi|9632547|ref|NC_002077.1|	4085	4185	99	51	-1	-260
@@ -52,8 +52,8 @@ adeno-reads100.fasta.000000390/L	0	100	F	gi|9632547|ref|NC_002077.1|	2120	2220	9
 adeno-reads100.fasta.000000390/R	0	100	R	gi|9632547|ref|NC_002077.1|	2275	2375	99	19	-2	-255
 adeno-reads100.fasta.000000404/L	0	100	R	gi|9632547|ref|NC_002077.1|	1569	1669	99	71	-1	-268
 adeno-reads100.fasta.000000404/R	0	100	F	gi|9632547|ref|NC_002077.1|	1401	1501	100	71	-1	268
-adeno-reads100.fasta.000000411/L	0	100	F	gi|9632547|ref|NC_002077.1|	2865	2965	98	30	-2	262
-adeno-reads100.fasta.000000411/R	0	100	R	gi|9632547|ref|NC_002077.1|	3027	3127	100	30	-2	-262
+adeno-reads100.fasta.000000411/L	0	100	F	gi|9632547|ref|NC_002077.1|	2865	2965	98	31	-2	262
+adeno-reads100.fasta.000000411/R	0	100	R	gi|9632547|ref|NC_002077.1|	3027	3127	100	31	-2	-262
 adeno-reads100.fasta.000000414/L	0	100	F	gi|9632547|ref|NC_002077.1|	765	865	98	8	-2	268
 adeno-reads100.fasta.000000414/R	0	100	R	gi|9632547|ref|NC_002077.1|	933	1033	100	8	-2	-268
 adeno-reads100.fasta.000000443/L	0	100	F	gi|9632547|ref|NC_002077.1|	1714	1812	98	17	-2	261
@@ -106,14 +106,14 @@ adeno-reads100.fasta.000000683/L	0	100	R	gi|9632547|ref|NC_002077.1|	2090	2190	9
 adeno-reads100.fasta.000000683/R	0	100	F	gi|9632547|ref|NC_002077.1|	1936	2036	99	65	-2	254
 adeno-reads100.fasta.000000686/L	0	100	R	gi|9632547|ref|NC_002077.1|	303	403	99	75	-2	-269
 adeno-reads100.fasta.000000686/R	0	100	F	gi|9632547|ref|NC_002077.1|	134	234	99	75	-2	269
-adeno-reads100.fasta.000000693/L	0	100	F	gi|9632547|ref|NC_002077.1|	3479	3580	97	36	-3	254
-adeno-reads100.fasta.000000693/R	0	100	R	gi|9632547|ref|NC_002077.1|	3633	3733	100	36	-3	-254
+adeno-reads100.fasta.000000693/L	0	100	F	gi|9632547|ref|NC_002077.1|	3479	3580	97	37	-3	254
+adeno-reads100.fasta.000000693/R	0	100	R	gi|9632547|ref|NC_002077.1|	3633	3733	100	37	-3	-254
 adeno-reads100.fasta.000000708/L	0	100	F	gi|9632547|ref|NC_002077.1|	2208	2308	100	21	-2	268
 adeno-reads100.fasta.000000708/R	0	100	R	gi|9632547|ref|NC_002077.1|	2376	2476	98	21	-2	-268
 adeno-reads100.fasta.000000735/L	0	100	F	gi|9632547|ref|NC_002077.1|	3424	3524	100	35	-1	260
 adeno-reads100.fasta.000000735/R	0	100	R	gi|9632547|ref|NC_002077.1|	3584	3684	99	35	-1	-260
-adeno-reads100.fasta.000000739/L	0	100	F	gi|9632547|ref|NC_002077.1|	2797	2897	99	31	-7	269
-adeno-reads100.fasta.000000739/R	0	100	R	gi|9632547|ref|NC_002077.1|	2971	3066	94	31	-7	-269
+adeno-reads100.fasta.000000739/L	0	100	F	gi|9632547|ref|NC_002077.1|	2797	2897	99	30	-7	269
+adeno-reads100.fasta.000000739/R	0	100	R	gi|9632547|ref|NC_002077.1|	2971	3066	94	30	-7	-269
 adeno-reads100.fasta.000000749/L	0	100	R	gi|9632547|ref|NC_002077.1|	844	944	100	74	-1	-263
 adeno-reads100.fasta.000000749/R	0	100	F	gi|9632547|ref|NC_002077.1|	681	781	99	74	-1	263
 adeno-reads100.fasta.000000751/L	0	100	R	gi|9632547|ref|NC_002077.1|	1889	1989	100	67	0	-268
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-i90-tc1.razers b/apps/razers3/tests/pe-adeno-reads100_2-i90-tc1.razers
index 2835df5..30c7127 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-i90-tc1.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-i90-tc1.razers
@@ -1,5 +1,5 @@
-adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	10	-6	265
-adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	10	-6	-265
+adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	11	-6	265
+adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	11	-6	-265
 adeno-reads100.fasta.000000008/L	0	100	F	gi|9632547|ref|NC_002077.1|	4188	4289	98	44	-2	268
 adeno-reads100.fasta.000000008/R	0	100	R	gi|9632547|ref|NC_002077.1|	4356	4456	100	44	-2	-268
 adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	100	56	0	-253
@@ -30,8 +30,8 @@ adeno-reads100.fasta.000000235/L	0	100	F	gi|9632547|ref|NC_002077.1|	1694	1793	9
 adeno-reads100.fasta.000000235/R	0	100	R	gi|9632547|ref|NC_002077.1|	1854	1954	99	6	-2	-260
 adeno-reads100.fasta.000000260/L	0	100	R	gi|9632547|ref|NC_002077.1|	3438	3538	100	71	-1	-270
 adeno-reads100.fasta.000000260/R	0	100	F	gi|9632547|ref|NC_002077.1|	3268	3368	99	71	-1	270
-adeno-reads100.fasta.000000265/L	0	100	F	gi|9632547|ref|NC_002077.1|	3465	3565	100	34	0	269
-adeno-reads100.fasta.000000265/R	0	100	R	gi|9632547|ref|NC_002077.1|	3634	3734	100	34	0	-269
+adeno-reads100.fasta.000000265/L	0	100	F	gi|9632547|ref|NC_002077.1|	3465	3565	100	33	0	269
+adeno-reads100.fasta.000000265/R	0	100	R	gi|9632547|ref|NC_002077.1|	3634	3734	100	33	0	-269
 adeno-reads100.fasta.000000291/L	0	100	R	gi|9632547|ref|NC_002077.1|	4113	4213	99	47	-2	-270
 adeno-reads100.fasta.000000291/R	0	100	F	gi|9632547|ref|NC_002077.1|	3943	4044	99	47	-2	270
 adeno-reads100.fasta.000000296/L	0	100	R	gi|9632547|ref|NC_002077.1|	4085	4185	99	69	-1	-260
@@ -52,8 +52,8 @@ adeno-reads100.fasta.000000390/L	0	100	F	gi|9632547|ref|NC_002077.1|	2120	2220	9
 adeno-reads100.fasta.000000390/R	0	100	R	gi|9632547|ref|NC_002077.1|	2275	2375	99	24	-2	-255
 adeno-reads100.fasta.000000404/L	0	100	R	gi|9632547|ref|NC_002077.1|	1569	1669	99	75	-1	-268
 adeno-reads100.fasta.000000404/R	0	100	F	gi|9632547|ref|NC_002077.1|	1401	1501	100	75	-1	268
-adeno-reads100.fasta.000000411/L	0	100	F	gi|9632547|ref|NC_002077.1|	2865	2965	98	12	-2	262
-adeno-reads100.fasta.000000411/R	0	100	R	gi|9632547|ref|NC_002077.1|	3027	3127	100	12	-2	-262
+adeno-reads100.fasta.000000411/L	0	100	F	gi|9632547|ref|NC_002077.1|	2865	2965	98	13	-2	262
+adeno-reads100.fasta.000000411/R	0	100	R	gi|9632547|ref|NC_002077.1|	3027	3127	100	13	-2	-262
 adeno-reads100.fasta.000000414/L	0	100	F	gi|9632547|ref|NC_002077.1|	765	865	98	21	-2	268
 adeno-reads100.fasta.000000414/R	0	100	R	gi|9632547|ref|NC_002077.1|	933	1033	100	21	-2	-268
 adeno-reads100.fasta.000000443/L	0	100	F	gi|9632547|ref|NC_002077.1|	1714	1812	98	7	-2	261
@@ -62,8 +62,8 @@ adeno-reads100.fasta.000000464/L	0	100	F	gi|9632547|ref|NC_002077.1|	4095	4195	1
 adeno-reads100.fasta.000000464/R	0	100	R	gi|9632547|ref|NC_002077.1|	4261	4361	99	43	-1	-266
 adeno-reads100.fasta.000000465/L	0	100	R	gi|9632547|ref|NC_002077.1|	1724	1824	100	67	-3	-265
 adeno-reads100.fasta.000000465/R	0	100	F	gi|9632547|ref|NC_002077.1|	1559	1658	97	67	-3	265
-adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	11	-4	242
-adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	11	-4	-242
+adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	12	-4	242
+adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	12	-4	-242
 adeno-reads100.fasta.000000499/L	0	100	F	gi|9632547|ref|NC_002077.1|	446	546	100	0	-1	266
 adeno-reads100.fasta.000000499/R	0	100	R	gi|9632547|ref|NC_002077.1|	612	712	99	0	-1	-266
 adeno-reads100.fasta.000000503/L	0	100	R	gi|9632547|ref|NC_002077.1|	2298	2398	99	50	-2	-270
@@ -106,14 +106,14 @@ adeno-reads100.fasta.000000683/L	0	100	R	gi|9632547|ref|NC_002077.1|	2090	2190	9
 adeno-reads100.fasta.000000683/R	0	100	F	gi|9632547|ref|NC_002077.1|	1936	2036	99	51	-2	254
 adeno-reads100.fasta.000000686/L	0	100	R	gi|9632547|ref|NC_002077.1|	303	403	99	63	-2	-269
 adeno-reads100.fasta.000000686/R	0	100	F	gi|9632547|ref|NC_002077.1|	134	234	99	63	-2	269
-adeno-reads100.fasta.000000693/L	0	100	F	gi|9632547|ref|NC_002077.1|	3479	3580	97	33	-3	254
-adeno-reads100.fasta.000000693/R	0	100	R	gi|9632547|ref|NC_002077.1|	3633	3733	100	33	-3	-254
+adeno-reads100.fasta.000000693/L	0	100	F	gi|9632547|ref|NC_002077.1|	3479	3580	97	34	-3	254
+adeno-reads100.fasta.000000693/R	0	100	R	gi|9632547|ref|NC_002077.1|	3633	3733	100	34	-3	-254
 adeno-reads100.fasta.000000708/L	0	100	F	gi|9632547|ref|NC_002077.1|	2208	2308	100	41	-2	268
 adeno-reads100.fasta.000000708/R	0	100	R	gi|9632547|ref|NC_002077.1|	2376	2476	98	41	-2	-268
 adeno-reads100.fasta.000000735/L	0	100	F	gi|9632547|ref|NC_002077.1|	3424	3524	100	15	-1	260
 adeno-reads100.fasta.000000735/R	0	100	R	gi|9632547|ref|NC_002077.1|	3584	3684	99	15	-1	-260
-adeno-reads100.fasta.000000739/L	0	100	F	gi|9632547|ref|NC_002077.1|	2797	2897	99	13	-7	269
-adeno-reads100.fasta.000000739/R	0	100	R	gi|9632547|ref|NC_002077.1|	2971	3066	94	13	-7	-269
+adeno-reads100.fasta.000000739/L	0	100	F	gi|9632547|ref|NC_002077.1|	2797	2897	99	10	-7	269
+adeno-reads100.fasta.000000739/R	0	100	R	gi|9632547|ref|NC_002077.1|	2971	3066	94	10	-7	-269
 adeno-reads100.fasta.000000749/L	0	100	R	gi|9632547|ref|NC_002077.1|	844	944	100	68	-1	-263
 adeno-reads100.fasta.000000749/R	0	100	F	gi|9632547|ref|NC_002077.1|	681	781	99	68	-1	263
 adeno-reads100.fasta.000000751/L	0	100	R	gi|9632547|ref|NC_002077.1|	1889	1989	100	53	0	-268
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-i91-tc0.razers b/apps/razers3/tests/pe-adeno-reads100_2-i91-tc0.razers
index 5c2b8eb..d4e02d8 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-i91-tc0.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-i91-tc0.razers
@@ -1,17 +1,17 @@
-adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	29	-6	265
-adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	29	-6	-265
+adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	28	-6	265
+adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	28	-6	-265
 adeno-reads100.fasta.000000008/L	0	100	F	gi|9632547|ref|NC_002077.1|	4188	4289	98	43	-2	268
 adeno-reads100.fasta.000000008/R	0	100	R	gi|9632547|ref|NC_002077.1|	4356	4456	100	43	-2	-268
 adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	100	46	0	-253
 adeno-reads100.fasta.000000010/R	0	100	F	gi|9632547|ref|NC_002077.1|	4295	4395	100	46	0	253
 adeno-reads100.fasta.000000027/L	0	100	F	gi|9632547|ref|NC_002077.1|	2176	2276	99	20	-3	230
 adeno-reads100.fasta.000000027/R	0	100	R	gi|9632547|ref|NC_002077.1|	2306	2406	98	20	-3	-230
-adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	26	-6	264
-adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	26	-6	-264
+adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	30	-6	264
+adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	30	-6	-264
 adeno-reads100.fasta.000000082/L	0	100	F	gi|9632547|ref|NC_002077.1|	1397	1497	100	15	-1	261
 adeno-reads100.fasta.000000082/R	0	100	R	gi|9632547|ref|NC_002077.1|	1558	1658	99	15	-1	-261
-adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	27	-5	268
-adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	27	-5	-268
+adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	26	-5	268
+adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	26	-5	-268
 adeno-reads100.fasta.000000119/L	0	100	R	gi|9632547|ref|NC_002077.1|	3446	3546	100	55	0	-249
 adeno-reads100.fasta.000000119/R	0	100	F	gi|9632547|ref|NC_002077.1|	3297	3397	100	55	0	249
 adeno-reads100.fasta.000000120/L	0	100	F	gi|9632547|ref|NC_002077.1|	2479	2579	99	23	-2	265
@@ -32,14 +32,14 @@ adeno-reads100.fasta.000000260/L	0	100	R	gi|9632547|ref|NC_002077.1|	3438	3538	1
 adeno-reads100.fasta.000000260/R	0	100	F	gi|9632547|ref|NC_002077.1|	3268	3368	99	56	-1	270
 adeno-reads100.fasta.000000265/L	0	100	F	gi|9632547|ref|NC_002077.1|	3465	3565	100	37	0	269
 adeno-reads100.fasta.000000265/R	0	100	R	gi|9632547|ref|NC_002077.1|	3634	3734	100	37	0	-269
-adeno-reads100.fasta.000000291/L	0	100	R	gi|9632547|ref|NC_002077.1|	4113	4213	99	50	-2	-270
-adeno-reads100.fasta.000000291/R	0	100	F	gi|9632547|ref|NC_002077.1|	3943	4044	99	50	-2	270
-adeno-reads100.fasta.000000296/L	0	100	R	gi|9632547|ref|NC_002077.1|	4085	4185	99	51	-1	-260
-adeno-reads100.fasta.000000296/R	0	100	F	gi|9632547|ref|NC_002077.1|	3925	4025	100	51	-1	260
+adeno-reads100.fasta.000000291/L	0	100	R	gi|9632547|ref|NC_002077.1|	4113	4213	99	51	-2	-270
+adeno-reads100.fasta.000000291/R	0	100	F	gi|9632547|ref|NC_002077.1|	3943	4044	99	51	-2	270
+adeno-reads100.fasta.000000296/L	0	100	R	gi|9632547|ref|NC_002077.1|	4085	4185	99	50	-1	-260
+adeno-reads100.fasta.000000296/R	0	100	F	gi|9632547|ref|NC_002077.1|	3925	4025	100	50	-1	260
 adeno-reads100.fasta.000000297/L	0	100	R	gi|9632547|ref|NC_002077.1|	4310	4411	98	48	-3	-267
 adeno-reads100.fasta.000000297/R	0	100	F	gi|9632547|ref|NC_002077.1|	4144	4244	99	48	-3	267
-adeno-reads100.fasta.000000319/L	0	100	F	gi|9632547|ref|NC_002077.1|	1151	1251	98	13	-5	260
-adeno-reads100.fasta.000000319/R	0	100	R	gi|9632547|ref|NC_002077.1|	1308	1411	97	13	-5	-260
+adeno-reads100.fasta.000000319/L	0	100	F	gi|9632547|ref|NC_002077.1|	1151	1251	98	14	-5	260
+adeno-reads100.fasta.000000319/R	0	100	R	gi|9632547|ref|NC_002077.1|	1308	1411	97	14	-5	-260
 adeno-reads100.fasta.000000360/L	0	100	R	gi|9632547|ref|NC_002077.1|	1879	1980	99	68	-1	-268
 adeno-reads100.fasta.000000360/R	0	100	F	gi|9632547|ref|NC_002077.1|	1712	1812	100	68	-1	268
 adeno-reads100.fasta.000000362/L	0	100	F	gi|9632547|ref|NC_002077.1|	658	758	100	5	-1	269
@@ -52,8 +52,8 @@ adeno-reads100.fasta.000000390/L	0	100	F	gi|9632547|ref|NC_002077.1|	2120	2220	9
 adeno-reads100.fasta.000000390/R	0	100	R	gi|9632547|ref|NC_002077.1|	2275	2375	99	19	-2	-255
 adeno-reads100.fasta.000000404/L	0	100	R	gi|9632547|ref|NC_002077.1|	1569	1669	99	71	-1	-268
 adeno-reads100.fasta.000000404/R	0	100	F	gi|9632547|ref|NC_002077.1|	1401	1501	100	71	-1	268
-adeno-reads100.fasta.000000411/L	0	100	F	gi|9632547|ref|NC_002077.1|	2865	2965	98	30	-2	262
-adeno-reads100.fasta.000000411/R	0	100	R	gi|9632547|ref|NC_002077.1|	3027	3127	100	30	-2	-262
+adeno-reads100.fasta.000000411/L	0	100	F	gi|9632547|ref|NC_002077.1|	2865	2965	98	29	-2	262
+adeno-reads100.fasta.000000411/R	0	100	R	gi|9632547|ref|NC_002077.1|	3027	3127	100	29	-2	-262
 adeno-reads100.fasta.000000414/L	0	100	F	gi|9632547|ref|NC_002077.1|	765	865	98	8	-2	268
 adeno-reads100.fasta.000000414/R	0	100	R	gi|9632547|ref|NC_002077.1|	933	1033	100	8	-2	-268
 adeno-reads100.fasta.000000443/L	0	100	F	gi|9632547|ref|NC_002077.1|	1714	1812	98	17	-2	261
@@ -62,8 +62,8 @@ adeno-reads100.fasta.000000464/L	0	100	F	gi|9632547|ref|NC_002077.1|	4095	4195	1
 adeno-reads100.fasta.000000464/R	0	100	R	gi|9632547|ref|NC_002077.1|	4261	4361	99	42	-1	-266
 adeno-reads100.fasta.000000465/L	0	100	R	gi|9632547|ref|NC_002077.1|	1724	1824	100	70	-3	-265
 adeno-reads100.fasta.000000465/R	0	100	F	gi|9632547|ref|NC_002077.1|	1559	1658	97	70	-3	265
-adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	28	-4	242
-adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	28	-4	-242
+adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	27	-4	242
+adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	27	-4	-242
 adeno-reads100.fasta.000000499/L	0	100	F	gi|9632547|ref|NC_002077.1|	446	546	100	2	-1	266
 adeno-reads100.fasta.000000499/R	0	100	R	gi|9632547|ref|NC_002077.1|	612	712	99	2	-1	-266
 adeno-reads100.fasta.000000503/L	0	100	R	gi|9632547|ref|NC_002077.1|	2298	2398	99	63	-2	-270
@@ -90,8 +90,8 @@ adeno-reads100.fasta.000000616/L	0	100	R	gi|9632547|ref|NC_002077.1|	2215	2316	9
 adeno-reads100.fasta.000000616/R	0	100	F	gi|9632547|ref|NC_002077.1|	2049	2148	98	64	-4	267
 adeno-reads100.fasta.000000633/L	0	100	F	gi|9632547|ref|NC_002077.1|	3100	3200	100	32	0	257
 adeno-reads100.fasta.000000633/R	0	100	R	gi|9632547|ref|NC_002077.1|	3257	3357	100	32	0	-257
-adeno-reads100.fasta.000000644/L	0	100	F	gi|9632547|ref|NC_002077.1|	1164	1264	100	14	-4	256
-adeno-reads100.fasta.000000644/R	0	100	R	gi|9632547|ref|NC_002077.1|	1317	1420	96	14	-4	-256
+adeno-reads100.fasta.000000644/L	0	100	F	gi|9632547|ref|NC_002077.1|	1164	1264	100	13	-4	256
+adeno-reads100.fasta.000000644/R	0	100	R	gi|9632547|ref|NC_002077.1|	1317	1420	96	13	-4	-256
 adeno-reads100.fasta.000000653/L	0	100	F	gi|9632547|ref|NC_002077.1|	4219	4319	99	44	-2	265
 adeno-reads100.fasta.000000653/R	0	100	R	gi|9632547|ref|NC_002077.1|	4383	4484	99	44	-2	-265
 adeno-reads100.fasta.000000658/L	0	100	F	gi|9632547|ref|NC_002077.1|	2757	2857	99	25	-3	264
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-i91-tc1.razers b/apps/razers3/tests/pe-adeno-reads100_2-i91-tc1.razers
index 1ddc0e2..9d6c81d 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-i91-tc1.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-i91-tc1.razers
@@ -1,5 +1,5 @@
-adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	11	-6	265
-adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	11	-6	-265
+adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	12	-6	265
+adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	12	-6	-265
 adeno-reads100.fasta.000000008/L	0	100	F	gi|9632547|ref|NC_002077.1|	4188	4289	98	44	-2	268
 adeno-reads100.fasta.000000008/R	0	100	R	gi|9632547|ref|NC_002077.1|	4356	4456	100	44	-2	-268
 adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	100	56	0	-253
@@ -52,8 +52,8 @@ adeno-reads100.fasta.000000390/L	0	100	F	gi|9632547|ref|NC_002077.1|	2120	2220	9
 adeno-reads100.fasta.000000390/R	0	100	R	gi|9632547|ref|NC_002077.1|	2275	2375	99	24	-2	-255
 adeno-reads100.fasta.000000404/L	0	100	R	gi|9632547|ref|NC_002077.1|	1569	1669	99	75	-1	-268
 adeno-reads100.fasta.000000404/R	0	100	F	gi|9632547|ref|NC_002077.1|	1401	1501	100	75	-1	268
-adeno-reads100.fasta.000000411/L	0	100	F	gi|9632547|ref|NC_002077.1|	2865	2965	98	12	-2	262
-adeno-reads100.fasta.000000411/R	0	100	R	gi|9632547|ref|NC_002077.1|	3027	3127	100	12	-2	-262
+adeno-reads100.fasta.000000411/L	0	100	F	gi|9632547|ref|NC_002077.1|	2865	2965	98	13	-2	262
+adeno-reads100.fasta.000000411/R	0	100	R	gi|9632547|ref|NC_002077.1|	3027	3127	100	13	-2	-262
 adeno-reads100.fasta.000000414/L	0	100	F	gi|9632547|ref|NC_002077.1|	765	865	98	21	-2	268
 adeno-reads100.fasta.000000414/R	0	100	R	gi|9632547|ref|NC_002077.1|	933	1033	100	21	-2	-268
 adeno-reads100.fasta.000000443/L	0	100	F	gi|9632547|ref|NC_002077.1|	1714	1812	98	7	-2	261
@@ -62,8 +62,8 @@ adeno-reads100.fasta.000000464/L	0	100	F	gi|9632547|ref|NC_002077.1|	4095	4195	1
 adeno-reads100.fasta.000000464/R	0	100	R	gi|9632547|ref|NC_002077.1|	4261	4361	99	43	-1	-266
 adeno-reads100.fasta.000000465/L	0	100	R	gi|9632547|ref|NC_002077.1|	1724	1824	100	67	-3	-265
 adeno-reads100.fasta.000000465/R	0	100	F	gi|9632547|ref|NC_002077.1|	1559	1658	97	67	-3	265
-adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	10	-4	242
-adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	10	-4	-242
+adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	11	-4	242
+adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	11	-4	-242
 adeno-reads100.fasta.000000499/L	0	100	F	gi|9632547|ref|NC_002077.1|	446	546	100	0	-1	266
 adeno-reads100.fasta.000000499/R	0	100	R	gi|9632547|ref|NC_002077.1|	612	712	99	0	-1	-266
 adeno-reads100.fasta.000000503/L	0	100	R	gi|9632547|ref|NC_002077.1|	2298	2398	99	50	-2	-270
@@ -112,8 +112,8 @@ adeno-reads100.fasta.000000708/L	0	100	F	gi|9632547|ref|NC_002077.1|	2208	2308	1
 adeno-reads100.fasta.000000708/R	0	100	R	gi|9632547|ref|NC_002077.1|	2376	2476	98	41	-2	-268
 adeno-reads100.fasta.000000735/L	0	100	F	gi|9632547|ref|NC_002077.1|	3424	3524	100	15	-1	260
 adeno-reads100.fasta.000000735/R	0	100	R	gi|9632547|ref|NC_002077.1|	3584	3684	99	15	-1	-260
-adeno-reads100.fasta.000000739/L	0	100	F	gi|9632547|ref|NC_002077.1|	2797	2897	99	13	-7	269
-adeno-reads100.fasta.000000739/R	0	100	R	gi|9632547|ref|NC_002077.1|	2971	3066	94	13	-7	-269
+adeno-reads100.fasta.000000739/L	0	100	F	gi|9632547|ref|NC_002077.1|	2797	2897	99	10	-7	269
+adeno-reads100.fasta.000000739/R	0	100	R	gi|9632547|ref|NC_002077.1|	2971	3066	94	10	-7	-269
 adeno-reads100.fasta.000000749/L	0	100	R	gi|9632547|ref|NC_002077.1|	844	944	100	68	-1	-263
 adeno-reads100.fasta.000000749/R	0	100	F	gi|9632547|ref|NC_002077.1|	681	781	99	68	-1	263
 adeno-reads100.fasta.000000751/L	0	100	R	gi|9632547|ref|NC_002077.1|	1889	1989	100	53	0	-268
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-i92-tc0.razers b/apps/razers3/tests/pe-adeno-reads100_2-i92-tc0.razers
index bcee0a7..4f3d150 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-i92-tc0.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-i92-tc0.razers
@@ -1,13 +1,13 @@
-adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	27	-6	265
-adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	27	-6	-265
+adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	29	-6	265
+adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	29	-6	-265
 adeno-reads100.fasta.000000008/L	0	100	F	gi|9632547|ref|NC_002077.1|	4188	4289	98	43	-2	268
 adeno-reads100.fasta.000000008/R	0	100	R	gi|9632547|ref|NC_002077.1|	4356	4456	100	43	-2	-268
 adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	100	46	0	-253
 adeno-reads100.fasta.000000010/R	0	100	F	gi|9632547|ref|NC_002077.1|	4295	4395	100	46	0	253
 adeno-reads100.fasta.000000027/L	0	100	F	gi|9632547|ref|NC_002077.1|	2176	2276	99	20	-3	230
 adeno-reads100.fasta.000000027/R	0	100	R	gi|9632547|ref|NC_002077.1|	2306	2406	98	20	-3	-230
-adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	31	-6	264
-adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	31	-6	-264
+adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	28	-6	264
+adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	28	-6	-264
 adeno-reads100.fasta.000000082/L	0	100	F	gi|9632547|ref|NC_002077.1|	1397	1497	100	15	-1	261
 adeno-reads100.fasta.000000082/R	0	100	R	gi|9632547|ref|NC_002077.1|	1558	1658	99	15	-1	-261
 adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	26	-5	268
@@ -62,8 +62,8 @@ adeno-reads100.fasta.000000464/L	0	100	F	gi|9632547|ref|NC_002077.1|	4095	4195	1
 adeno-reads100.fasta.000000464/R	0	100	R	gi|9632547|ref|NC_002077.1|	4261	4361	99	42	-1	-266
 adeno-reads100.fasta.000000465/L	0	100	R	gi|9632547|ref|NC_002077.1|	1724	1824	100	70	-3	-265
 adeno-reads100.fasta.000000465/R	0	100	F	gi|9632547|ref|NC_002077.1|	1559	1658	97	70	-3	265
-adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	29	-4	242
-adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	29	-4	-242
+adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	27	-4	242
+adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	27	-4	-242
 adeno-reads100.fasta.000000499/L	0	100	F	gi|9632547|ref|NC_002077.1|	446	546	100	2	-1	266
 adeno-reads100.fasta.000000499/R	0	100	R	gi|9632547|ref|NC_002077.1|	612	712	99	2	-1	-266
 adeno-reads100.fasta.000000503/L	0	100	R	gi|9632547|ref|NC_002077.1|	2298	2398	99	63	-2	-270
@@ -112,8 +112,8 @@ adeno-reads100.fasta.000000708/L	0	100	F	gi|9632547|ref|NC_002077.1|	2208	2308	1
 adeno-reads100.fasta.000000708/R	0	100	R	gi|9632547|ref|NC_002077.1|	2376	2476	98	21	-2	-268
 adeno-reads100.fasta.000000735/L	0	100	F	gi|9632547|ref|NC_002077.1|	3424	3524	100	35	-1	260
 adeno-reads100.fasta.000000735/R	0	100	R	gi|9632547|ref|NC_002077.1|	3584	3684	99	35	-1	-260
-adeno-reads100.fasta.000000739/L	0	100	F	gi|9632547|ref|NC_002077.1|	2797	2897	99	28	-7	269
-adeno-reads100.fasta.000000739/R	0	100	R	gi|9632547|ref|NC_002077.1|	2971	3066	94	28	-7	-269
+adeno-reads100.fasta.000000739/L	0	100	F	gi|9632547|ref|NC_002077.1|	2797	2897	99	31	-7	269
+adeno-reads100.fasta.000000739/R	0	100	R	gi|9632547|ref|NC_002077.1|	2971	3066	94	31	-7	-269
 adeno-reads100.fasta.000000749/L	0	100	R	gi|9632547|ref|NC_002077.1|	844	944	100	74	-1	-263
 adeno-reads100.fasta.000000749/R	0	100	F	gi|9632547|ref|NC_002077.1|	681	781	99	74	-1	263
 adeno-reads100.fasta.000000751/L	0	100	R	gi|9632547|ref|NC_002077.1|	1889	1989	100	67	0	-268
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-i92-tc1.razers b/apps/razers3/tests/pe-adeno-reads100_2-i92-tc1.razers
index 9d6c81d..c349a33 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-i92-tc1.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-i92-tc1.razers
@@ -6,12 +6,12 @@ adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	1
 adeno-reads100.fasta.000000010/R	0	100	F	gi|9632547|ref|NC_002077.1|	4295	4395	100	56	0	253
 adeno-reads100.fasta.000000027/L	0	100	F	gi|9632547|ref|NC_002077.1|	2176	2276	99	9	-3	230
 adeno-reads100.fasta.000000027/R	0	100	R	gi|9632547|ref|NC_002077.1|	2306	2406	98	9	-3	-230
-adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	29	-6	264
-adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	29	-6	-264
+adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	30	-6	264
+adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	30	-6	-264
 adeno-reads100.fasta.000000082/L	0	100	F	gi|9632547|ref|NC_002077.1|	1397	1497	100	23	-1	261
 adeno-reads100.fasta.000000082/R	0	100	R	gi|9632547|ref|NC_002077.1|	1558	1658	99	23	-1	-261
-adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	30	-5	268
-adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	30	-5	-268
+adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	29	-5	268
+adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	29	-5	-268
 adeno-reads100.fasta.000000119/L	0	100	R	gi|9632547|ref|NC_002077.1|	3446	3546	100	48	0	-249
 adeno-reads100.fasta.000000119/R	0	100	F	gi|9632547|ref|NC_002077.1|	3297	3397	100	48	0	249
 adeno-reads100.fasta.000000120/L	0	100	F	gi|9632547|ref|NC_002077.1|	2479	2579	99	42	-2	265
@@ -62,8 +62,8 @@ adeno-reads100.fasta.000000464/L	0	100	F	gi|9632547|ref|NC_002077.1|	4095	4195	1
 adeno-reads100.fasta.000000464/R	0	100	R	gi|9632547|ref|NC_002077.1|	4261	4361	99	43	-1	-266
 adeno-reads100.fasta.000000465/L	0	100	R	gi|9632547|ref|NC_002077.1|	1724	1824	100	67	-3	-265
 adeno-reads100.fasta.000000465/R	0	100	F	gi|9632547|ref|NC_002077.1|	1559	1658	97	67	-3	265
-adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	11	-4	242
-adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	11	-4	-242
+adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	10	-4	242
+adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	10	-4	-242
 adeno-reads100.fasta.000000499/L	0	100	F	gi|9632547|ref|NC_002077.1|	446	546	100	0	-1	266
 adeno-reads100.fasta.000000499/R	0	100	R	gi|9632547|ref|NC_002077.1|	612	712	99	0	-1	-266
 adeno-reads100.fasta.000000503/L	0	100	R	gi|9632547|ref|NC_002077.1|	2298	2398	99	50	-2	-270
@@ -112,8 +112,8 @@ adeno-reads100.fasta.000000708/L	0	100	F	gi|9632547|ref|NC_002077.1|	2208	2308	1
 adeno-reads100.fasta.000000708/R	0	100	R	gi|9632547|ref|NC_002077.1|	2376	2476	98	41	-2	-268
 adeno-reads100.fasta.000000735/L	0	100	F	gi|9632547|ref|NC_002077.1|	3424	3524	100	15	-1	260
 adeno-reads100.fasta.000000735/R	0	100	R	gi|9632547|ref|NC_002077.1|	3584	3684	99	15	-1	-260
-adeno-reads100.fasta.000000739/L	0	100	F	gi|9632547|ref|NC_002077.1|	2797	2897	99	10	-7	269
-adeno-reads100.fasta.000000739/R	0	100	R	gi|9632547|ref|NC_002077.1|	2971	3066	94	10	-7	-269
+adeno-reads100.fasta.000000739/L	0	100	F	gi|9632547|ref|NC_002077.1|	2797	2897	99	11	-7	269
+adeno-reads100.fasta.000000739/R	0	100	R	gi|9632547|ref|NC_002077.1|	2971	3066	94	11	-7	-269
 adeno-reads100.fasta.000000749/L	0	100	R	gi|9632547|ref|NC_002077.1|	844	944	100	68	-1	-263
 adeno-reads100.fasta.000000749/R	0	100	F	gi|9632547|ref|NC_002077.1|	681	781	99	68	-1	263
 adeno-reads100.fasta.000000751/L	0	100	R	gi|9632547|ref|NC_002077.1|	1889	1989	100	53	0	-268
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-i93-tc1.razers b/apps/razers3/tests/pe-adeno-reads100_2-i93-tc1.razers
index 7d52967..fe2c0ab 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-i93-tc1.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-i93-tc1.razers
@@ -1,17 +1,17 @@
-adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	11	-6	265
-adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	11	-6	-265
+adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	10	-6	265
+adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	10	-6	-265
 adeno-reads100.fasta.000000008/L	0	100	F	gi|9632547|ref|NC_002077.1|	4188	4289	98	44	-2	268
 adeno-reads100.fasta.000000008/R	0	100	R	gi|9632547|ref|NC_002077.1|	4356	4456	100	44	-2	-268
 adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	100	56	0	-253
 adeno-reads100.fasta.000000010/R	0	100	F	gi|9632547|ref|NC_002077.1|	4295	4395	100	56	0	253
 adeno-reads100.fasta.000000027/L	0	100	F	gi|9632547|ref|NC_002077.1|	2176	2276	99	9	-3	230
 adeno-reads100.fasta.000000027/R	0	100	R	gi|9632547|ref|NC_002077.1|	2306	2406	98	9	-3	-230
-adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	29	-6	264
-adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	29	-6	-264
+adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	30	-6	264
+adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	30	-6	-264
 adeno-reads100.fasta.000000082/L	0	100	F	gi|9632547|ref|NC_002077.1|	1397	1497	100	23	-1	261
 adeno-reads100.fasta.000000082/R	0	100	R	gi|9632547|ref|NC_002077.1|	1558	1658	99	23	-1	-261
-adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	30	-5	268
-adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	30	-5	-268
+adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	29	-5	268
+adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	29	-5	-268
 adeno-reads100.fasta.000000119/L	0	100	R	gi|9632547|ref|NC_002077.1|	3446	3546	100	48	0	-249
 adeno-reads100.fasta.000000119/R	0	100	F	gi|9632547|ref|NC_002077.1|	3297	3397	100	48	0	249
 adeno-reads100.fasta.000000120/L	0	100	F	gi|9632547|ref|NC_002077.1|	2479	2579	99	42	-2	265
@@ -52,8 +52,8 @@ adeno-reads100.fasta.000000390/L	0	100	F	gi|9632547|ref|NC_002077.1|	2120	2220	9
 adeno-reads100.fasta.000000390/R	0	100	R	gi|9632547|ref|NC_002077.1|	2275	2375	99	24	-2	-255
 adeno-reads100.fasta.000000404/L	0	100	R	gi|9632547|ref|NC_002077.1|	1569	1669	99	75	-1	-268
 adeno-reads100.fasta.000000404/R	0	100	F	gi|9632547|ref|NC_002077.1|	1401	1501	100	75	-1	268
-adeno-reads100.fasta.000000411/L	0	100	F	gi|9632547|ref|NC_002077.1|	2865	2965	98	13	-2	262
-adeno-reads100.fasta.000000411/R	0	100	R	gi|9632547|ref|NC_002077.1|	3027	3127	100	13	-2	-262
+adeno-reads100.fasta.000000411/L	0	100	F	gi|9632547|ref|NC_002077.1|	2865	2965	98	12	-2	262
+adeno-reads100.fasta.000000411/R	0	100	R	gi|9632547|ref|NC_002077.1|	3027	3127	100	12	-2	-262
 adeno-reads100.fasta.000000414/L	0	100	F	gi|9632547|ref|NC_002077.1|	765	865	98	21	-2	268
 adeno-reads100.fasta.000000414/R	0	100	R	gi|9632547|ref|NC_002077.1|	933	1033	100	21	-2	-268
 adeno-reads100.fasta.000000443/L	0	100	F	gi|9632547|ref|NC_002077.1|	1714	1812	98	7	-2	261
@@ -62,8 +62,8 @@ adeno-reads100.fasta.000000464/L	0	100	F	gi|9632547|ref|NC_002077.1|	4095	4195	1
 adeno-reads100.fasta.000000464/R	0	100	R	gi|9632547|ref|NC_002077.1|	4261	4361	99	43	-1	-266
 adeno-reads100.fasta.000000465/L	0	100	R	gi|9632547|ref|NC_002077.1|	1724	1824	100	67	-3	-265
 adeno-reads100.fasta.000000465/R	0	100	F	gi|9632547|ref|NC_002077.1|	1559	1658	97	67	-3	265
-adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	12	-4	242
-adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	12	-4	-242
+adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	11	-4	242
+adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	11	-4	-242
 adeno-reads100.fasta.000000499/L	0	100	F	gi|9632547|ref|NC_002077.1|	446	546	100	0	-1	266
 adeno-reads100.fasta.000000499/R	0	100	R	gi|9632547|ref|NC_002077.1|	612	712	99	0	-1	-266
 adeno-reads100.fasta.000000503/L	0	100	R	gi|9632547|ref|NC_002077.1|	2298	2398	99	50	-2	-270
@@ -112,8 +112,8 @@ adeno-reads100.fasta.000000708/L	0	100	F	gi|9632547|ref|NC_002077.1|	2208	2308	1
 adeno-reads100.fasta.000000708/R	0	100	R	gi|9632547|ref|NC_002077.1|	2376	2476	98	41	-2	-268
 adeno-reads100.fasta.000000735/L	0	100	F	gi|9632547|ref|NC_002077.1|	3424	3524	100	15	-1	260
 adeno-reads100.fasta.000000735/R	0	100	R	gi|9632547|ref|NC_002077.1|	3584	3684	99	15	-1	-260
-adeno-reads100.fasta.000000739/L	0	100	F	gi|9632547|ref|NC_002077.1|	2797	2897	99	10	-7	269
-adeno-reads100.fasta.000000739/R	0	100	R	gi|9632547|ref|NC_002077.1|	2971	3066	94	10	-7	-269
+adeno-reads100.fasta.000000739/L	0	100	F	gi|9632547|ref|NC_002077.1|	2797	2897	99	13	-7	269
+adeno-reads100.fasta.000000739/R	0	100	R	gi|9632547|ref|NC_002077.1|	2971	3066	94	13	-7	-269
 adeno-reads100.fasta.000000749/L	0	100	R	gi|9632547|ref|NC_002077.1|	844	944	100	68	-1	-263
 adeno-reads100.fasta.000000749/R	0	100	F	gi|9632547|ref|NC_002077.1|	681	781	99	68	-1	263
 adeno-reads100.fasta.000000751/L	0	100	R	gi|9632547|ref|NC_002077.1|	1889	1989	100	53	0	-268
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-i94-tc0.razers b/apps/razers3/tests/pe-adeno-reads100_2-i94-tc0.razers
index 142e4e1..0a97b16 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-i94-tc0.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-i94-tc0.razers
@@ -1,17 +1,17 @@
-adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	28	-6	265
-adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	28	-6	-265
+adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	29	-6	265
+adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	29	-6	-265
 adeno-reads100.fasta.000000008/L	0	100	F	gi|9632547|ref|NC_002077.1|	4188	4289	98	43	-2	268
 adeno-reads100.fasta.000000008/R	0	100	R	gi|9632547|ref|NC_002077.1|	4356	4456	100	43	-2	-268
 adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	100	46	0	-253
 adeno-reads100.fasta.000000010/R	0	100	F	gi|9632547|ref|NC_002077.1|	4295	4395	100	46	0	253
 adeno-reads100.fasta.000000027/L	0	100	F	gi|9632547|ref|NC_002077.1|	2176	2276	99	20	-3	230
 adeno-reads100.fasta.000000027/R	0	100	R	gi|9632547|ref|NC_002077.1|	2306	2406	98	20	-3	-230
-adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	26	-6	264
-adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	26	-6	-264
+adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	27	-6	264
+adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	27	-6	-264
 adeno-reads100.fasta.000000082/L	0	100	F	gi|9632547|ref|NC_002077.1|	1397	1497	100	15	-1	261
 adeno-reads100.fasta.000000082/R	0	100	R	gi|9632547|ref|NC_002077.1|	1558	1658	99	15	-1	-261
-adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	27	-5	268
-adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	27	-5	-268
+adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	28	-5	268
+adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	28	-5	-268
 adeno-reads100.fasta.000000119/L	0	100	R	gi|9632547|ref|NC_002077.1|	3446	3546	100	55	0	-249
 adeno-reads100.fasta.000000119/R	0	100	F	gi|9632547|ref|NC_002077.1|	3297	3397	100	55	0	249
 adeno-reads100.fasta.000000120/L	0	100	F	gi|9632547|ref|NC_002077.1|	2479	2579	99	23	-2	265
@@ -112,8 +112,8 @@ adeno-reads100.fasta.000000708/L	0	100	F	gi|9632547|ref|NC_002077.1|	2208	2308	1
 adeno-reads100.fasta.000000708/R	0	100	R	gi|9632547|ref|NC_002077.1|	2376	2476	98	21	-2	-268
 adeno-reads100.fasta.000000735/L	0	100	F	gi|9632547|ref|NC_002077.1|	3424	3524	100	35	-1	260
 adeno-reads100.fasta.000000735/R	0	100	R	gi|9632547|ref|NC_002077.1|	3584	3684	99	35	-1	-260
-adeno-reads100.fasta.000000739/L	0	100	F	gi|9632547|ref|NC_002077.1|	2797	2897	99	29	-7	269
-adeno-reads100.fasta.000000739/R	0	100	R	gi|9632547|ref|NC_002077.1|	2971	3066	94	29	-7	-269
+adeno-reads100.fasta.000000739/L	0	100	F	gi|9632547|ref|NC_002077.1|	2797	2897	99	26	-7	269
+adeno-reads100.fasta.000000739/R	0	100	R	gi|9632547|ref|NC_002077.1|	2971	3066	94	26	-7	-269
 adeno-reads100.fasta.000000749/L	0	100	R	gi|9632547|ref|NC_002077.1|	844	944	100	74	-1	-263
 adeno-reads100.fasta.000000749/R	0	100	F	gi|9632547|ref|NC_002077.1|	681	781	99	74	-1	263
 adeno-reads100.fasta.000000751/L	0	100	R	gi|9632547|ref|NC_002077.1|	1889	1989	100	67	0	-268
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-i94-tc1.razers b/apps/razers3/tests/pe-adeno-reads100_2-i94-tc1.razers
index 4ab2fa5..09c2eb5 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-i94-tc1.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-i94-tc1.razers
@@ -1,17 +1,17 @@
-adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	11	-6	265
-adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	11	-6	-265
+adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	10	-6	265
+adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	10	-6	-265
 adeno-reads100.fasta.000000008/L	0	100	F	gi|9632547|ref|NC_002077.1|	4188	4289	98	44	-2	268
 adeno-reads100.fasta.000000008/R	0	100	R	gi|9632547|ref|NC_002077.1|	4356	4456	100	44	-2	-268
 adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	100	56	0	-253
 adeno-reads100.fasta.000000010/R	0	100	F	gi|9632547|ref|NC_002077.1|	4295	4395	100	56	0	253
 adeno-reads100.fasta.000000027/L	0	100	F	gi|9632547|ref|NC_002077.1|	2176	2276	99	9	-3	230
 adeno-reads100.fasta.000000027/R	0	100	R	gi|9632547|ref|NC_002077.1|	2306	2406	98	9	-3	-230
-adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	30	-6	264
-adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	30	-6	-264
+adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	29	-6	264
+adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	29	-6	-264
 adeno-reads100.fasta.000000082/L	0	100	F	gi|9632547|ref|NC_002077.1|	1397	1497	100	23	-1	261
 adeno-reads100.fasta.000000082/R	0	100	R	gi|9632547|ref|NC_002077.1|	1558	1658	99	23	-1	-261
-adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	29	-5	268
-adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	29	-5	-268
+adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	30	-5	268
+adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	30	-5	-268
 adeno-reads100.fasta.000000119/L	0	100	R	gi|9632547|ref|NC_002077.1|	3446	3546	100	48	0	-249
 adeno-reads100.fasta.000000119/R	0	100	F	gi|9632547|ref|NC_002077.1|	3297	3397	100	48	0	249
 adeno-reads100.fasta.000000120/L	0	100	F	gi|9632547|ref|NC_002077.1|	2479	2579	99	42	-2	265
@@ -62,8 +62,8 @@ adeno-reads100.fasta.000000464/L	0	100	F	gi|9632547|ref|NC_002077.1|	4095	4195	1
 adeno-reads100.fasta.000000464/R	0	100	R	gi|9632547|ref|NC_002077.1|	4261	4361	99	43	-1	-266
 adeno-reads100.fasta.000000465/L	0	100	R	gi|9632547|ref|NC_002077.1|	1724	1824	100	67	-3	-265
 adeno-reads100.fasta.000000465/R	0	100	F	gi|9632547|ref|NC_002077.1|	1559	1658	97	67	-3	265
-adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	12	-4	242
-adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	12	-4	-242
+adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	11	-4	242
+adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	11	-4	-242
 adeno-reads100.fasta.000000499/L	0	100	F	gi|9632547|ref|NC_002077.1|	446	546	100	0	-1	266
 adeno-reads100.fasta.000000499/R	0	100	R	gi|9632547|ref|NC_002077.1|	612	712	99	0	-1	-266
 adeno-reads100.fasta.000000503/L	0	100	R	gi|9632547|ref|NC_002077.1|	2298	2398	99	50	-2	-270
@@ -112,8 +112,8 @@ adeno-reads100.fasta.000000708/L	0	100	F	gi|9632547|ref|NC_002077.1|	2208	2308	1
 adeno-reads100.fasta.000000708/R	0	100	R	gi|9632547|ref|NC_002077.1|	2376	2476	98	41	-2	-268
 adeno-reads100.fasta.000000735/L	0	100	F	gi|9632547|ref|NC_002077.1|	3424	3524	100	15	-1	260
 adeno-reads100.fasta.000000735/R	0	100	R	gi|9632547|ref|NC_002077.1|	3584	3684	99	15	-1	-260
-adeno-reads100.fasta.000000739/L	0	100	F	gi|9632547|ref|NC_002077.1|	2797	2897	99	10	-7	269
-adeno-reads100.fasta.000000739/R	0	100	R	gi|9632547|ref|NC_002077.1|	2971	3066	94	10	-7	-269
+adeno-reads100.fasta.000000739/L	0	100	F	gi|9632547|ref|NC_002077.1|	2797	2897	99	12	-7	269
+adeno-reads100.fasta.000000739/R	0	100	R	gi|9632547|ref|NC_002077.1|	2971	3066	94	12	-7	-269
 adeno-reads100.fasta.000000749/L	0	100	R	gi|9632547|ref|NC_002077.1|	844	944	100	68	-1	-263
 adeno-reads100.fasta.000000749/R	0	100	F	gi|9632547|ref|NC_002077.1|	681	781	99	68	-1	263
 adeno-reads100.fasta.000000751/L	0	100	R	gi|9632547|ref|NC_002077.1|	1889	1989	100	53	0	-268
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-i95-tc0.razers b/apps/razers3/tests/pe-adeno-reads100_2-i95-tc0.razers
index 8c36963..aee2fc9 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-i95-tc0.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-i95-tc0.razers
@@ -1,5 +1,5 @@
-adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	27	-6	265
-adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	27	-6	-265
+adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	26	-6	265
+adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	26	-6	-265
 adeno-reads100.fasta.000000008/L	0	100	F	gi|9632547|ref|NC_002077.1|	4188	4289	98	42	-2	268
 adeno-reads100.fasta.000000008/R	0	100	R	gi|9632547|ref|NC_002077.1|	4356	4456	100	42	-2	-268
 adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	100	45	0	-253
@@ -10,8 +10,8 @@ adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	9
 adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	30	-6	-264
 adeno-reads100.fasta.000000082/L	0	100	F	gi|9632547|ref|NC_002077.1|	1397	1497	100	15	-1	261
 adeno-reads100.fasta.000000082/R	0	100	R	gi|9632547|ref|NC_002077.1|	1558	1658	99	15	-1	-261
-adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	26	-5	268
-adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	26	-5	-268
+adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	27	-5	268
+adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	27	-5	-268
 adeno-reads100.fasta.000000119/L	0	100	R	gi|9632547|ref|NC_002077.1|	3446	3546	100	54	0	-249
 adeno-reads100.fasta.000000119/R	0	100	F	gi|9632547|ref|NC_002077.1|	3297	3397	100	54	0	249
 adeno-reads100.fasta.000000120/L	0	100	F	gi|9632547|ref|NC_002077.1|	2479	2579	99	23	-2	265
@@ -32,14 +32,14 @@ adeno-reads100.fasta.000000260/L	0	100	R	gi|9632547|ref|NC_002077.1|	3438	3538	1
 adeno-reads100.fasta.000000260/R	0	100	F	gi|9632547|ref|NC_002077.1|	3268	3368	99	55	-1	270
 adeno-reads100.fasta.000000265/L	0	100	F	gi|9632547|ref|NC_002077.1|	3465	3565	100	36	0	269
 adeno-reads100.fasta.000000265/R	0	100	R	gi|9632547|ref|NC_002077.1|	3634	3734	100	36	0	-269
-adeno-reads100.fasta.000000291/L	0	100	R	gi|9632547|ref|NC_002077.1|	4113	4213	99	50	-2	-270
-adeno-reads100.fasta.000000291/R	0	100	F	gi|9632547|ref|NC_002077.1|	3943	4044	99	50	-2	270
-adeno-reads100.fasta.000000296/L	0	100	R	gi|9632547|ref|NC_002077.1|	4085	4185	99	49	-1	-260
-adeno-reads100.fasta.000000296/R	0	100	F	gi|9632547|ref|NC_002077.1|	3925	4025	100	49	-1	260
+adeno-reads100.fasta.000000291/L	0	100	R	gi|9632547|ref|NC_002077.1|	4113	4213	99	49	-2	-270
+adeno-reads100.fasta.000000291/R	0	100	F	gi|9632547|ref|NC_002077.1|	3943	4044	99	49	-2	270
+adeno-reads100.fasta.000000296/L	0	100	R	gi|9632547|ref|NC_002077.1|	4085	4185	99	50	-1	-260
+adeno-reads100.fasta.000000296/R	0	100	F	gi|9632547|ref|NC_002077.1|	3925	4025	100	50	-1	260
 adeno-reads100.fasta.000000297/L	0	100	R	gi|9632547|ref|NC_002077.1|	4310	4411	98	47	-3	-267
 adeno-reads100.fasta.000000297/R	0	100	F	gi|9632547|ref|NC_002077.1|	4144	4244	99	47	-3	267
-adeno-reads100.fasta.000000319/L	0	100	F	gi|9632547|ref|NC_002077.1|	1151	1251	98	14	-5	260
-adeno-reads100.fasta.000000319/R	0	100	R	gi|9632547|ref|NC_002077.1|	1308	1411	97	14	-5	-260
+adeno-reads100.fasta.000000319/L	0	100	F	gi|9632547|ref|NC_002077.1|	1151	1251	98	13	-5	260
+adeno-reads100.fasta.000000319/R	0	100	R	gi|9632547|ref|NC_002077.1|	1308	1411	97	13	-5	-260
 adeno-reads100.fasta.000000360/L	0	100	R	gi|9632547|ref|NC_002077.1|	1879	1980	99	67	-1	-268
 adeno-reads100.fasta.000000360/R	0	100	F	gi|9632547|ref|NC_002077.1|	1712	1812	100	67	-1	268
 adeno-reads100.fasta.000000362/L	0	100	F	gi|9632547|ref|NC_002077.1|	658	758	100	5	-1	269
@@ -90,8 +90,8 @@ adeno-reads100.fasta.000000616/L	0	100	R	gi|9632547|ref|NC_002077.1|	2215	2316	9
 adeno-reads100.fasta.000000616/R	0	100	F	gi|9632547|ref|NC_002077.1|	2049	2148	98	63	-4	267
 adeno-reads100.fasta.000000633/L	0	100	F	gi|9632547|ref|NC_002077.1|	3100	3200	100	31	0	257
 adeno-reads100.fasta.000000633/R	0	100	R	gi|9632547|ref|NC_002077.1|	3257	3357	100	31	0	-257
-adeno-reads100.fasta.000000644/L	0	100	F	gi|9632547|ref|NC_002077.1|	1164	1264	100	13	-4	256
-adeno-reads100.fasta.000000644/R	0	100	R	gi|9632547|ref|NC_002077.1|	1317	1420	96	13	-4	-256
+adeno-reads100.fasta.000000644/L	0	100	F	gi|9632547|ref|NC_002077.1|	1164	1264	100	14	-4	256
+adeno-reads100.fasta.000000644/R	0	100	R	gi|9632547|ref|NC_002077.1|	1317	1420	96	14	-4	-256
 adeno-reads100.fasta.000000653/L	0	100	F	gi|9632547|ref|NC_002077.1|	4219	4319	99	43	-2	265
 adeno-reads100.fasta.000000653/R	0	100	R	gi|9632547|ref|NC_002077.1|	4383	4484	99	43	-2	-265
 adeno-reads100.fasta.000000658/L	0	100	F	gi|9632547|ref|NC_002077.1|	2757	2857	99	25	-3	264
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-i95-tc1.razers b/apps/razers3/tests/pe-adeno-reads100_2-i95-tc1.razers
index 2612489..e3e45f3 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-i95-tc1.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-i95-tc1.razers
@@ -6,12 +6,12 @@ adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	1
 adeno-reads100.fasta.000000010/R	0	100	F	gi|9632547|ref|NC_002077.1|	4295	4395	100	55	0	253
 adeno-reads100.fasta.000000027/L	0	100	F	gi|9632547|ref|NC_002077.1|	2176	2276	99	9	-3	230
 adeno-reads100.fasta.000000027/R	0	100	R	gi|9632547|ref|NC_002077.1|	2306	2406	98	9	-3	-230
-adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	29	-6	264
-adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	29	-6	-264
+adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	28	-6	264
+adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	28	-6	-264
 adeno-reads100.fasta.000000082/L	0	100	F	gi|9632547|ref|NC_002077.1|	1397	1497	100	22	-1	261
 adeno-reads100.fasta.000000082/R	0	100	R	gi|9632547|ref|NC_002077.1|	1558	1658	99	22	-1	-261
-adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	28	-5	268
-adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	28	-5	-268
+adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	29	-5	268
+adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	29	-5	-268
 adeno-reads100.fasta.000000119/L	0	100	R	gi|9632547|ref|NC_002077.1|	3446	3546	100	47	0	-249
 adeno-reads100.fasta.000000119/R	0	100	F	gi|9632547|ref|NC_002077.1|	3297	3397	100	47	0	249
 adeno-reads100.fasta.000000120/L	0	100	F	gi|9632547|ref|NC_002077.1|	2479	2579	99	41	-2	265
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-i96-tc0.razers b/apps/razers3/tests/pe-adeno-reads100_2-i96-tc0.razers
index 094c91e..141552f 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-i96-tc0.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-i96-tc0.razers
@@ -1,5 +1,5 @@
-adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	29	-6	265
-adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	29	-6	-265
+adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	27	-6	265
+adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	27	-6	-265
 adeno-reads100.fasta.000000008/L	0	100	F	gi|9632547|ref|NC_002077.1|	4188	4289	98	41	-2	268
 adeno-reads100.fasta.000000008/R	0	100	R	gi|9632547|ref|NC_002077.1|	4356	4456	100	41	-2	-268
 adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	100	44	0	-253
@@ -36,8 +36,8 @@ adeno-reads100.fasta.000000296/L	0	100	R	gi|9632547|ref|NC_002077.1|	4085	4185	9
 adeno-reads100.fasta.000000296/R	0	100	F	gi|9632547|ref|NC_002077.1|	3925	4025	100	48	-1	260
 adeno-reads100.fasta.000000297/L	0	100	R	gi|9632547|ref|NC_002077.1|	4310	4411	98	46	-3	-267
 adeno-reads100.fasta.000000297/R	0	100	F	gi|9632547|ref|NC_002077.1|	4144	4244	99	46	-3	267
-adeno-reads100.fasta.000000319/L	0	100	F	gi|9632547|ref|NC_002077.1|	1151	1251	98	14	-5	260
-adeno-reads100.fasta.000000319/R	0	100	R	gi|9632547|ref|NC_002077.1|	1308	1411	97	14	-5	-260
+adeno-reads100.fasta.000000319/L	0	100	F	gi|9632547|ref|NC_002077.1|	1151	1251	98	13	-5	260
+adeno-reads100.fasta.000000319/R	0	100	R	gi|9632547|ref|NC_002077.1|	1308	1411	97	13	-5	-260
 adeno-reads100.fasta.000000360/L	0	100	R	gi|9632547|ref|NC_002077.1|	1879	1980	99	66	-1	-268
 adeno-reads100.fasta.000000360/R	0	100	F	gi|9632547|ref|NC_002077.1|	1712	1812	100	66	-1	268
 adeno-reads100.fasta.000000362/L	0	100	F	gi|9632547|ref|NC_002077.1|	658	758	100	5	-1	269
@@ -50,8 +50,8 @@ adeno-reads100.fasta.000000390/L	0	100	F	gi|9632547|ref|NC_002077.1|	2120	2220	9
 adeno-reads100.fasta.000000390/R	0	100	R	gi|9632547|ref|NC_002077.1|	2275	2375	99	19	-2	-255
 adeno-reads100.fasta.000000404/L	0	100	R	gi|9632547|ref|NC_002077.1|	1569	1669	99	69	-1	-268
 adeno-reads100.fasta.000000404/R	0	100	F	gi|9632547|ref|NC_002077.1|	1401	1501	100	69	-1	268
-adeno-reads100.fasta.000000411/L	0	100	F	gi|9632547|ref|NC_002077.1|	2865	2965	98	27	-2	262
-adeno-reads100.fasta.000000411/R	0	100	R	gi|9632547|ref|NC_002077.1|	3027	3127	100	27	-2	-262
+adeno-reads100.fasta.000000411/L	0	100	F	gi|9632547|ref|NC_002077.1|	2865	2965	98	28	-2	262
+adeno-reads100.fasta.000000411/R	0	100	R	gi|9632547|ref|NC_002077.1|	3027	3127	100	28	-2	-262
 adeno-reads100.fasta.000000414/L	0	100	F	gi|9632547|ref|NC_002077.1|	765	865	98	8	-2	268
 adeno-reads100.fasta.000000414/R	0	100	R	gi|9632547|ref|NC_002077.1|	933	1033	100	8	-2	-268
 adeno-reads100.fasta.000000443/L	0	100	F	gi|9632547|ref|NC_002077.1|	1714	1812	98	17	-2	261
@@ -60,8 +60,8 @@ adeno-reads100.fasta.000000464/L	0	100	F	gi|9632547|ref|NC_002077.1|	4095	4195	1
 adeno-reads100.fasta.000000464/R	0	100	R	gi|9632547|ref|NC_002077.1|	4261	4361	99	40	-1	-266
 adeno-reads100.fasta.000000465/L	0	100	R	gi|9632547|ref|NC_002077.1|	1724	1824	100	68	-3	-265
 adeno-reads100.fasta.000000465/R	0	100	F	gi|9632547|ref|NC_002077.1|	1559	1658	97	68	-3	265
-adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	28	-4	242
-adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	28	-4	-242
+adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	29	-4	242
+adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	29	-4	-242
 adeno-reads100.fasta.000000499/L	0	100	F	gi|9632547|ref|NC_002077.1|	446	546	100	2	-1	266
 adeno-reads100.fasta.000000499/R	0	100	R	gi|9632547|ref|NC_002077.1|	612	712	99	2	-1	-266
 adeno-reads100.fasta.000000503/L	0	100	R	gi|9632547|ref|NC_002077.1|	2298	2398	99	61	-2	-270
@@ -88,8 +88,8 @@ adeno-reads100.fasta.000000616/L	0	100	R	gi|9632547|ref|NC_002077.1|	2215	2316	9
 adeno-reads100.fasta.000000616/R	0	100	F	gi|9632547|ref|NC_002077.1|	2049	2148	98	62	-4	267
 adeno-reads100.fasta.000000633/L	0	100	F	gi|9632547|ref|NC_002077.1|	3100	3200	100	30	0	257
 adeno-reads100.fasta.000000633/R	0	100	R	gi|9632547|ref|NC_002077.1|	3257	3357	100	30	0	-257
-adeno-reads100.fasta.000000644/L	0	100	F	gi|9632547|ref|NC_002077.1|	1164	1264	100	13	-4	256
-adeno-reads100.fasta.000000644/R	0	100	R	gi|9632547|ref|NC_002077.1|	1317	1420	96	13	-4	-256
+adeno-reads100.fasta.000000644/L	0	100	F	gi|9632547|ref|NC_002077.1|	1164	1264	100	14	-4	256
+adeno-reads100.fasta.000000644/R	0	100	R	gi|9632547|ref|NC_002077.1|	1317	1420	96	14	-4	-256
 adeno-reads100.fasta.000000653/L	0	100	F	gi|9632547|ref|NC_002077.1|	4219	4319	99	42	-2	265
 adeno-reads100.fasta.000000653/R	0	100	R	gi|9632547|ref|NC_002077.1|	4383	4484	99	42	-2	-265
 adeno-reads100.fasta.000000658/L	0	100	F	gi|9632547|ref|NC_002077.1|	2757	2857	99	25	-3	264
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-i96-tc1.razers b/apps/razers3/tests/pe-adeno-reads100_2-i96-tc1.razers
index 11af41e..aa41569 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-i96-tc1.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-i96-tc1.razers
@@ -1,5 +1,5 @@
-adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	12	-6	265
-adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	12	-6	-265
+adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	10	-6	265
+adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	10	-6	-265
 adeno-reads100.fasta.000000008/L	0	100	F	gi|9632547|ref|NC_002077.1|	4188	4289	98	42	-2	268
 adeno-reads100.fasta.000000008/R	0	100	R	gi|9632547|ref|NC_002077.1|	4356	4456	100	42	-2	-268
 adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	100	54	0	-253
@@ -50,8 +50,8 @@ adeno-reads100.fasta.000000390/L	0	100	F	gi|9632547|ref|NC_002077.1|	2120	2220	9
 adeno-reads100.fasta.000000390/R	0	100	R	gi|9632547|ref|NC_002077.1|	2275	2375	99	23	-2	-255
 adeno-reads100.fasta.000000404/L	0	100	R	gi|9632547|ref|NC_002077.1|	1569	1669	99	73	-1	-268
 adeno-reads100.fasta.000000404/R	0	100	F	gi|9632547|ref|NC_002077.1|	1401	1501	100	73	-1	268
-adeno-reads100.fasta.000000411/L	0	100	F	gi|9632547|ref|NC_002077.1|	2865	2965	98	10	-2	262
-adeno-reads100.fasta.000000411/R	0	100	R	gi|9632547|ref|NC_002077.1|	3027	3127	100	10	-2	-262
+adeno-reads100.fasta.000000411/L	0	100	F	gi|9632547|ref|NC_002077.1|	2865	2965	98	11	-2	262
+adeno-reads100.fasta.000000411/R	0	100	R	gi|9632547|ref|NC_002077.1|	3027	3127	100	11	-2	-262
 adeno-reads100.fasta.000000414/L	0	100	F	gi|9632547|ref|NC_002077.1|	765	865	98	20	-2	268
 adeno-reads100.fasta.000000414/R	0	100	R	gi|9632547|ref|NC_002077.1|	933	1033	100	20	-2	-268
 adeno-reads100.fasta.000000443/L	0	100	F	gi|9632547|ref|NC_002077.1|	1714	1812	98	7	-2	261
@@ -60,8 +60,8 @@ adeno-reads100.fasta.000000464/L	0	100	F	gi|9632547|ref|NC_002077.1|	4095	4195	1
 adeno-reads100.fasta.000000464/R	0	100	R	gi|9632547|ref|NC_002077.1|	4261	4361	99	41	-1	-266
 adeno-reads100.fasta.000000465/L	0	100	R	gi|9632547|ref|NC_002077.1|	1724	1824	100	65	-3	-265
 adeno-reads100.fasta.000000465/R	0	100	F	gi|9632547|ref|NC_002077.1|	1559	1658	97	65	-3	265
-adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	11	-4	242
-adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	11	-4	-242
+adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	12	-4	242
+adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	12	-4	-242
 adeno-reads100.fasta.000000499/L	0	100	F	gi|9632547|ref|NC_002077.1|	446	546	100	0	-1	266
 adeno-reads100.fasta.000000499/R	0	100	R	gi|9632547|ref|NC_002077.1|	612	712	99	0	-1	-266
 adeno-reads100.fasta.000000503/L	0	100	R	gi|9632547|ref|NC_002077.1|	2298	2398	99	48	-2	-270
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-of0-tc0.razers b/apps/razers3/tests/pe-adeno-reads100_2-of0-tc0.razers
index 8c36963..aee2fc9 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-of0-tc0.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-of0-tc0.razers
@@ -1,5 +1,5 @@
-adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	27	-6	265
-adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	27	-6	-265
+adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	26	-6	265
+adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	26	-6	-265
 adeno-reads100.fasta.000000008/L	0	100	F	gi|9632547|ref|NC_002077.1|	4188	4289	98	42	-2	268
 adeno-reads100.fasta.000000008/R	0	100	R	gi|9632547|ref|NC_002077.1|	4356	4456	100	42	-2	-268
 adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	100	45	0	-253
@@ -10,8 +10,8 @@ adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	9
 adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	30	-6	-264
 adeno-reads100.fasta.000000082/L	0	100	F	gi|9632547|ref|NC_002077.1|	1397	1497	100	15	-1	261
 adeno-reads100.fasta.000000082/R	0	100	R	gi|9632547|ref|NC_002077.1|	1558	1658	99	15	-1	-261
-adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	26	-5	268
-adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	26	-5	-268
+adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	27	-5	268
+adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	27	-5	-268
 adeno-reads100.fasta.000000119/L	0	100	R	gi|9632547|ref|NC_002077.1|	3446	3546	100	54	0	-249
 adeno-reads100.fasta.000000119/R	0	100	F	gi|9632547|ref|NC_002077.1|	3297	3397	100	54	0	249
 adeno-reads100.fasta.000000120/L	0	100	F	gi|9632547|ref|NC_002077.1|	2479	2579	99	23	-2	265
@@ -32,14 +32,14 @@ adeno-reads100.fasta.000000260/L	0	100	R	gi|9632547|ref|NC_002077.1|	3438	3538	1
 adeno-reads100.fasta.000000260/R	0	100	F	gi|9632547|ref|NC_002077.1|	3268	3368	99	55	-1	270
 adeno-reads100.fasta.000000265/L	0	100	F	gi|9632547|ref|NC_002077.1|	3465	3565	100	36	0	269
 adeno-reads100.fasta.000000265/R	0	100	R	gi|9632547|ref|NC_002077.1|	3634	3734	100	36	0	-269
-adeno-reads100.fasta.000000291/L	0	100	R	gi|9632547|ref|NC_002077.1|	4113	4213	99	50	-2	-270
-adeno-reads100.fasta.000000291/R	0	100	F	gi|9632547|ref|NC_002077.1|	3943	4044	99	50	-2	270
-adeno-reads100.fasta.000000296/L	0	100	R	gi|9632547|ref|NC_002077.1|	4085	4185	99	49	-1	-260
-adeno-reads100.fasta.000000296/R	0	100	F	gi|9632547|ref|NC_002077.1|	3925	4025	100	49	-1	260
+adeno-reads100.fasta.000000291/L	0	100	R	gi|9632547|ref|NC_002077.1|	4113	4213	99	49	-2	-270
+adeno-reads100.fasta.000000291/R	0	100	F	gi|9632547|ref|NC_002077.1|	3943	4044	99	49	-2	270
+adeno-reads100.fasta.000000296/L	0	100	R	gi|9632547|ref|NC_002077.1|	4085	4185	99	50	-1	-260
+adeno-reads100.fasta.000000296/R	0	100	F	gi|9632547|ref|NC_002077.1|	3925	4025	100	50	-1	260
 adeno-reads100.fasta.000000297/L	0	100	R	gi|9632547|ref|NC_002077.1|	4310	4411	98	47	-3	-267
 adeno-reads100.fasta.000000297/R	0	100	F	gi|9632547|ref|NC_002077.1|	4144	4244	99	47	-3	267
-adeno-reads100.fasta.000000319/L	0	100	F	gi|9632547|ref|NC_002077.1|	1151	1251	98	14	-5	260
-adeno-reads100.fasta.000000319/R	0	100	R	gi|9632547|ref|NC_002077.1|	1308	1411	97	14	-5	-260
+adeno-reads100.fasta.000000319/L	0	100	F	gi|9632547|ref|NC_002077.1|	1151	1251	98	13	-5	260
+adeno-reads100.fasta.000000319/R	0	100	R	gi|9632547|ref|NC_002077.1|	1308	1411	97	13	-5	-260
 adeno-reads100.fasta.000000360/L	0	100	R	gi|9632547|ref|NC_002077.1|	1879	1980	99	67	-1	-268
 adeno-reads100.fasta.000000360/R	0	100	F	gi|9632547|ref|NC_002077.1|	1712	1812	100	67	-1	268
 adeno-reads100.fasta.000000362/L	0	100	F	gi|9632547|ref|NC_002077.1|	658	758	100	5	-1	269
@@ -90,8 +90,8 @@ adeno-reads100.fasta.000000616/L	0	100	R	gi|9632547|ref|NC_002077.1|	2215	2316	9
 adeno-reads100.fasta.000000616/R	0	100	F	gi|9632547|ref|NC_002077.1|	2049	2148	98	63	-4	267
 adeno-reads100.fasta.000000633/L	0	100	F	gi|9632547|ref|NC_002077.1|	3100	3200	100	31	0	257
 adeno-reads100.fasta.000000633/R	0	100	R	gi|9632547|ref|NC_002077.1|	3257	3357	100	31	0	-257
-adeno-reads100.fasta.000000644/L	0	100	F	gi|9632547|ref|NC_002077.1|	1164	1264	100	13	-4	256
-adeno-reads100.fasta.000000644/R	0	100	R	gi|9632547|ref|NC_002077.1|	1317	1420	96	13	-4	-256
+adeno-reads100.fasta.000000644/L	0	100	F	gi|9632547|ref|NC_002077.1|	1164	1264	100	14	-4	256
+adeno-reads100.fasta.000000644/R	0	100	R	gi|9632547|ref|NC_002077.1|	1317	1420	96	14	-4	-256
 adeno-reads100.fasta.000000653/L	0	100	F	gi|9632547|ref|NC_002077.1|	4219	4319	99	43	-2	265
 adeno-reads100.fasta.000000653/R	0	100	R	gi|9632547|ref|NC_002077.1|	4383	4484	99	43	-2	-265
 adeno-reads100.fasta.000000658/L	0	100	F	gi|9632547|ref|NC_002077.1|	2757	2857	99	25	-3	264
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-of0-tc1.razers b/apps/razers3/tests/pe-adeno-reads100_2-of0-tc1.razers
index 2612489..e3e45f3 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-of0-tc1.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-of0-tc1.razers
@@ -6,12 +6,12 @@ adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	1
 adeno-reads100.fasta.000000010/R	0	100	F	gi|9632547|ref|NC_002077.1|	4295	4395	100	55	0	253
 adeno-reads100.fasta.000000027/L	0	100	F	gi|9632547|ref|NC_002077.1|	2176	2276	99	9	-3	230
 adeno-reads100.fasta.000000027/R	0	100	R	gi|9632547|ref|NC_002077.1|	2306	2406	98	9	-3	-230
-adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	29	-6	264
-adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	29	-6	-264
+adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	28	-6	264
+adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	28	-6	-264
 adeno-reads100.fasta.000000082/L	0	100	F	gi|9632547|ref|NC_002077.1|	1397	1497	100	22	-1	261
 adeno-reads100.fasta.000000082/R	0	100	R	gi|9632547|ref|NC_002077.1|	1558	1658	99	22	-1	-261
-adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	28	-5	268
-adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	28	-5	-268
+adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	29	-5	268
+adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	29	-5	-268
 adeno-reads100.fasta.000000119/L	0	100	R	gi|9632547|ref|NC_002077.1|	3446	3546	100	47	0	-249
 adeno-reads100.fasta.000000119/R	0	100	F	gi|9632547|ref|NC_002077.1|	3297	3397	100	47	0	249
 adeno-reads100.fasta.000000120/L	0	100	F	gi|9632547|ref|NC_002077.1|	2479	2579	99	41	-2	265
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-of4-tc0.sam b/apps/razers3/tests/pe-adeno-reads100_2-of4-tc0.sam
index 6a590a4..be6cd35 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-of4-tc0.sam
+++ b/apps/razers3/tests/pe-adeno-reads100_2-of4-tc0.sam
@@ -1,5 +1,5 @@
 @HD	VN:1.4	SO:coordinate
- at PG	ID:razers3	VN:3.2[fffb824I	PN:razers3	CL:-tc 0 adeno-genome.fa adeno-reads100_1.fa adeno-reads100_2.fa -o pe-adeno-reads100_2-of4-tc0.sam
+ at PG	ID:razers3	VN:3.3	PN:razers3	CL:-tc 0 adeno-genome.fa adeno-reads100_1.fa adeno-reads100_2.fa -o pe-adeno-reads100_2-of4-tc0.sam
 @SQ	SN:gi|9632547|ref|NC_002077.1|	LN:4718
 adeno-reads100.fasta.000000007	99	gi|9632547|ref|NC_002077.1|	2828	255	41M1D57M1I1M	=	2997	265	AATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACATGGCTAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	MD:Z:41^A58
 adeno-reads100.fasta.000000007	147	gi|9632547|ref|NC_002077.1|	2997	255	19M2I1M2I76M	=	2828	-265	CAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTTCAACAGATTCCACTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	MD:Z:96
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-of4-tc1.sam b/apps/razers3/tests/pe-adeno-reads100_2-of4-tc1.sam
index 77256ae..5ba1631 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-of4-tc1.sam
+++ b/apps/razers3/tests/pe-adeno-reads100_2-of4-tc1.sam
@@ -1,5 +1,5 @@
 @HD	VN:1.4	SO:coordinate
- at PG	ID:razers3	VN:3.2[fffb824I	PN:razers3	CL:-tc 1 adeno-genome.fa adeno-reads100_1.fa adeno-reads100_2.fa -o pe-adeno-reads100_2-of4-tc1.sam
+ at PG	ID:razers3	VN:3.3	PN:razers3	CL:-tc 1 adeno-genome.fa adeno-reads100_1.fa adeno-reads100_2.fa -o pe-adeno-reads100_2-of4-tc1.sam
 @SQ	SN:gi|9632547|ref|NC_002077.1|	LN:4718
 adeno-reads100.fasta.000000007	99	gi|9632547|ref|NC_002077.1|	2828	255	41M1D57M1I1M	=	2997	265	AATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACATGGCTAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	MD:Z:41^A58
 adeno-reads100.fasta.000000007	147	gi|9632547|ref|NC_002077.1|	2997	255	19M2I1M2I76M	=	2828	-265	CAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTTCAACAGATTCCACTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	MD:Z:96
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-r-tc0.razers b/apps/razers3/tests/pe-adeno-reads100_2-r-tc0.razers
index 0d185f9..e119348 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-r-tc0.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-r-tc0.razers
@@ -6,10 +6,10 @@ adeno-reads100.fasta.000000137/L	0	100	R	gi|9632547|ref|NC_002077.1|	4093	4193	1
 adeno-reads100.fasta.000000137/R	0	100	F	gi|9632547|ref|NC_002077.1|	3924	4023	96	6	-4	269
 adeno-reads100.fasta.000000260/L	0	100	R	gi|9632547|ref|NC_002077.1|	3438	3538	100	10	-1	-270
 adeno-reads100.fasta.000000260/R	0	100	F	gi|9632547|ref|NC_002077.1|	3268	3368	99	10	-1	270
-adeno-reads100.fasta.000000291/L	0	100	R	gi|9632547|ref|NC_002077.1|	4113	4213	99	5	-2	-270
-adeno-reads100.fasta.000000291/R	0	100	F	gi|9632547|ref|NC_002077.1|	3943	4044	99	5	-2	270
-adeno-reads100.fasta.000000296/L	0	100	R	gi|9632547|ref|NC_002077.1|	4085	4185	99	4	-1	-260
-adeno-reads100.fasta.000000296/R	0	100	F	gi|9632547|ref|NC_002077.1|	3925	4025	100	4	-1	260
+adeno-reads100.fasta.000000291/L	0	100	R	gi|9632547|ref|NC_002077.1|	4113	4213	99	4	-2	-270
+adeno-reads100.fasta.000000291/R	0	100	F	gi|9632547|ref|NC_002077.1|	3943	4044	99	4	-2	270
+adeno-reads100.fasta.000000296/L	0	100	R	gi|9632547|ref|NC_002077.1|	4085	4185	99	5	-1	-260
+adeno-reads100.fasta.000000296/R	0	100	F	gi|9632547|ref|NC_002077.1|	3925	4025	100	5	-1	260
 adeno-reads100.fasta.000000297/L	0	100	R	gi|9632547|ref|NC_002077.1|	4310	4411	98	2	-3	-267
 adeno-reads100.fasta.000000297/R	0	100	F	gi|9632547|ref|NC_002077.1|	4144	4244	99	2	-3	267
 adeno-reads100.fasta.000000360/L	0	100	R	gi|9632547|ref|NC_002077.1|	1879	1980	99	22	-1	-268
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-so0-tc0.razers b/apps/razers3/tests/pe-adeno-reads100_2-so0-tc0.razers
index 8c36963..aee2fc9 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-so0-tc0.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-so0-tc0.razers
@@ -1,5 +1,5 @@
-adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	27	-6	265
-adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	27	-6	-265
+adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	26	-6	265
+adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	26	-6	-265
 adeno-reads100.fasta.000000008/L	0	100	F	gi|9632547|ref|NC_002077.1|	4188	4289	98	42	-2	268
 adeno-reads100.fasta.000000008/R	0	100	R	gi|9632547|ref|NC_002077.1|	4356	4456	100	42	-2	-268
 adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	100	45	0	-253
@@ -10,8 +10,8 @@ adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	9
 adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	30	-6	-264
 adeno-reads100.fasta.000000082/L	0	100	F	gi|9632547|ref|NC_002077.1|	1397	1497	100	15	-1	261
 adeno-reads100.fasta.000000082/R	0	100	R	gi|9632547|ref|NC_002077.1|	1558	1658	99	15	-1	-261
-adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	26	-5	268
-adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	26	-5	-268
+adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	27	-5	268
+adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	27	-5	-268
 adeno-reads100.fasta.000000119/L	0	100	R	gi|9632547|ref|NC_002077.1|	3446	3546	100	54	0	-249
 adeno-reads100.fasta.000000119/R	0	100	F	gi|9632547|ref|NC_002077.1|	3297	3397	100	54	0	249
 adeno-reads100.fasta.000000120/L	0	100	F	gi|9632547|ref|NC_002077.1|	2479	2579	99	23	-2	265
@@ -32,14 +32,14 @@ adeno-reads100.fasta.000000260/L	0	100	R	gi|9632547|ref|NC_002077.1|	3438	3538	1
 adeno-reads100.fasta.000000260/R	0	100	F	gi|9632547|ref|NC_002077.1|	3268	3368	99	55	-1	270
 adeno-reads100.fasta.000000265/L	0	100	F	gi|9632547|ref|NC_002077.1|	3465	3565	100	36	0	269
 adeno-reads100.fasta.000000265/R	0	100	R	gi|9632547|ref|NC_002077.1|	3634	3734	100	36	0	-269
-adeno-reads100.fasta.000000291/L	0	100	R	gi|9632547|ref|NC_002077.1|	4113	4213	99	50	-2	-270
-adeno-reads100.fasta.000000291/R	0	100	F	gi|9632547|ref|NC_002077.1|	3943	4044	99	50	-2	270
-adeno-reads100.fasta.000000296/L	0	100	R	gi|9632547|ref|NC_002077.1|	4085	4185	99	49	-1	-260
-adeno-reads100.fasta.000000296/R	0	100	F	gi|9632547|ref|NC_002077.1|	3925	4025	100	49	-1	260
+adeno-reads100.fasta.000000291/L	0	100	R	gi|9632547|ref|NC_002077.1|	4113	4213	99	49	-2	-270
+adeno-reads100.fasta.000000291/R	0	100	F	gi|9632547|ref|NC_002077.1|	3943	4044	99	49	-2	270
+adeno-reads100.fasta.000000296/L	0	100	R	gi|9632547|ref|NC_002077.1|	4085	4185	99	50	-1	-260
+adeno-reads100.fasta.000000296/R	0	100	F	gi|9632547|ref|NC_002077.1|	3925	4025	100	50	-1	260
 adeno-reads100.fasta.000000297/L	0	100	R	gi|9632547|ref|NC_002077.1|	4310	4411	98	47	-3	-267
 adeno-reads100.fasta.000000297/R	0	100	F	gi|9632547|ref|NC_002077.1|	4144	4244	99	47	-3	267
-adeno-reads100.fasta.000000319/L	0	100	F	gi|9632547|ref|NC_002077.1|	1151	1251	98	14	-5	260
-adeno-reads100.fasta.000000319/R	0	100	R	gi|9632547|ref|NC_002077.1|	1308	1411	97	14	-5	-260
+adeno-reads100.fasta.000000319/L	0	100	F	gi|9632547|ref|NC_002077.1|	1151	1251	98	13	-5	260
+adeno-reads100.fasta.000000319/R	0	100	R	gi|9632547|ref|NC_002077.1|	1308	1411	97	13	-5	-260
 adeno-reads100.fasta.000000360/L	0	100	R	gi|9632547|ref|NC_002077.1|	1879	1980	99	67	-1	-268
 adeno-reads100.fasta.000000360/R	0	100	F	gi|9632547|ref|NC_002077.1|	1712	1812	100	67	-1	268
 adeno-reads100.fasta.000000362/L	0	100	F	gi|9632547|ref|NC_002077.1|	658	758	100	5	-1	269
@@ -90,8 +90,8 @@ adeno-reads100.fasta.000000616/L	0	100	R	gi|9632547|ref|NC_002077.1|	2215	2316	9
 adeno-reads100.fasta.000000616/R	0	100	F	gi|9632547|ref|NC_002077.1|	2049	2148	98	63	-4	267
 adeno-reads100.fasta.000000633/L	0	100	F	gi|9632547|ref|NC_002077.1|	3100	3200	100	31	0	257
 adeno-reads100.fasta.000000633/R	0	100	R	gi|9632547|ref|NC_002077.1|	3257	3357	100	31	0	-257
-adeno-reads100.fasta.000000644/L	0	100	F	gi|9632547|ref|NC_002077.1|	1164	1264	100	13	-4	256
-adeno-reads100.fasta.000000644/R	0	100	R	gi|9632547|ref|NC_002077.1|	1317	1420	96	13	-4	-256
+adeno-reads100.fasta.000000644/L	0	100	F	gi|9632547|ref|NC_002077.1|	1164	1264	100	14	-4	256
+adeno-reads100.fasta.000000644/R	0	100	R	gi|9632547|ref|NC_002077.1|	1317	1420	96	14	-4	-256
 adeno-reads100.fasta.000000653/L	0	100	F	gi|9632547|ref|NC_002077.1|	4219	4319	99	43	-2	265
 adeno-reads100.fasta.000000653/R	0	100	R	gi|9632547|ref|NC_002077.1|	4383	4484	99	43	-2	-265
 adeno-reads100.fasta.000000658/L	0	100	F	gi|9632547|ref|NC_002077.1|	2757	2857	99	25	-3	264
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-so0-tc1.razers b/apps/razers3/tests/pe-adeno-reads100_2-so0-tc1.razers
index 2612489..e3e45f3 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-so0-tc1.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-so0-tc1.razers
@@ -6,12 +6,12 @@ adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	1
 adeno-reads100.fasta.000000010/R	0	100	F	gi|9632547|ref|NC_002077.1|	4295	4395	100	55	0	253
 adeno-reads100.fasta.000000027/L	0	100	F	gi|9632547|ref|NC_002077.1|	2176	2276	99	9	-3	230
 adeno-reads100.fasta.000000027/R	0	100	R	gi|9632547|ref|NC_002077.1|	2306	2406	98	9	-3	-230
-adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	29	-6	264
-adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	29	-6	-264
+adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	28	-6	264
+adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	28	-6	-264
 adeno-reads100.fasta.000000082/L	0	100	F	gi|9632547|ref|NC_002077.1|	1397	1497	100	22	-1	261
 adeno-reads100.fasta.000000082/R	0	100	R	gi|9632547|ref|NC_002077.1|	1558	1658	99	22	-1	-261
-adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	28	-5	268
-adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	28	-5	-268
+adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	29	-5	268
+adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	29	-5	-268
 adeno-reads100.fasta.000000119/L	0	100	R	gi|9632547|ref|NC_002077.1|	3446	3546	100	47	0	-249
 adeno-reads100.fasta.000000119/R	0	100	F	gi|9632547|ref|NC_002077.1|	3297	3397	100	47	0	249
 adeno-reads100.fasta.000000120/L	0	100	F	gi|9632547|ref|NC_002077.1|	2479	2579	99	41	-2	265
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-so1-tc0.razers b/apps/razers3/tests/pe-adeno-reads100_2-so1-tc0.razers
index e6ef6e8..dfcf4cb 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-so1-tc0.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-so1-tc0.razers
@@ -29,11 +29,11 @@ adeno-reads100.fasta.000000763/R	0	100	R	gi|9632547|ref|NC_002077.1|	1063	1163	9
 adeno-reads100.fasta.000000771/R	0	100	R	gi|9632547|ref|NC_002077.1|	1101	1201	100	10	0	-267
 adeno-reads100.fasta.000000566/L	0	100	R	gi|9632547|ref|NC_002077.1|	1109	1209	100	72	-1	-260
 adeno-reads100.fasta.000000902/R	0	100	R	gi|9632547|ref|NC_002077.1|	1128	1228	100	11	0	-257
-adeno-reads100.fasta.000000319/L	0	100	F	gi|9632547|ref|NC_002077.1|	1151	1251	98	14	-5	260
-adeno-reads100.fasta.000000644/L	0	100	F	gi|9632547|ref|NC_002077.1|	1164	1264	100	13	-4	256
+adeno-reads100.fasta.000000319/L	0	100	F	gi|9632547|ref|NC_002077.1|	1151	1251	98	13	-5	260
+adeno-reads100.fasta.000000644/L	0	100	F	gi|9632547|ref|NC_002077.1|	1164	1264	100	14	-4	256
 adeno-reads100.fasta.000000555/R	0	100	R	gi|9632547|ref|NC_002077.1|	1181	1281	98	12	-2	-262
-adeno-reads100.fasta.000000319/R	0	100	R	gi|9632547|ref|NC_002077.1|	1308	1411	97	14	-5	-260
-adeno-reads100.fasta.000000644/R	0	100	R	gi|9632547|ref|NC_002077.1|	1317	1420	96	13	-4	-256
+adeno-reads100.fasta.000000319/R	0	100	R	gi|9632547|ref|NC_002077.1|	1308	1411	97	13	-5	-260
+adeno-reads100.fasta.000000644/R	0	100	R	gi|9632547|ref|NC_002077.1|	1317	1420	96	14	-4	-256
 adeno-reads100.fasta.000000082/L	0	100	F	gi|9632547|ref|NC_002077.1|	1397	1497	100	15	-1	261
 adeno-reads100.fasta.000000535/R	0	100	F	gi|9632547|ref|NC_002077.1|	1400	1500	100	71	-1	263
 adeno-reads100.fasta.000000404/R	0	100	F	gi|9632547|ref|NC_002077.1|	1401	1501	100	70	-1	268
@@ -83,15 +83,15 @@ adeno-reads100.fasta.000000753/L	0	100	R	gi|9632547|ref|NC_002077.1|	2730	2830	1
 adeno-reads100.fasta.000000658/L	0	100	F	gi|9632547|ref|NC_002077.1|	2757	2857	99	25	-3	264
 adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	30	-6	264
 adeno-reads100.fasta.000000190/R	0	100	R	gi|9632547|ref|NC_002077.1|	2814	2914	99	24	-3	-266
-adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	26	-5	268
-adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	27	-6	265
+adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	27	-5	268
+adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	26	-6	265
 adeno-reads100.fasta.000000411/L	0	100	F	gi|9632547|ref|NC_002077.1|	2865	2965	98	29	-2	262
 adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	28	-4	242
 adeno-reads100.fasta.000000507/L	0	100	R	gi|9632547|ref|NC_002077.1|	2895	2995	100	58	0	-268
 adeno-reads100.fasta.000000658/R	0	100	R	gi|9632547|ref|NC_002077.1|	2922	3021	98	25	-3	-264
 adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	30	-6	-264
-adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	26	-5	-268
-adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	27	-6	-265
+adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	27	-5	-268
+adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	26	-6	-265
 adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	28	-4	-242
 adeno-reads100.fasta.000000411/R	0	100	R	gi|9632547|ref|NC_002077.1|	3027	3127	100	29	-2	-262
 adeno-reads100.fasta.000000882/R	0	100	F	gi|9632547|ref|NC_002077.1|	3056	3156	100	57	-1	260
@@ -125,14 +125,14 @@ adeno-reads100.fasta.000000804/L	0	100	R	gi|9632547|ref|NC_002077.1|	3773	3873	1
 adeno-reads100.fasta.000000994/R	0	100	R	gi|9632547|ref|NC_002077.1|	3819	3919	99	38	-3	-266
 adeno-reads100.fasta.000000823/R	0	100	R	gi|9632547|ref|NC_002077.1|	3847	3947	99	39	-2	-255
 adeno-reads100.fasta.000000137/R	0	100	F	gi|9632547|ref|NC_002077.1|	3924	4023	96	51	-4	269
-adeno-reads100.fasta.000000296/R	0	100	F	gi|9632547|ref|NC_002077.1|	3925	4025	100	49	-1	260
-adeno-reads100.fasta.000000291/R	0	100	F	gi|9632547|ref|NC_002077.1|	3943	4044	99	50	-2	270
+adeno-reads100.fasta.000000296/R	0	100	F	gi|9632547|ref|NC_002077.1|	3925	4025	100	50	-1	260
+adeno-reads100.fasta.000000291/R	0	100	F	gi|9632547|ref|NC_002077.1|	3943	4044	99	49	-2	270
 adeno-reads100.fasta.000000367/L	0	100	F	gi|9632547|ref|NC_002077.1|	4063	4163	98	40	-3	260
-adeno-reads100.fasta.000000296/L	0	100	R	gi|9632547|ref|NC_002077.1|	4085	4185	99	49	-1	-260
+adeno-reads100.fasta.000000296/L	0	100	R	gi|9632547|ref|NC_002077.1|	4085	4185	99	50	-1	-260
 adeno-reads100.fasta.000000137/L	0	100	R	gi|9632547|ref|NC_002077.1|	4093	4193	100	51	-4	-269
 adeno-reads100.fasta.000000464/L	0	100	F	gi|9632547|ref|NC_002077.1|	4095	4195	100	41	-1	266
 adeno-reads100.fasta.000000586/R	0	100	F	gi|9632547|ref|NC_002077.1|	4108	4208	99	48	-2	269
-adeno-reads100.fasta.000000291/L	0	100	R	gi|9632547|ref|NC_002077.1|	4113	4213	99	50	-2	-270
+adeno-reads100.fasta.000000291/L	0	100	R	gi|9632547|ref|NC_002077.1|	4113	4213	99	49	-2	-270
 adeno-reads100.fasta.000000297/R	0	100	F	gi|9632547|ref|NC_002077.1|	4144	4244	99	47	-3	267
 adeno-reads100.fasta.000000008/L	0	100	F	gi|9632547|ref|NC_002077.1|	4188	4289	98	42	-2	268
 adeno-reads100.fasta.000000653/L	0	100	F	gi|9632547|ref|NC_002077.1|	4219	4319	99	43	-2	265
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-so1-tc1.razers b/apps/razers3/tests/pe-adeno-reads100_2-so1-tc1.razers
index 4ba4778..bef5086 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-so1-tc1.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-so1-tc1.razers
@@ -81,16 +81,16 @@ adeno-reads100.fasta.000000190/L	0	100	F	gi|9632547|ref|NC_002077.1|	2648	2748	9
 adeno-reads100.fasta.000000507/R	0	100	F	gi|9632547|ref|NC_002077.1|	2727	2827	100	48	0	268
 adeno-reads100.fasta.000000753/L	0	100	R	gi|9632547|ref|NC_002077.1|	2730	2830	100	65	-1	-267
 adeno-reads100.fasta.000000658/L	0	100	F	gi|9632547|ref|NC_002077.1|	2757	2857	99	25	-3	264
-adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	29	-6	264
+adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	28	-6	264
 adeno-reads100.fasta.000000190/R	0	100	R	gi|9632547|ref|NC_002077.1|	2814	2914	99	24	-3	-266
-adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	28	-5	268
+adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	29	-5	268
 adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	10	-6	265
 adeno-reads100.fasta.000000411/L	0	100	F	gi|9632547|ref|NC_002077.1|	2865	2965	98	12	-2	262
 adeno-reads100.fasta.000000467/L	0	100	F	gi|9632547|ref|NC_002077.1|	2866	2966	100	11	-4	242
 adeno-reads100.fasta.000000507/L	0	100	R	gi|9632547|ref|NC_002077.1|	2895	2995	100	48	0	-268
 adeno-reads100.fasta.000000658/R	0	100	R	gi|9632547|ref|NC_002077.1|	2922	3021	98	25	-3	-264
-adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	29	-6	-264
-adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	28	-5	-268
+adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	28	-6	-264
+adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	29	-5	-268
 adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	10	-6	-265
 adeno-reads100.fasta.000000467/R	0	100	R	gi|9632547|ref|NC_002077.1|	3012	3108	96	11	-4	-242
 adeno-reads100.fasta.000000411/R	0	100	R	gi|9632547|ref|NC_002077.1|	3027	3127	100	12	-2	-262
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-tc0.razers b/apps/razers3/tests/pe-adeno-reads100_2-tc0.razers
index 8c36963..aee2fc9 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-tc0.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-tc0.razers
@@ -1,5 +1,5 @@
-adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	27	-6	265
-adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	27	-6	-265
+adeno-reads100.fasta.000000007/L	0	100	F	gi|9632547|ref|NC_002077.1|	2827	2927	98	26	-6	265
+adeno-reads100.fasta.000000007/R	0	100	R	gi|9632547|ref|NC_002077.1|	2996	3092	96	26	-6	-265
 adeno-reads100.fasta.000000008/L	0	100	F	gi|9632547|ref|NC_002077.1|	4188	4289	98	42	-2	268
 adeno-reads100.fasta.000000008/R	0	100	R	gi|9632547|ref|NC_002077.1|	4356	4456	100	42	-2	-268
 adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	100	45	0	-253
@@ -10,8 +10,8 @@ adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	9
 adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	30	-6	-264
 adeno-reads100.fasta.000000082/L	0	100	F	gi|9632547|ref|NC_002077.1|	1397	1497	100	15	-1	261
 adeno-reads100.fasta.000000082/R	0	100	R	gi|9632547|ref|NC_002077.1|	1558	1658	99	15	-1	-261
-adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	26	-5	268
-adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	26	-5	-268
+adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	27	-5	268
+adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	27	-5	-268
 adeno-reads100.fasta.000000119/L	0	100	R	gi|9632547|ref|NC_002077.1|	3446	3546	100	54	0	-249
 adeno-reads100.fasta.000000119/R	0	100	F	gi|9632547|ref|NC_002077.1|	3297	3397	100	54	0	249
 adeno-reads100.fasta.000000120/L	0	100	F	gi|9632547|ref|NC_002077.1|	2479	2579	99	23	-2	265
@@ -32,14 +32,14 @@ adeno-reads100.fasta.000000260/L	0	100	R	gi|9632547|ref|NC_002077.1|	3438	3538	1
 adeno-reads100.fasta.000000260/R	0	100	F	gi|9632547|ref|NC_002077.1|	3268	3368	99	55	-1	270
 adeno-reads100.fasta.000000265/L	0	100	F	gi|9632547|ref|NC_002077.1|	3465	3565	100	36	0	269
 adeno-reads100.fasta.000000265/R	0	100	R	gi|9632547|ref|NC_002077.1|	3634	3734	100	36	0	-269
-adeno-reads100.fasta.000000291/L	0	100	R	gi|9632547|ref|NC_002077.1|	4113	4213	99	50	-2	-270
-adeno-reads100.fasta.000000291/R	0	100	F	gi|9632547|ref|NC_002077.1|	3943	4044	99	50	-2	270
-adeno-reads100.fasta.000000296/L	0	100	R	gi|9632547|ref|NC_002077.1|	4085	4185	99	49	-1	-260
-adeno-reads100.fasta.000000296/R	0	100	F	gi|9632547|ref|NC_002077.1|	3925	4025	100	49	-1	260
+adeno-reads100.fasta.000000291/L	0	100	R	gi|9632547|ref|NC_002077.1|	4113	4213	99	49	-2	-270
+adeno-reads100.fasta.000000291/R	0	100	F	gi|9632547|ref|NC_002077.1|	3943	4044	99	49	-2	270
+adeno-reads100.fasta.000000296/L	0	100	R	gi|9632547|ref|NC_002077.1|	4085	4185	99	50	-1	-260
+adeno-reads100.fasta.000000296/R	0	100	F	gi|9632547|ref|NC_002077.1|	3925	4025	100	50	-1	260
 adeno-reads100.fasta.000000297/L	0	100	R	gi|9632547|ref|NC_002077.1|	4310	4411	98	47	-3	-267
 adeno-reads100.fasta.000000297/R	0	100	F	gi|9632547|ref|NC_002077.1|	4144	4244	99	47	-3	267
-adeno-reads100.fasta.000000319/L	0	100	F	gi|9632547|ref|NC_002077.1|	1151	1251	98	14	-5	260
-adeno-reads100.fasta.000000319/R	0	100	R	gi|9632547|ref|NC_002077.1|	1308	1411	97	14	-5	-260
+adeno-reads100.fasta.000000319/L	0	100	F	gi|9632547|ref|NC_002077.1|	1151	1251	98	13	-5	260
+adeno-reads100.fasta.000000319/R	0	100	R	gi|9632547|ref|NC_002077.1|	1308	1411	97	13	-5	-260
 adeno-reads100.fasta.000000360/L	0	100	R	gi|9632547|ref|NC_002077.1|	1879	1980	99	67	-1	-268
 adeno-reads100.fasta.000000360/R	0	100	F	gi|9632547|ref|NC_002077.1|	1712	1812	100	67	-1	268
 adeno-reads100.fasta.000000362/L	0	100	F	gi|9632547|ref|NC_002077.1|	658	758	100	5	-1	269
@@ -90,8 +90,8 @@ adeno-reads100.fasta.000000616/L	0	100	R	gi|9632547|ref|NC_002077.1|	2215	2316	9
 adeno-reads100.fasta.000000616/R	0	100	F	gi|9632547|ref|NC_002077.1|	2049	2148	98	63	-4	267
 adeno-reads100.fasta.000000633/L	0	100	F	gi|9632547|ref|NC_002077.1|	3100	3200	100	31	0	257
 adeno-reads100.fasta.000000633/R	0	100	R	gi|9632547|ref|NC_002077.1|	3257	3357	100	31	0	-257
-adeno-reads100.fasta.000000644/L	0	100	F	gi|9632547|ref|NC_002077.1|	1164	1264	100	13	-4	256
-adeno-reads100.fasta.000000644/R	0	100	R	gi|9632547|ref|NC_002077.1|	1317	1420	96	13	-4	-256
+adeno-reads100.fasta.000000644/L	0	100	F	gi|9632547|ref|NC_002077.1|	1164	1264	100	14	-4	256
+adeno-reads100.fasta.000000644/R	0	100	R	gi|9632547|ref|NC_002077.1|	1317	1420	96	14	-4	-256
 adeno-reads100.fasta.000000653/L	0	100	F	gi|9632547|ref|NC_002077.1|	4219	4319	99	43	-2	265
 adeno-reads100.fasta.000000653/R	0	100	R	gi|9632547|ref|NC_002077.1|	4383	4484	99	43	-2	-265
 adeno-reads100.fasta.000000658/L	0	100	F	gi|9632547|ref|NC_002077.1|	2757	2857	99	25	-3	264
diff --git a/apps/razers3/tests/pe-adeno-reads100_2-tc1.razers b/apps/razers3/tests/pe-adeno-reads100_2-tc1.razers
index 2612489..e3e45f3 100644
--- a/apps/razers3/tests/pe-adeno-reads100_2-tc1.razers
+++ b/apps/razers3/tests/pe-adeno-reads100_2-tc1.razers
@@ -6,12 +6,12 @@ adeno-reads100.fasta.000000010/L	0	100	R	gi|9632547|ref|NC_002077.1|	4448	4548	1
 adeno-reads100.fasta.000000010/R	0	100	F	gi|9632547|ref|NC_002077.1|	4295	4395	100	55	0	253
 adeno-reads100.fasta.000000027/L	0	100	F	gi|9632547|ref|NC_002077.1|	2176	2276	99	9	-3	230
 adeno-reads100.fasta.000000027/R	0	100	R	gi|9632547|ref|NC_002077.1|	2306	2406	98	9	-3	-230
-adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	29	-6	264
-adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	29	-6	-264
+adeno-reads100.fasta.000000077/L	0	100	F	gi|9632547|ref|NC_002077.1|	2804	2903	99	28	-6	264
+adeno-reads100.fasta.000000077/R	0	100	R	gi|9632547|ref|NC_002077.1|	2973	3068	95	28	-6	-264
 adeno-reads100.fasta.000000082/L	0	100	F	gi|9632547|ref|NC_002077.1|	1397	1497	100	22	-1	261
 adeno-reads100.fasta.000000082/R	0	100	R	gi|9632547|ref|NC_002077.1|	1558	1658	99	22	-1	-261
-adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	28	-5	268
-adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	28	-5	-268
+adeno-reads100.fasta.000000113/L	0	100	F	gi|9632547|ref|NC_002077.1|	2819	2919	99	29	-5	268
+adeno-reads100.fasta.000000113/R	0	100	R	gi|9632547|ref|NC_002077.1|	2991	3087	96	29	-5	-268
 adeno-reads100.fasta.000000119/L	0	100	R	gi|9632547|ref|NC_002077.1|	3446	3546	100	47	0	-249
 adeno-reads100.fasta.000000119/R	0	100	F	gi|9632547|ref|NC_002077.1|	3297	3397	100	47	0	249
 adeno-reads100.fasta.000000120/L	0	100	F	gi|9632547|ref|NC_002077.1|	2479	2579	99	41	-2	265
diff --git a/apps/razers3/tests/pe-adeno-reads36_2-i100-tc1.razers b/apps/razers3/tests/pe-adeno-reads36_2-i100-tc1.razers
index f64495a..f3405b6 100644
--- a/apps/razers3/tests/pe-adeno-reads36_2-i100-tc1.razers
+++ b/apps/razers3/tests/pe-adeno-reads36_2-i100-tc1.razers
@@ -1,42 +1,76 @@
-adeno-reads36.fasta.000000077/L	0	36	R	gi|9632547|ref|NC_002077.1|	2877	2913	100	11	0	-266
-adeno-reads36.fasta.000000077/R	0	36	F	gi|9632547|ref|NC_002077.1|	2647	2683	100	11	0	266
-adeno-reads36.fasta.000000171/L	0	36	R	gi|9632547|ref|NC_002077.1|	4631	4667	100	0	0	-263
-adeno-reads36.fasta.000000171/R	0	36	F	gi|9632547|ref|NC_002077.1|	4404	4440	100	0	0	263
-adeno-reads36.fasta.000000223/L	0	36	R	gi|9632547|ref|NC_002077.1|	3029	3065	100	3	0	-266
-adeno-reads36.fasta.000000223/R	0	36	F	gi|9632547|ref|NC_002077.1|	2799	2835	100	3	0	266
-adeno-reads36.fasta.000000264/L	0	36	R	gi|9632547|ref|NC_002077.1|	1145	1181	100	19	0	-268
-adeno-reads36.fasta.000000264/R	0	36	F	gi|9632547|ref|NC_002077.1|	913	949	100	19	0	268
-adeno-reads36.fasta.000000267/L	0	36	R	gi|9632547|ref|NC_002077.1|	3787	3823	100	2	0	-257
-adeno-reads36.fasta.000000267/R	0	36	F	gi|9632547|ref|NC_002077.1|	3566	3602	100	2	0	257
-adeno-reads36.fasta.000000315/L	0	36	R	gi|9632547|ref|NC_002077.1|	2855	2891	100	4	0	-260
-adeno-reads36.fasta.000000315/R	0	36	F	gi|9632547|ref|NC_002077.1|	2631	2667	100	4	0	260
-adeno-reads36.fasta.000000337/L	0	36	R	gi|9632547|ref|NC_002077.1|	2183	2219	100	13	0	-268
-adeno-reads36.fasta.000000337/R	0	36	F	gi|9632547|ref|NC_002077.1|	1951	1987	100	13	0	268
-adeno-reads36.fasta.000000369/L	0	36	R	gi|9632547|ref|NC_002077.1|	2302	2338	100	12	0	-261
-adeno-reads36.fasta.000000369/R	0	36	F	gi|9632547|ref|NC_002077.1|	2077	2113	100	12	0	261
-adeno-reads36.fasta.000000434/L	0	36	R	gi|9632547|ref|NC_002077.1|	3371	3407	100	7	0	-267
-adeno-reads36.fasta.000000434/R	0	36	F	gi|9632547|ref|NC_002077.1|	3140	3176	100	7	0	267
-adeno-reads36.fasta.000000517/L	0	36	R	gi|9632547|ref|NC_002077.1|	1820	1856	100	15	0	-257
-adeno-reads36.fasta.000000517/R	0	36	F	gi|9632547|ref|NC_002077.1|	1599	1635	100	15	0	257
-adeno-reads36.fasta.000000552/L	0	36	R	gi|9632547|ref|NC_002077.1|	393	429	100	20	0	-267
-adeno-reads36.fasta.000000552/R	0	36	F	gi|9632547|ref|NC_002077.1|	162	198	100	20	0	267
-adeno-reads36.fasta.000000553/L	0	36	R	gi|9632547|ref|NC_002077.1|	1997	2033	100	14	0	-265
-adeno-reads36.fasta.000000553/R	0	36	F	gi|9632547|ref|NC_002077.1|	1768	1804	100	14	0	265
-adeno-reads36.fasta.000000618/L	0	36	R	gi|9632547|ref|NC_002077.1|	3019	3055	100	8	0	-270
-adeno-reads36.fasta.000000618/R	0	36	F	gi|9632547|ref|NC_002077.1|	2785	2821	100	8	0	270
-adeno-reads36.fasta.000000684/L	0	36	R	gi|9632547|ref|NC_002077.1|	4357	4393	100	16	0	-262
-adeno-reads36.fasta.000000684/R	0	36	F	gi|9632547|ref|NC_002077.1|	4131	4167	100	16	0	262
-adeno-reads36.fasta.000000728/L	0	36	R	gi|9632547|ref|NC_002077.1|	3725	3761	100	17	0	-261
-adeno-reads36.fasta.000000728/R	0	36	F	gi|9632547|ref|NC_002077.1|	3500	3536	100	17	0	261
-adeno-reads36.fasta.000000748/L	0	36	R	gi|9632547|ref|NC_002077.1|	2395	2431	100	18	0	-240
-adeno-reads36.fasta.000000748/R	0	36	F	gi|9632547|ref|NC_002077.1|	2191	2227	100	18	0	240
-adeno-reads36.fasta.000000751/L	0	36	R	gi|9632547|ref|NC_002077.1|	330	366	100	6	0	-262
-adeno-reads36.fasta.000000751/R	0	36	F	gi|9632547|ref|NC_002077.1|	104	140	100	6	0	262
-adeno-reads36.fasta.000000771/L	0	36	R	gi|9632547|ref|NC_002077.1|	1290	1326	100	5	0	-247
-adeno-reads36.fasta.000000771/R	0	36	F	gi|9632547|ref|NC_002077.1|	1079	1115	100	5	0	247
-adeno-reads36.fasta.000000847/L	0	36	R	gi|9632547|ref|NC_002077.1|	4212	4248	100	1	0	-256
-adeno-reads36.fasta.000000847/R	0	36	F	gi|9632547|ref|NC_002077.1|	3992	4028	100	1	0	256
-adeno-reads36.fasta.000000886/L	0	36	R	gi|9632547|ref|NC_002077.1|	1785	1821	100	10	0	-267
-adeno-reads36.fasta.000000886/R	0	36	F	gi|9632547|ref|NC_002077.1|	1554	1590	100	10	0	267
-adeno-reads36.fasta.000000958/L	0	36	R	gi|9632547|ref|NC_002077.1|	2488	2524	100	9	0	-256
-adeno-reads36.fasta.000000958/R	0	36	F	gi|9632547|ref|NC_002077.1|	2268	2304	100	9	0	256
+adeno-reads36.fasta.000000018/L	0	36	F	gi|9632547|ref|NC_002077.1|	4088	4124	100	9	0	266
+adeno-reads36.fasta.000000018/R	0	36	R	gi|9632547|ref|NC_002077.1|	4318	4354	100	9	0	-266
+adeno-reads36.fasta.000000026/L	0	36	F	gi|9632547|ref|NC_002077.1|	2484	2520	100	5	0	270
+adeno-reads36.fasta.000000026/R	0	36	R	gi|9632547|ref|NC_002077.1|	2718	2754	100	5	0	-270
+adeno-reads36.fasta.000000049/L	0	36	F	gi|9632547|ref|NC_002077.1|	1183	1219	100	10	0	269
+adeno-reads36.fasta.000000049/R	0	36	R	gi|9632547|ref|NC_002077.1|	1416	1452	100	10	0	-269
+adeno-reads36.fasta.000000077/L	0	36	R	gi|9632547|ref|NC_002077.1|	2877	2913	100	28	0	-266
+adeno-reads36.fasta.000000077/R	0	36	F	gi|9632547|ref|NC_002077.1|	2647	2683	100	28	0	266
+adeno-reads36.fasta.000000171/L	0	36	R	gi|9632547|ref|NC_002077.1|	4631	4667	100	17	0	-263
+adeno-reads36.fasta.000000171/R	0	36	F	gi|9632547|ref|NC_002077.1|	4404	4440	100	17	0	263
+adeno-reads36.fasta.000000223/L	0	36	R	gi|9632547|ref|NC_002077.1|	3029	3065	100	20	0	-266
+adeno-reads36.fasta.000000223/R	0	36	F	gi|9632547|ref|NC_002077.1|	2799	2835	100	20	0	266
+adeno-reads36.fasta.000000260/L	0	36	F	gi|9632547|ref|NC_002077.1|	226	262	100	12	0	267
+adeno-reads36.fasta.000000260/R	0	36	R	gi|9632547|ref|NC_002077.1|	457	493	100	12	0	-267
+adeno-reads36.fasta.000000264/L	0	36	R	gi|9632547|ref|NC_002077.1|	1145	1181	100	36	0	-268
+adeno-reads36.fasta.000000264/R	0	36	F	gi|9632547|ref|NC_002077.1|	913	949	100	36	0	268
+adeno-reads36.fasta.000000267/L	0	36	R	gi|9632547|ref|NC_002077.1|	3787	3823	100	19	0	-257
+adeno-reads36.fasta.000000267/R	0	36	F	gi|9632547|ref|NC_002077.1|	3566	3602	100	19	0	257
+adeno-reads36.fasta.000000273/L	0	36	F	gi|9632547|ref|NC_002077.1|	3718	3754	100	11	0	263
+adeno-reads36.fasta.000000273/R	0	36	R	gi|9632547|ref|NC_002077.1|	3945	3981	100	11	0	-263
+adeno-reads36.fasta.000000278/L	0	36	F	gi|9632547|ref|NC_002077.1|	1764	1800	100	4	0	268
+adeno-reads36.fasta.000000278/R	0	36	R	gi|9632547|ref|NC_002077.1|	1996	2032	100	4	0	-268
+adeno-reads36.fasta.000000315/L	0	36	R	gi|9632547|ref|NC_002077.1|	2855	2891	100	21	0	-260
+adeno-reads36.fasta.000000315/R	0	36	F	gi|9632547|ref|NC_002077.1|	2631	2667	100	21	0	260
+adeno-reads36.fasta.000000337/L	0	36	R	gi|9632547|ref|NC_002077.1|	2183	2219	100	30	0	-268
+adeno-reads36.fasta.000000337/R	0	36	F	gi|9632547|ref|NC_002077.1|	1951	1987	100	30	0	268
+adeno-reads36.fasta.000000369/L	0	36	R	gi|9632547|ref|NC_002077.1|	2302	2338	100	29	0	-261
+adeno-reads36.fasta.000000369/R	0	36	F	gi|9632547|ref|NC_002077.1|	2077	2113	100	29	0	261
+adeno-reads36.fasta.000000379/L	0	36	F	gi|9632547|ref|NC_002077.1|	780	816	100	1	0	266
+adeno-reads36.fasta.000000379/R	0	36	R	gi|9632547|ref|NC_002077.1|	1010	1046	100	1	0	-266
+adeno-reads36.fasta.000000392/L	0	36	F	gi|9632547|ref|NC_002077.1|	3777	3813	100	16	0	263
+adeno-reads36.fasta.000000392/R	0	36	R	gi|9632547|ref|NC_002077.1|	4004	4040	100	16	0	-263
+adeno-reads36.fasta.000000434/L	0	36	R	gi|9632547|ref|NC_002077.1|	3371	3407	100	24	0	-267
+adeno-reads36.fasta.000000434/R	0	36	F	gi|9632547|ref|NC_002077.1|	3140	3176	100	24	0	267
+adeno-reads36.fasta.000000517/L	0	36	R	gi|9632547|ref|NC_002077.1|	1820	1856	100	32	0	-257
+adeno-reads36.fasta.000000517/R	0	36	F	gi|9632547|ref|NC_002077.1|	1599	1635	100	32	0	257
+adeno-reads36.fasta.000000548/L	0	36	F	gi|9632547|ref|NC_002077.1|	2482	2518	100	15	0	270
+adeno-reads36.fasta.000000548/R	0	36	R	gi|9632547|ref|NC_002077.1|	2716	2752	100	15	0	-270
+adeno-reads36.fasta.000000552/L	0	36	R	gi|9632547|ref|NC_002077.1|	393	429	100	37	0	-267
+adeno-reads36.fasta.000000552/R	0	36	F	gi|9632547|ref|NC_002077.1|	162	198	100	37	0	267
+adeno-reads36.fasta.000000553/L	0	36	R	gi|9632547|ref|NC_002077.1|	1997	2033	100	31	0	-265
+adeno-reads36.fasta.000000553/R	0	36	F	gi|9632547|ref|NC_002077.1|	1768	1804	100	31	0	265
+adeno-reads36.fasta.000000618/L	0	36	R	gi|9632547|ref|NC_002077.1|	3019	3055	100	25	0	-270
+adeno-reads36.fasta.000000618/R	0	36	F	gi|9632547|ref|NC_002077.1|	2785	2821	100	25	0	270
+adeno-reads36.fasta.000000620/L	0	36	F	gi|9632547|ref|NC_002077.1|	348	384	100	13	0	252
+adeno-reads36.fasta.000000620/R	0	36	R	gi|9632547|ref|NC_002077.1|	564	600	100	13	0	-252
+adeno-reads36.fasta.000000646/L	0	36	F	gi|9632547|ref|NC_002077.1|	3471	3507	100	7	0	252
+adeno-reads36.fasta.000000646/R	0	36	R	gi|9632547|ref|NC_002077.1|	3687	3723	100	7	0	-252
+adeno-reads36.fasta.000000684/L	0	36	R	gi|9632547|ref|NC_002077.1|	4357	4393	100	33	0	-262
+adeno-reads36.fasta.000000684/R	0	36	F	gi|9632547|ref|NC_002077.1|	4131	4167	100	33	0	262
+adeno-reads36.fasta.000000728/L	0	36	R	gi|9632547|ref|NC_002077.1|	3725	3761	100	34	0	-261
+adeno-reads36.fasta.000000728/R	0	36	F	gi|9632547|ref|NC_002077.1|	3500	3536	100	34	0	261
+adeno-reads36.fasta.000000731/L	0	36	F	gi|9632547|ref|NC_002077.1|	4338	4374	100	2	0	269
+adeno-reads36.fasta.000000731/R	0	36	R	gi|9632547|ref|NC_002077.1|	4571	4607	100	2	0	-269
+adeno-reads36.fasta.000000734/L	0	36	F	gi|9632547|ref|NC_002077.1|	2836	2872	100	6	0	264
+adeno-reads36.fasta.000000734/R	0	36	R	gi|9632547|ref|NC_002077.1|	3064	3100	100	6	0	-264
+adeno-reads36.fasta.000000742/L	0	36	F	gi|9632547|ref|NC_002077.1|	232	268	100	3	0	259
+adeno-reads36.fasta.000000742/R	0	36	R	gi|9632547|ref|NC_002077.1|	455	491	100	3	0	-259
+adeno-reads36.fasta.000000748/L	0	36	R	gi|9632547|ref|NC_002077.1|	2395	2431	100	35	0	-240
+adeno-reads36.fasta.000000748/R	0	36	F	gi|9632547|ref|NC_002077.1|	2191	2227	100	35	0	240
+adeno-reads36.fasta.000000751/L	0	36	R	gi|9632547|ref|NC_002077.1|	330	366	100	23	0	-262
+adeno-reads36.fasta.000000751/R	0	36	F	gi|9632547|ref|NC_002077.1|	104	140	100	23	0	262
+adeno-reads36.fasta.000000767/L	0	36	F	gi|9632547|ref|NC_002077.1|	471	507	100	0	0	248
+adeno-reads36.fasta.000000767/R	0	36	R	gi|9632547|ref|NC_002077.1|	683	719	100	0	0	-248
+adeno-reads36.fasta.000000771/L	0	36	R	gi|9632547|ref|NC_002077.1|	1290	1326	100	22	0	-247
+adeno-reads36.fasta.000000771/R	0	36	F	gi|9632547|ref|NC_002077.1|	1079	1115	100	22	0	247
+adeno-reads36.fasta.000000822/L	0	36	F	gi|9632547|ref|NC_002077.1|	3687	3723	100	8	0	254
+adeno-reads36.fasta.000000822/R	0	36	R	gi|9632547|ref|NC_002077.1|	3905	3941	100	8	0	-254
+adeno-reads36.fasta.000000847/L	0	36	R	gi|9632547|ref|NC_002077.1|	4212	4248	100	18	0	-256
+adeno-reads36.fasta.000000847/R	0	36	F	gi|9632547|ref|NC_002077.1|	3992	4028	100	18	0	256
+adeno-reads36.fasta.000000856/L	0	36	F	gi|9632547|ref|NC_002077.1|	356	392	100	14	0	264
+adeno-reads36.fasta.000000856/R	0	36	R	gi|9632547|ref|NC_002077.1|	584	620	100	14	0	-264
+adeno-reads36.fasta.000000886/L	0	36	R	gi|9632547|ref|NC_002077.1|	1785	1821	100	27	0	-267
+adeno-reads36.fasta.000000886/R	0	36	F	gi|9632547|ref|NC_002077.1|	1554	1590	100	27	0	267
+adeno-reads36.fasta.000000958/L	0	36	R	gi|9632547|ref|NC_002077.1|	2488	2524	100	26	0	-256
+adeno-reads36.fasta.000000958/R	0	36	F	gi|9632547|ref|NC_002077.1|	2268	2304	100	26	0	256
diff --git a/apps/razers3/tests/pe-adeno-reads36_2-i90-tc0.razers b/apps/razers3/tests/pe-adeno-reads36_2-i90-tc0.razers
index 3041e96..d14a459 100644
--- a/apps/razers3/tests/pe-adeno-reads36_2-i90-tc0.razers
+++ b/apps/razers3/tests/pe-adeno-reads36_2-i90-tc0.razers
@@ -48,8 +48,8 @@ adeno-reads36.fasta.000000379/L	0	36	F	gi|9632547|ref|NC_002077.1|	780	816	100	7
 adeno-reads36.fasta.000000379/R	0	36	R	gi|9632547|ref|NC_002077.1|	1010	1046	100	7	0	-266
 adeno-reads36.fasta.000000392/L	0	36	F	gi|9632547|ref|NC_002077.1|	3777	3813	100	24	0	263
 adeno-reads36.fasta.000000392/R	0	36	R	gi|9632547|ref|NC_002077.1|	4004	4040	100	24	0	-263
-adeno-reads36.fasta.000000402/L	0	36	F	gi|9632547|ref|NC_002077.1|	3481	3517	94.444	20	-2	268
-adeno-reads36.fasta.000000402/R	0	36	R	gi|9632547|ref|NC_002077.1|	3713	3749	100	20	-2	-268
+adeno-reads36.fasta.000000402/L	0	36	F	gi|9632547|ref|NC_002077.1|	3481	3517	94.444	21	-2	268
+adeno-reads36.fasta.000000402/R	0	36	R	gi|9632547|ref|NC_002077.1|	3713	3749	100	21	-2	-268
 adeno-reads36.fasta.000000434/L	0	36	R	gi|9632547|ref|NC_002077.1|	3371	3407	100	37	0	-267
 adeno-reads36.fasta.000000434/R	0	36	F	gi|9632547|ref|NC_002077.1|	3140	3176	100	37	0	267
 adeno-reads36.fasta.000000446/L	0	36	R	gi|9632547|ref|NC_002077.1|	2675	2711	97.222	43	-1	-266
@@ -80,8 +80,8 @@ adeno-reads36.fasta.000000620/L	0	36	F	gi|9632547|ref|NC_002077.1|	348	384	100	3
 adeno-reads36.fasta.000000620/R	0	36	R	gi|9632547|ref|NC_002077.1|	564	600	100	3	0	-252
 adeno-reads36.fasta.000000623/L	0	36	F	gi|9632547|ref|NC_002077.1|	4342	4377	97.222	27	-1	260
 adeno-reads36.fasta.000000623/R	0	36	R	gi|9632547|ref|NC_002077.1|	4566	4602	100	27	-1	-260
-adeno-reads36.fasta.000000646/L	0	36	F	gi|9632547|ref|NC_002077.1|	3471	3507	100	21	0	252
-adeno-reads36.fasta.000000646/R	0	36	R	gi|9632547|ref|NC_002077.1|	3687	3723	100	21	0	-252
+adeno-reads36.fasta.000000646/L	0	36	F	gi|9632547|ref|NC_002077.1|	3471	3507	100	20	0	252
+adeno-reads36.fasta.000000646/R	0	36	R	gi|9632547|ref|NC_002077.1|	3687	3723	100	20	0	-252
 adeno-reads36.fasta.000000681/L	0	36	R	gi|9632547|ref|NC_002077.1|	1180	1216	97.222	58	-1	-265
 adeno-reads36.fasta.000000681/R	0	36	F	gi|9632547|ref|NC_002077.1|	951	987	100	58	-1	265
 adeno-reads36.fasta.000000684/L	0	36	R	gi|9632547|ref|NC_002077.1|	4357	4393	100	31	0	-262
diff --git a/apps/razers3/tests/pe-adeno-reads36_2-i90-tc1.razers b/apps/razers3/tests/pe-adeno-reads36_2-i90-tc1.razers
index 808b0aa..f729b06 100644
--- a/apps/razers3/tests/pe-adeno-reads36_2-i90-tc1.razers
+++ b/apps/razers3/tests/pe-adeno-reads36_2-i90-tc1.razers
@@ -48,8 +48,8 @@ adeno-reads36.fasta.000000379/L	0	36	F	gi|9632547|ref|NC_002077.1|	780	816	100	2
 adeno-reads36.fasta.000000379/R	0	36	R	gi|9632547|ref|NC_002077.1|	1010	1046	100	2	0	-266
 adeno-reads36.fasta.000000392/L	0	36	F	gi|9632547|ref|NC_002077.1|	3777	3813	100	29	0	263
 adeno-reads36.fasta.000000392/R	0	36	R	gi|9632547|ref|NC_002077.1|	4004	4040	100	29	0	-263
-adeno-reads36.fasta.000000402/L	0	36	F	gi|9632547|ref|NC_002077.1|	3481	3517	94.444	15	-2	268
-adeno-reads36.fasta.000000402/R	0	36	R	gi|9632547|ref|NC_002077.1|	3713	3749	100	15	-2	-268
+adeno-reads36.fasta.000000402/L	0	36	F	gi|9632547|ref|NC_002077.1|	3481	3517	94.444	16	-2	268
+adeno-reads36.fasta.000000402/R	0	36	R	gi|9632547|ref|NC_002077.1|	3713	3749	100	16	-2	-268
 adeno-reads36.fasta.000000434/L	0	36	R	gi|9632547|ref|NC_002077.1|	3371	3407	100	38	0	-267
 adeno-reads36.fasta.000000434/R	0	36	F	gi|9632547|ref|NC_002077.1|	3140	3176	100	38	0	267
 adeno-reads36.fasta.000000446/L	0	36	R	gi|9632547|ref|NC_002077.1|	2675	2711	97.222	41	-1	-266
@@ -80,8 +80,8 @@ adeno-reads36.fasta.000000620/L	0	36	F	gi|9632547|ref|NC_002077.1|	348	384	100	2
 adeno-reads36.fasta.000000620/R	0	36	R	gi|9632547|ref|NC_002077.1|	564	600	100	23	0	-252
 adeno-reads36.fasta.000000623/L	0	36	F	gi|9632547|ref|NC_002077.1|	4342	4377	97.222	6	-1	260
 adeno-reads36.fasta.000000623/R	0	36	R	gi|9632547|ref|NC_002077.1|	4566	4602	100	6	-1	-260
-adeno-reads36.fasta.000000646/L	0	36	F	gi|9632547|ref|NC_002077.1|	3471	3507	100	16	0	252
-adeno-reads36.fasta.000000646/R	0	36	R	gi|9632547|ref|NC_002077.1|	3687	3723	100	16	0	-252
+adeno-reads36.fasta.000000646/L	0	36	F	gi|9632547|ref|NC_002077.1|	3471	3507	100	15	0	252
+adeno-reads36.fasta.000000646/R	0	36	R	gi|9632547|ref|NC_002077.1|	3687	3723	100	15	0	-252
 adeno-reads36.fasta.000000681/L	0	36	R	gi|9632547|ref|NC_002077.1|	1180	1216	97.222	53	-1	-265
 adeno-reads36.fasta.000000681/R	0	36	F	gi|9632547|ref|NC_002077.1|	951	987	100	53	-1	265
 adeno-reads36.fasta.000000684/L	0	36	R	gi|9632547|ref|NC_002077.1|	4357	4393	100	54	0	-262
diff --git a/apps/razers3/tests/pe-adeno-reads36_2-i91-tc0.razers b/apps/razers3/tests/pe-adeno-reads36_2-i91-tc0.razers
index 3041e96..d14a459 100644
--- a/apps/razers3/tests/pe-adeno-reads36_2-i91-tc0.razers
+++ b/apps/razers3/tests/pe-adeno-reads36_2-i91-tc0.razers
@@ -48,8 +48,8 @@ adeno-reads36.fasta.000000379/L	0	36	F	gi|9632547|ref|NC_002077.1|	780	816	100	7
 adeno-reads36.fasta.000000379/R	0	36	R	gi|9632547|ref|NC_002077.1|	1010	1046	100	7	0	-266
 adeno-reads36.fasta.000000392/L	0	36	F	gi|9632547|ref|NC_002077.1|	3777	3813	100	24	0	263
 adeno-reads36.fasta.000000392/R	0	36	R	gi|9632547|ref|NC_002077.1|	4004	4040	100	24	0	-263
-adeno-reads36.fasta.000000402/L	0	36	F	gi|9632547|ref|NC_002077.1|	3481	3517	94.444	20	-2	268
-adeno-reads36.fasta.000000402/R	0	36	R	gi|9632547|ref|NC_002077.1|	3713	3749	100	20	-2	-268
+adeno-reads36.fasta.000000402/L	0	36	F	gi|9632547|ref|NC_002077.1|	3481	3517	94.444	21	-2	268
+adeno-reads36.fasta.000000402/R	0	36	R	gi|9632547|ref|NC_002077.1|	3713	3749	100	21	-2	-268
 adeno-reads36.fasta.000000434/L	0	36	R	gi|9632547|ref|NC_002077.1|	3371	3407	100	37	0	-267
 adeno-reads36.fasta.000000434/R	0	36	F	gi|9632547|ref|NC_002077.1|	3140	3176	100	37	0	267
 adeno-reads36.fasta.000000446/L	0	36	R	gi|9632547|ref|NC_002077.1|	2675	2711	97.222	43	-1	-266
@@ -80,8 +80,8 @@ adeno-reads36.fasta.000000620/L	0	36	F	gi|9632547|ref|NC_002077.1|	348	384	100	3
 adeno-reads36.fasta.000000620/R	0	36	R	gi|9632547|ref|NC_002077.1|	564	600	100	3	0	-252
 adeno-reads36.fasta.000000623/L	0	36	F	gi|9632547|ref|NC_002077.1|	4342	4377	97.222	27	-1	260
 adeno-reads36.fasta.000000623/R	0	36	R	gi|9632547|ref|NC_002077.1|	4566	4602	100	27	-1	-260
-adeno-reads36.fasta.000000646/L	0	36	F	gi|9632547|ref|NC_002077.1|	3471	3507	100	21	0	252
-adeno-reads36.fasta.000000646/R	0	36	R	gi|9632547|ref|NC_002077.1|	3687	3723	100	21	0	-252
+adeno-reads36.fasta.000000646/L	0	36	F	gi|9632547|ref|NC_002077.1|	3471	3507	100	20	0	252
+adeno-reads36.fasta.000000646/R	0	36	R	gi|9632547|ref|NC_002077.1|	3687	3723	100	20	0	-252
 adeno-reads36.fasta.000000681/L	0	36	R	gi|9632547|ref|NC_002077.1|	1180	1216	97.222	58	-1	-265
 adeno-reads36.fasta.000000681/R	0	36	F	gi|9632547|ref|NC_002077.1|	951	987	100	58	-1	265
 adeno-reads36.fasta.000000684/L	0	36	R	gi|9632547|ref|NC_002077.1|	4357	4393	100	31	0	-262
diff --git a/apps/razers3/tests/pe-adeno-reads36_2-i91-tc1.razers b/apps/razers3/tests/pe-adeno-reads36_2-i91-tc1.razers
index 808b0aa..f729b06 100644
--- a/apps/razers3/tests/pe-adeno-reads36_2-i91-tc1.razers
+++ b/apps/razers3/tests/pe-adeno-reads36_2-i91-tc1.razers
@@ -48,8 +48,8 @@ adeno-reads36.fasta.000000379/L	0	36	F	gi|9632547|ref|NC_002077.1|	780	816	100	2
 adeno-reads36.fasta.000000379/R	0	36	R	gi|9632547|ref|NC_002077.1|	1010	1046	100	2	0	-266
 adeno-reads36.fasta.000000392/L	0	36	F	gi|9632547|ref|NC_002077.1|	3777	3813	100	29	0	263
 adeno-reads36.fasta.000000392/R	0	36	R	gi|9632547|ref|NC_002077.1|	4004	4040	100	29	0	-263
-adeno-reads36.fasta.000000402/L	0	36	F	gi|9632547|ref|NC_002077.1|	3481	3517	94.444	15	-2	268
-adeno-reads36.fasta.000000402/R	0	36	R	gi|9632547|ref|NC_002077.1|	3713	3749	100	15	-2	-268
+adeno-reads36.fasta.000000402/L	0	36	F	gi|9632547|ref|NC_002077.1|	3481	3517	94.444	16	-2	268
+adeno-reads36.fasta.000000402/R	0	36	R	gi|9632547|ref|NC_002077.1|	3713	3749	100	16	-2	-268
 adeno-reads36.fasta.000000434/L	0	36	R	gi|9632547|ref|NC_002077.1|	3371	3407	100	38	0	-267
 adeno-reads36.fasta.000000434/R	0	36	F	gi|9632547|ref|NC_002077.1|	3140	3176	100	38	0	267
 adeno-reads36.fasta.000000446/L	0	36	R	gi|9632547|ref|NC_002077.1|	2675	2711	97.222	41	-1	-266
@@ -80,8 +80,8 @@ adeno-reads36.fasta.000000620/L	0	36	F	gi|9632547|ref|NC_002077.1|	348	384	100	2
 adeno-reads36.fasta.000000620/R	0	36	R	gi|9632547|ref|NC_002077.1|	564	600	100	23	0	-252
 adeno-reads36.fasta.000000623/L	0	36	F	gi|9632547|ref|NC_002077.1|	4342	4377	97.222	6	-1	260
 adeno-reads36.fasta.000000623/R	0	36	R	gi|9632547|ref|NC_002077.1|	4566	4602	100	6	-1	-260
-adeno-reads36.fasta.000000646/L	0	36	F	gi|9632547|ref|NC_002077.1|	3471	3507	100	16	0	252
-adeno-reads36.fasta.000000646/R	0	36	R	gi|9632547|ref|NC_002077.1|	3687	3723	100	16	0	-252
+adeno-reads36.fasta.000000646/L	0	36	F	gi|9632547|ref|NC_002077.1|	3471	3507	100	15	0	252
+adeno-reads36.fasta.000000646/R	0	36	R	gi|9632547|ref|NC_002077.1|	3687	3723	100	15	0	-252
 adeno-reads36.fasta.000000681/L	0	36	R	gi|9632547|ref|NC_002077.1|	1180	1216	97.222	53	-1	-265
 adeno-reads36.fasta.000000681/R	0	36	F	gi|9632547|ref|NC_002077.1|	951	987	100	53	-1	265
 adeno-reads36.fasta.000000684/L	0	36	R	gi|9632547|ref|NC_002077.1|	4357	4393	100	54	0	-262
diff --git a/apps/razers3/tests/pe-adeno-reads36_2-i98-tc1.razers b/apps/razers3/tests/pe-adeno-reads36_2-i98-tc1.razers
index f64495a..f3405b6 100644
--- a/apps/razers3/tests/pe-adeno-reads36_2-i98-tc1.razers
+++ b/apps/razers3/tests/pe-adeno-reads36_2-i98-tc1.razers
@@ -1,42 +1,76 @@
-adeno-reads36.fasta.000000077/L	0	36	R	gi|9632547|ref|NC_002077.1|	2877	2913	100	11	0	-266
-adeno-reads36.fasta.000000077/R	0	36	F	gi|9632547|ref|NC_002077.1|	2647	2683	100	11	0	266
-adeno-reads36.fasta.000000171/L	0	36	R	gi|9632547|ref|NC_002077.1|	4631	4667	100	0	0	-263
-adeno-reads36.fasta.000000171/R	0	36	F	gi|9632547|ref|NC_002077.1|	4404	4440	100	0	0	263
-adeno-reads36.fasta.000000223/L	0	36	R	gi|9632547|ref|NC_002077.1|	3029	3065	100	3	0	-266
-adeno-reads36.fasta.000000223/R	0	36	F	gi|9632547|ref|NC_002077.1|	2799	2835	100	3	0	266
-adeno-reads36.fasta.000000264/L	0	36	R	gi|9632547|ref|NC_002077.1|	1145	1181	100	19	0	-268
-adeno-reads36.fasta.000000264/R	0	36	F	gi|9632547|ref|NC_002077.1|	913	949	100	19	0	268
-adeno-reads36.fasta.000000267/L	0	36	R	gi|9632547|ref|NC_002077.1|	3787	3823	100	2	0	-257
-adeno-reads36.fasta.000000267/R	0	36	F	gi|9632547|ref|NC_002077.1|	3566	3602	100	2	0	257
-adeno-reads36.fasta.000000315/L	0	36	R	gi|9632547|ref|NC_002077.1|	2855	2891	100	4	0	-260
-adeno-reads36.fasta.000000315/R	0	36	F	gi|9632547|ref|NC_002077.1|	2631	2667	100	4	0	260
-adeno-reads36.fasta.000000337/L	0	36	R	gi|9632547|ref|NC_002077.1|	2183	2219	100	13	0	-268
-adeno-reads36.fasta.000000337/R	0	36	F	gi|9632547|ref|NC_002077.1|	1951	1987	100	13	0	268
-adeno-reads36.fasta.000000369/L	0	36	R	gi|9632547|ref|NC_002077.1|	2302	2338	100	12	0	-261
-adeno-reads36.fasta.000000369/R	0	36	F	gi|9632547|ref|NC_002077.1|	2077	2113	100	12	0	261
-adeno-reads36.fasta.000000434/L	0	36	R	gi|9632547|ref|NC_002077.1|	3371	3407	100	7	0	-267
-adeno-reads36.fasta.000000434/R	0	36	F	gi|9632547|ref|NC_002077.1|	3140	3176	100	7	0	267
-adeno-reads36.fasta.000000517/L	0	36	R	gi|9632547|ref|NC_002077.1|	1820	1856	100	15	0	-257
-adeno-reads36.fasta.000000517/R	0	36	F	gi|9632547|ref|NC_002077.1|	1599	1635	100	15	0	257
-adeno-reads36.fasta.000000552/L	0	36	R	gi|9632547|ref|NC_002077.1|	393	429	100	20	0	-267
-adeno-reads36.fasta.000000552/R	0	36	F	gi|9632547|ref|NC_002077.1|	162	198	100	20	0	267
-adeno-reads36.fasta.000000553/L	0	36	R	gi|9632547|ref|NC_002077.1|	1997	2033	100	14	0	-265
-adeno-reads36.fasta.000000553/R	0	36	F	gi|9632547|ref|NC_002077.1|	1768	1804	100	14	0	265
-adeno-reads36.fasta.000000618/L	0	36	R	gi|9632547|ref|NC_002077.1|	3019	3055	100	8	0	-270
-adeno-reads36.fasta.000000618/R	0	36	F	gi|9632547|ref|NC_002077.1|	2785	2821	100	8	0	270
-adeno-reads36.fasta.000000684/L	0	36	R	gi|9632547|ref|NC_002077.1|	4357	4393	100	16	0	-262
-adeno-reads36.fasta.000000684/R	0	36	F	gi|9632547|ref|NC_002077.1|	4131	4167	100	16	0	262
-adeno-reads36.fasta.000000728/L	0	36	R	gi|9632547|ref|NC_002077.1|	3725	3761	100	17	0	-261
-adeno-reads36.fasta.000000728/R	0	36	F	gi|9632547|ref|NC_002077.1|	3500	3536	100	17	0	261
-adeno-reads36.fasta.000000748/L	0	36	R	gi|9632547|ref|NC_002077.1|	2395	2431	100	18	0	-240
-adeno-reads36.fasta.000000748/R	0	36	F	gi|9632547|ref|NC_002077.1|	2191	2227	100	18	0	240
-adeno-reads36.fasta.000000751/L	0	36	R	gi|9632547|ref|NC_002077.1|	330	366	100	6	0	-262
-adeno-reads36.fasta.000000751/R	0	36	F	gi|9632547|ref|NC_002077.1|	104	140	100	6	0	262
-adeno-reads36.fasta.000000771/L	0	36	R	gi|9632547|ref|NC_002077.1|	1290	1326	100	5	0	-247
-adeno-reads36.fasta.000000771/R	0	36	F	gi|9632547|ref|NC_002077.1|	1079	1115	100	5	0	247
-adeno-reads36.fasta.000000847/L	0	36	R	gi|9632547|ref|NC_002077.1|	4212	4248	100	1	0	-256
-adeno-reads36.fasta.000000847/R	0	36	F	gi|9632547|ref|NC_002077.1|	3992	4028	100	1	0	256
-adeno-reads36.fasta.000000886/L	0	36	R	gi|9632547|ref|NC_002077.1|	1785	1821	100	10	0	-267
-adeno-reads36.fasta.000000886/R	0	36	F	gi|9632547|ref|NC_002077.1|	1554	1590	100	10	0	267
-adeno-reads36.fasta.000000958/L	0	36	R	gi|9632547|ref|NC_002077.1|	2488	2524	100	9	0	-256
-adeno-reads36.fasta.000000958/R	0	36	F	gi|9632547|ref|NC_002077.1|	2268	2304	100	9	0	256
+adeno-reads36.fasta.000000018/L	0	36	F	gi|9632547|ref|NC_002077.1|	4088	4124	100	9	0	266
+adeno-reads36.fasta.000000018/R	0	36	R	gi|9632547|ref|NC_002077.1|	4318	4354	100	9	0	-266
+adeno-reads36.fasta.000000026/L	0	36	F	gi|9632547|ref|NC_002077.1|	2484	2520	100	5	0	270
+adeno-reads36.fasta.000000026/R	0	36	R	gi|9632547|ref|NC_002077.1|	2718	2754	100	5	0	-270
+adeno-reads36.fasta.000000049/L	0	36	F	gi|9632547|ref|NC_002077.1|	1183	1219	100	10	0	269
+adeno-reads36.fasta.000000049/R	0	36	R	gi|9632547|ref|NC_002077.1|	1416	1452	100	10	0	-269
+adeno-reads36.fasta.000000077/L	0	36	R	gi|9632547|ref|NC_002077.1|	2877	2913	100	28	0	-266
+adeno-reads36.fasta.000000077/R	0	36	F	gi|9632547|ref|NC_002077.1|	2647	2683	100	28	0	266
+adeno-reads36.fasta.000000171/L	0	36	R	gi|9632547|ref|NC_002077.1|	4631	4667	100	17	0	-263
+adeno-reads36.fasta.000000171/R	0	36	F	gi|9632547|ref|NC_002077.1|	4404	4440	100	17	0	263
+adeno-reads36.fasta.000000223/L	0	36	R	gi|9632547|ref|NC_002077.1|	3029	3065	100	20	0	-266
+adeno-reads36.fasta.000000223/R	0	36	F	gi|9632547|ref|NC_002077.1|	2799	2835	100	20	0	266
+adeno-reads36.fasta.000000260/L	0	36	F	gi|9632547|ref|NC_002077.1|	226	262	100	12	0	267
+adeno-reads36.fasta.000000260/R	0	36	R	gi|9632547|ref|NC_002077.1|	457	493	100	12	0	-267
+adeno-reads36.fasta.000000264/L	0	36	R	gi|9632547|ref|NC_002077.1|	1145	1181	100	36	0	-268
+adeno-reads36.fasta.000000264/R	0	36	F	gi|9632547|ref|NC_002077.1|	913	949	100	36	0	268
+adeno-reads36.fasta.000000267/L	0	36	R	gi|9632547|ref|NC_002077.1|	3787	3823	100	19	0	-257
+adeno-reads36.fasta.000000267/R	0	36	F	gi|9632547|ref|NC_002077.1|	3566	3602	100	19	0	257
+adeno-reads36.fasta.000000273/L	0	36	F	gi|9632547|ref|NC_002077.1|	3718	3754	100	11	0	263
+adeno-reads36.fasta.000000273/R	0	36	R	gi|9632547|ref|NC_002077.1|	3945	3981	100	11	0	-263
+adeno-reads36.fasta.000000278/L	0	36	F	gi|9632547|ref|NC_002077.1|	1764	1800	100	4	0	268
+adeno-reads36.fasta.000000278/R	0	36	R	gi|9632547|ref|NC_002077.1|	1996	2032	100	4	0	-268
+adeno-reads36.fasta.000000315/L	0	36	R	gi|9632547|ref|NC_002077.1|	2855	2891	100	21	0	-260
+adeno-reads36.fasta.000000315/R	0	36	F	gi|9632547|ref|NC_002077.1|	2631	2667	100	21	0	260
+adeno-reads36.fasta.000000337/L	0	36	R	gi|9632547|ref|NC_002077.1|	2183	2219	100	30	0	-268
+adeno-reads36.fasta.000000337/R	0	36	F	gi|9632547|ref|NC_002077.1|	1951	1987	100	30	0	268
+adeno-reads36.fasta.000000369/L	0	36	R	gi|9632547|ref|NC_002077.1|	2302	2338	100	29	0	-261
+adeno-reads36.fasta.000000369/R	0	36	F	gi|9632547|ref|NC_002077.1|	2077	2113	100	29	0	261
+adeno-reads36.fasta.000000379/L	0	36	F	gi|9632547|ref|NC_002077.1|	780	816	100	1	0	266
+adeno-reads36.fasta.000000379/R	0	36	R	gi|9632547|ref|NC_002077.1|	1010	1046	100	1	0	-266
+adeno-reads36.fasta.000000392/L	0	36	F	gi|9632547|ref|NC_002077.1|	3777	3813	100	16	0	263
+adeno-reads36.fasta.000000392/R	0	36	R	gi|9632547|ref|NC_002077.1|	4004	4040	100	16	0	-263
+adeno-reads36.fasta.000000434/L	0	36	R	gi|9632547|ref|NC_002077.1|	3371	3407	100	24	0	-267
+adeno-reads36.fasta.000000434/R	0	36	F	gi|9632547|ref|NC_002077.1|	3140	3176	100	24	0	267
+adeno-reads36.fasta.000000517/L	0	36	R	gi|9632547|ref|NC_002077.1|	1820	1856	100	32	0	-257
+adeno-reads36.fasta.000000517/R	0	36	F	gi|9632547|ref|NC_002077.1|	1599	1635	100	32	0	257
+adeno-reads36.fasta.000000548/L	0	36	F	gi|9632547|ref|NC_002077.1|	2482	2518	100	15	0	270
+adeno-reads36.fasta.000000548/R	0	36	R	gi|9632547|ref|NC_002077.1|	2716	2752	100	15	0	-270
+adeno-reads36.fasta.000000552/L	0	36	R	gi|9632547|ref|NC_002077.1|	393	429	100	37	0	-267
+adeno-reads36.fasta.000000552/R	0	36	F	gi|9632547|ref|NC_002077.1|	162	198	100	37	0	267
+adeno-reads36.fasta.000000553/L	0	36	R	gi|9632547|ref|NC_002077.1|	1997	2033	100	31	0	-265
+adeno-reads36.fasta.000000553/R	0	36	F	gi|9632547|ref|NC_002077.1|	1768	1804	100	31	0	265
+adeno-reads36.fasta.000000618/L	0	36	R	gi|9632547|ref|NC_002077.1|	3019	3055	100	25	0	-270
+adeno-reads36.fasta.000000618/R	0	36	F	gi|9632547|ref|NC_002077.1|	2785	2821	100	25	0	270
+adeno-reads36.fasta.000000620/L	0	36	F	gi|9632547|ref|NC_002077.1|	348	384	100	13	0	252
+adeno-reads36.fasta.000000620/R	0	36	R	gi|9632547|ref|NC_002077.1|	564	600	100	13	0	-252
+adeno-reads36.fasta.000000646/L	0	36	F	gi|9632547|ref|NC_002077.1|	3471	3507	100	7	0	252
+adeno-reads36.fasta.000000646/R	0	36	R	gi|9632547|ref|NC_002077.1|	3687	3723	100	7	0	-252
+adeno-reads36.fasta.000000684/L	0	36	R	gi|9632547|ref|NC_002077.1|	4357	4393	100	33	0	-262
+adeno-reads36.fasta.000000684/R	0	36	F	gi|9632547|ref|NC_002077.1|	4131	4167	100	33	0	262
+adeno-reads36.fasta.000000728/L	0	36	R	gi|9632547|ref|NC_002077.1|	3725	3761	100	34	0	-261
+adeno-reads36.fasta.000000728/R	0	36	F	gi|9632547|ref|NC_002077.1|	3500	3536	100	34	0	261
+adeno-reads36.fasta.000000731/L	0	36	F	gi|9632547|ref|NC_002077.1|	4338	4374	100	2	0	269
+adeno-reads36.fasta.000000731/R	0	36	R	gi|9632547|ref|NC_002077.1|	4571	4607	100	2	0	-269
+adeno-reads36.fasta.000000734/L	0	36	F	gi|9632547|ref|NC_002077.1|	2836	2872	100	6	0	264
+adeno-reads36.fasta.000000734/R	0	36	R	gi|9632547|ref|NC_002077.1|	3064	3100	100	6	0	-264
+adeno-reads36.fasta.000000742/L	0	36	F	gi|9632547|ref|NC_002077.1|	232	268	100	3	0	259
+adeno-reads36.fasta.000000742/R	0	36	R	gi|9632547|ref|NC_002077.1|	455	491	100	3	0	-259
+adeno-reads36.fasta.000000748/L	0	36	R	gi|9632547|ref|NC_002077.1|	2395	2431	100	35	0	-240
+adeno-reads36.fasta.000000748/R	0	36	F	gi|9632547|ref|NC_002077.1|	2191	2227	100	35	0	240
+adeno-reads36.fasta.000000751/L	0	36	R	gi|9632547|ref|NC_002077.1|	330	366	100	23	0	-262
+adeno-reads36.fasta.000000751/R	0	36	F	gi|9632547|ref|NC_002077.1|	104	140	100	23	0	262
+adeno-reads36.fasta.000000767/L	0	36	F	gi|9632547|ref|NC_002077.1|	471	507	100	0	0	248
+adeno-reads36.fasta.000000767/R	0	36	R	gi|9632547|ref|NC_002077.1|	683	719	100	0	0	-248
+adeno-reads36.fasta.000000771/L	0	36	R	gi|9632547|ref|NC_002077.1|	1290	1326	100	22	0	-247
+adeno-reads36.fasta.000000771/R	0	36	F	gi|9632547|ref|NC_002077.1|	1079	1115	100	22	0	247
+adeno-reads36.fasta.000000822/L	0	36	F	gi|9632547|ref|NC_002077.1|	3687	3723	100	8	0	254
+adeno-reads36.fasta.000000822/R	0	36	R	gi|9632547|ref|NC_002077.1|	3905	3941	100	8	0	-254
+adeno-reads36.fasta.000000847/L	0	36	R	gi|9632547|ref|NC_002077.1|	4212	4248	100	18	0	-256
+adeno-reads36.fasta.000000847/R	0	36	F	gi|9632547|ref|NC_002077.1|	3992	4028	100	18	0	256
+adeno-reads36.fasta.000000856/L	0	36	F	gi|9632547|ref|NC_002077.1|	356	392	100	14	0	264
+adeno-reads36.fasta.000000856/R	0	36	R	gi|9632547|ref|NC_002077.1|	584	620	100	14	0	-264
+adeno-reads36.fasta.000000886/L	0	36	R	gi|9632547|ref|NC_002077.1|	1785	1821	100	27	0	-267
+adeno-reads36.fasta.000000886/R	0	36	F	gi|9632547|ref|NC_002077.1|	1554	1590	100	27	0	267
+adeno-reads36.fasta.000000958/L	0	36	R	gi|9632547|ref|NC_002077.1|	2488	2524	100	26	0	-256
+adeno-reads36.fasta.000000958/R	0	36	F	gi|9632547|ref|NC_002077.1|	2268	2304	100	26	0	256
diff --git a/apps/razers3/tests/pe-adeno-reads36_2-i99-tc1.razers b/apps/razers3/tests/pe-adeno-reads36_2-i99-tc1.razers
index f64495a..f3405b6 100644
--- a/apps/razers3/tests/pe-adeno-reads36_2-i99-tc1.razers
+++ b/apps/razers3/tests/pe-adeno-reads36_2-i99-tc1.razers
@@ -1,42 +1,76 @@
-adeno-reads36.fasta.000000077/L	0	36	R	gi|9632547|ref|NC_002077.1|	2877	2913	100	11	0	-266
-adeno-reads36.fasta.000000077/R	0	36	F	gi|9632547|ref|NC_002077.1|	2647	2683	100	11	0	266
-adeno-reads36.fasta.000000171/L	0	36	R	gi|9632547|ref|NC_002077.1|	4631	4667	100	0	0	-263
-adeno-reads36.fasta.000000171/R	0	36	F	gi|9632547|ref|NC_002077.1|	4404	4440	100	0	0	263
-adeno-reads36.fasta.000000223/L	0	36	R	gi|9632547|ref|NC_002077.1|	3029	3065	100	3	0	-266
-adeno-reads36.fasta.000000223/R	0	36	F	gi|9632547|ref|NC_002077.1|	2799	2835	100	3	0	266
-adeno-reads36.fasta.000000264/L	0	36	R	gi|9632547|ref|NC_002077.1|	1145	1181	100	19	0	-268
-adeno-reads36.fasta.000000264/R	0	36	F	gi|9632547|ref|NC_002077.1|	913	949	100	19	0	268
-adeno-reads36.fasta.000000267/L	0	36	R	gi|9632547|ref|NC_002077.1|	3787	3823	100	2	0	-257
-adeno-reads36.fasta.000000267/R	0	36	F	gi|9632547|ref|NC_002077.1|	3566	3602	100	2	0	257
-adeno-reads36.fasta.000000315/L	0	36	R	gi|9632547|ref|NC_002077.1|	2855	2891	100	4	0	-260
-adeno-reads36.fasta.000000315/R	0	36	F	gi|9632547|ref|NC_002077.1|	2631	2667	100	4	0	260
-adeno-reads36.fasta.000000337/L	0	36	R	gi|9632547|ref|NC_002077.1|	2183	2219	100	13	0	-268
-adeno-reads36.fasta.000000337/R	0	36	F	gi|9632547|ref|NC_002077.1|	1951	1987	100	13	0	268
-adeno-reads36.fasta.000000369/L	0	36	R	gi|9632547|ref|NC_002077.1|	2302	2338	100	12	0	-261
-adeno-reads36.fasta.000000369/R	0	36	F	gi|9632547|ref|NC_002077.1|	2077	2113	100	12	0	261
-adeno-reads36.fasta.000000434/L	0	36	R	gi|9632547|ref|NC_002077.1|	3371	3407	100	7	0	-267
-adeno-reads36.fasta.000000434/R	0	36	F	gi|9632547|ref|NC_002077.1|	3140	3176	100	7	0	267
-adeno-reads36.fasta.000000517/L	0	36	R	gi|9632547|ref|NC_002077.1|	1820	1856	100	15	0	-257
-adeno-reads36.fasta.000000517/R	0	36	F	gi|9632547|ref|NC_002077.1|	1599	1635	100	15	0	257
-adeno-reads36.fasta.000000552/L	0	36	R	gi|9632547|ref|NC_002077.1|	393	429	100	20	0	-267
-adeno-reads36.fasta.000000552/R	0	36	F	gi|9632547|ref|NC_002077.1|	162	198	100	20	0	267
-adeno-reads36.fasta.000000553/L	0	36	R	gi|9632547|ref|NC_002077.1|	1997	2033	100	14	0	-265
-adeno-reads36.fasta.000000553/R	0	36	F	gi|9632547|ref|NC_002077.1|	1768	1804	100	14	0	265
-adeno-reads36.fasta.000000618/L	0	36	R	gi|9632547|ref|NC_002077.1|	3019	3055	100	8	0	-270
-adeno-reads36.fasta.000000618/R	0	36	F	gi|9632547|ref|NC_002077.1|	2785	2821	100	8	0	270
-adeno-reads36.fasta.000000684/L	0	36	R	gi|9632547|ref|NC_002077.1|	4357	4393	100	16	0	-262
-adeno-reads36.fasta.000000684/R	0	36	F	gi|9632547|ref|NC_002077.1|	4131	4167	100	16	0	262
-adeno-reads36.fasta.000000728/L	0	36	R	gi|9632547|ref|NC_002077.1|	3725	3761	100	17	0	-261
-adeno-reads36.fasta.000000728/R	0	36	F	gi|9632547|ref|NC_002077.1|	3500	3536	100	17	0	261
-adeno-reads36.fasta.000000748/L	0	36	R	gi|9632547|ref|NC_002077.1|	2395	2431	100	18	0	-240
-adeno-reads36.fasta.000000748/R	0	36	F	gi|9632547|ref|NC_002077.1|	2191	2227	100	18	0	240
-adeno-reads36.fasta.000000751/L	0	36	R	gi|9632547|ref|NC_002077.1|	330	366	100	6	0	-262
-adeno-reads36.fasta.000000751/R	0	36	F	gi|9632547|ref|NC_002077.1|	104	140	100	6	0	262
-adeno-reads36.fasta.000000771/L	0	36	R	gi|9632547|ref|NC_002077.1|	1290	1326	100	5	0	-247
-adeno-reads36.fasta.000000771/R	0	36	F	gi|9632547|ref|NC_002077.1|	1079	1115	100	5	0	247
-adeno-reads36.fasta.000000847/L	0	36	R	gi|9632547|ref|NC_002077.1|	4212	4248	100	1	0	-256
-adeno-reads36.fasta.000000847/R	0	36	F	gi|9632547|ref|NC_002077.1|	3992	4028	100	1	0	256
-adeno-reads36.fasta.000000886/L	0	36	R	gi|9632547|ref|NC_002077.1|	1785	1821	100	10	0	-267
-adeno-reads36.fasta.000000886/R	0	36	F	gi|9632547|ref|NC_002077.1|	1554	1590	100	10	0	267
-adeno-reads36.fasta.000000958/L	0	36	R	gi|9632547|ref|NC_002077.1|	2488	2524	100	9	0	-256
-adeno-reads36.fasta.000000958/R	0	36	F	gi|9632547|ref|NC_002077.1|	2268	2304	100	9	0	256
+adeno-reads36.fasta.000000018/L	0	36	F	gi|9632547|ref|NC_002077.1|	4088	4124	100	9	0	266
+adeno-reads36.fasta.000000018/R	0	36	R	gi|9632547|ref|NC_002077.1|	4318	4354	100	9	0	-266
+adeno-reads36.fasta.000000026/L	0	36	F	gi|9632547|ref|NC_002077.1|	2484	2520	100	5	0	270
+adeno-reads36.fasta.000000026/R	0	36	R	gi|9632547|ref|NC_002077.1|	2718	2754	100	5	0	-270
+adeno-reads36.fasta.000000049/L	0	36	F	gi|9632547|ref|NC_002077.1|	1183	1219	100	10	0	269
+adeno-reads36.fasta.000000049/R	0	36	R	gi|9632547|ref|NC_002077.1|	1416	1452	100	10	0	-269
+adeno-reads36.fasta.000000077/L	0	36	R	gi|9632547|ref|NC_002077.1|	2877	2913	100	28	0	-266
+adeno-reads36.fasta.000000077/R	0	36	F	gi|9632547|ref|NC_002077.1|	2647	2683	100	28	0	266
+adeno-reads36.fasta.000000171/L	0	36	R	gi|9632547|ref|NC_002077.1|	4631	4667	100	17	0	-263
+adeno-reads36.fasta.000000171/R	0	36	F	gi|9632547|ref|NC_002077.1|	4404	4440	100	17	0	263
+adeno-reads36.fasta.000000223/L	0	36	R	gi|9632547|ref|NC_002077.1|	3029	3065	100	20	0	-266
+adeno-reads36.fasta.000000223/R	0	36	F	gi|9632547|ref|NC_002077.1|	2799	2835	100	20	0	266
+adeno-reads36.fasta.000000260/L	0	36	F	gi|9632547|ref|NC_002077.1|	226	262	100	12	0	267
+adeno-reads36.fasta.000000260/R	0	36	R	gi|9632547|ref|NC_002077.1|	457	493	100	12	0	-267
+adeno-reads36.fasta.000000264/L	0	36	R	gi|9632547|ref|NC_002077.1|	1145	1181	100	36	0	-268
+adeno-reads36.fasta.000000264/R	0	36	F	gi|9632547|ref|NC_002077.1|	913	949	100	36	0	268
+adeno-reads36.fasta.000000267/L	0	36	R	gi|9632547|ref|NC_002077.1|	3787	3823	100	19	0	-257
+adeno-reads36.fasta.000000267/R	0	36	F	gi|9632547|ref|NC_002077.1|	3566	3602	100	19	0	257
+adeno-reads36.fasta.000000273/L	0	36	F	gi|9632547|ref|NC_002077.1|	3718	3754	100	11	0	263
+adeno-reads36.fasta.000000273/R	0	36	R	gi|9632547|ref|NC_002077.1|	3945	3981	100	11	0	-263
+adeno-reads36.fasta.000000278/L	0	36	F	gi|9632547|ref|NC_002077.1|	1764	1800	100	4	0	268
+adeno-reads36.fasta.000000278/R	0	36	R	gi|9632547|ref|NC_002077.1|	1996	2032	100	4	0	-268
+adeno-reads36.fasta.000000315/L	0	36	R	gi|9632547|ref|NC_002077.1|	2855	2891	100	21	0	-260
+adeno-reads36.fasta.000000315/R	0	36	F	gi|9632547|ref|NC_002077.1|	2631	2667	100	21	0	260
+adeno-reads36.fasta.000000337/L	0	36	R	gi|9632547|ref|NC_002077.1|	2183	2219	100	30	0	-268
+adeno-reads36.fasta.000000337/R	0	36	F	gi|9632547|ref|NC_002077.1|	1951	1987	100	30	0	268
+adeno-reads36.fasta.000000369/L	0	36	R	gi|9632547|ref|NC_002077.1|	2302	2338	100	29	0	-261
+adeno-reads36.fasta.000000369/R	0	36	F	gi|9632547|ref|NC_002077.1|	2077	2113	100	29	0	261
+adeno-reads36.fasta.000000379/L	0	36	F	gi|9632547|ref|NC_002077.1|	780	816	100	1	0	266
+adeno-reads36.fasta.000000379/R	0	36	R	gi|9632547|ref|NC_002077.1|	1010	1046	100	1	0	-266
+adeno-reads36.fasta.000000392/L	0	36	F	gi|9632547|ref|NC_002077.1|	3777	3813	100	16	0	263
+adeno-reads36.fasta.000000392/R	0	36	R	gi|9632547|ref|NC_002077.1|	4004	4040	100	16	0	-263
+adeno-reads36.fasta.000000434/L	0	36	R	gi|9632547|ref|NC_002077.1|	3371	3407	100	24	0	-267
+adeno-reads36.fasta.000000434/R	0	36	F	gi|9632547|ref|NC_002077.1|	3140	3176	100	24	0	267
+adeno-reads36.fasta.000000517/L	0	36	R	gi|9632547|ref|NC_002077.1|	1820	1856	100	32	0	-257
+adeno-reads36.fasta.000000517/R	0	36	F	gi|9632547|ref|NC_002077.1|	1599	1635	100	32	0	257
+adeno-reads36.fasta.000000548/L	0	36	F	gi|9632547|ref|NC_002077.1|	2482	2518	100	15	0	270
+adeno-reads36.fasta.000000548/R	0	36	R	gi|9632547|ref|NC_002077.1|	2716	2752	100	15	0	-270
+adeno-reads36.fasta.000000552/L	0	36	R	gi|9632547|ref|NC_002077.1|	393	429	100	37	0	-267
+adeno-reads36.fasta.000000552/R	0	36	F	gi|9632547|ref|NC_002077.1|	162	198	100	37	0	267
+adeno-reads36.fasta.000000553/L	0	36	R	gi|9632547|ref|NC_002077.1|	1997	2033	100	31	0	-265
+adeno-reads36.fasta.000000553/R	0	36	F	gi|9632547|ref|NC_002077.1|	1768	1804	100	31	0	265
+adeno-reads36.fasta.000000618/L	0	36	R	gi|9632547|ref|NC_002077.1|	3019	3055	100	25	0	-270
+adeno-reads36.fasta.000000618/R	0	36	F	gi|9632547|ref|NC_002077.1|	2785	2821	100	25	0	270
+adeno-reads36.fasta.000000620/L	0	36	F	gi|9632547|ref|NC_002077.1|	348	384	100	13	0	252
+adeno-reads36.fasta.000000620/R	0	36	R	gi|9632547|ref|NC_002077.1|	564	600	100	13	0	-252
+adeno-reads36.fasta.000000646/L	0	36	F	gi|9632547|ref|NC_002077.1|	3471	3507	100	7	0	252
+adeno-reads36.fasta.000000646/R	0	36	R	gi|9632547|ref|NC_002077.1|	3687	3723	100	7	0	-252
+adeno-reads36.fasta.000000684/L	0	36	R	gi|9632547|ref|NC_002077.1|	4357	4393	100	33	0	-262
+adeno-reads36.fasta.000000684/R	0	36	F	gi|9632547|ref|NC_002077.1|	4131	4167	100	33	0	262
+adeno-reads36.fasta.000000728/L	0	36	R	gi|9632547|ref|NC_002077.1|	3725	3761	100	34	0	-261
+adeno-reads36.fasta.000000728/R	0	36	F	gi|9632547|ref|NC_002077.1|	3500	3536	100	34	0	261
+adeno-reads36.fasta.000000731/L	0	36	F	gi|9632547|ref|NC_002077.1|	4338	4374	100	2	0	269
+adeno-reads36.fasta.000000731/R	0	36	R	gi|9632547|ref|NC_002077.1|	4571	4607	100	2	0	-269
+adeno-reads36.fasta.000000734/L	0	36	F	gi|9632547|ref|NC_002077.1|	2836	2872	100	6	0	264
+adeno-reads36.fasta.000000734/R	0	36	R	gi|9632547|ref|NC_002077.1|	3064	3100	100	6	0	-264
+adeno-reads36.fasta.000000742/L	0	36	F	gi|9632547|ref|NC_002077.1|	232	268	100	3	0	259
+adeno-reads36.fasta.000000742/R	0	36	R	gi|9632547|ref|NC_002077.1|	455	491	100	3	0	-259
+adeno-reads36.fasta.000000748/L	0	36	R	gi|9632547|ref|NC_002077.1|	2395	2431	100	35	0	-240
+adeno-reads36.fasta.000000748/R	0	36	F	gi|9632547|ref|NC_002077.1|	2191	2227	100	35	0	240
+adeno-reads36.fasta.000000751/L	0	36	R	gi|9632547|ref|NC_002077.1|	330	366	100	23	0	-262
+adeno-reads36.fasta.000000751/R	0	36	F	gi|9632547|ref|NC_002077.1|	104	140	100	23	0	262
+adeno-reads36.fasta.000000767/L	0	36	F	gi|9632547|ref|NC_002077.1|	471	507	100	0	0	248
+adeno-reads36.fasta.000000767/R	0	36	R	gi|9632547|ref|NC_002077.1|	683	719	100	0	0	-248
+adeno-reads36.fasta.000000771/L	0	36	R	gi|9632547|ref|NC_002077.1|	1290	1326	100	22	0	-247
+adeno-reads36.fasta.000000771/R	0	36	F	gi|9632547|ref|NC_002077.1|	1079	1115	100	22	0	247
+adeno-reads36.fasta.000000822/L	0	36	F	gi|9632547|ref|NC_002077.1|	3687	3723	100	8	0	254
+adeno-reads36.fasta.000000822/R	0	36	R	gi|9632547|ref|NC_002077.1|	3905	3941	100	8	0	-254
+adeno-reads36.fasta.000000847/L	0	36	R	gi|9632547|ref|NC_002077.1|	4212	4248	100	18	0	-256
+adeno-reads36.fasta.000000847/R	0	36	F	gi|9632547|ref|NC_002077.1|	3992	4028	100	18	0	256
+adeno-reads36.fasta.000000856/L	0	36	F	gi|9632547|ref|NC_002077.1|	356	392	100	14	0	264
+adeno-reads36.fasta.000000856/R	0	36	R	gi|9632547|ref|NC_002077.1|	584	620	100	14	0	-264
+adeno-reads36.fasta.000000886/L	0	36	R	gi|9632547|ref|NC_002077.1|	1785	1821	100	27	0	-267
+adeno-reads36.fasta.000000886/R	0	36	F	gi|9632547|ref|NC_002077.1|	1554	1590	100	27	0	267
+adeno-reads36.fasta.000000958/L	0	36	R	gi|9632547|ref|NC_002077.1|	2488	2524	100	26	0	-256
+adeno-reads36.fasta.000000958/R	0	36	F	gi|9632547|ref|NC_002077.1|	2268	2304	100	26	0	256
diff --git a/apps/razers3/tests/pe-adeno-reads36_2-of4-tc0.sam b/apps/razers3/tests/pe-adeno-reads36_2-of4-tc0.sam
index 8b9f0e9..06b0421 100644
--- a/apps/razers3/tests/pe-adeno-reads36_2-of4-tc0.sam
+++ b/apps/razers3/tests/pe-adeno-reads36_2-of4-tc0.sam
@@ -1,5 +1,5 @@
 @HD	VN:1.4	SO:coordinate
- at PG	ID:razers3	VN:3.2[fffb824I	PN:razers3	CL:-tc 0 adeno-genome.fa adeno-reads36_1.fa adeno-reads36_2.fa -o pe-adeno-reads36_2-of4-tc0.sam
+ at PG	ID:razers3	VN:3.3	PN:razers3	CL:-tc 0 adeno-genome.fa adeno-reads36_1.fa adeno-reads36_2.fa -o pe-adeno-reads36_2-of4-tc0.sam
 @SQ	SN:gi|9632547|ref|NC_002077.1|	LN:4718
 adeno-reads36.fasta.000000018	99	gi|9632547|ref|NC_002077.1|	4089	255	36M	=	4319	266	CCTCACACAGATGGACACTTTCACCCGTCTCCTCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	MD:Z:36
 adeno-reads36.fasta.000000018	147	gi|9632547|ref|NC_002077.1|	4319	255	36M	=	4089	-266	GCAGTACACATCCAATTATGCAAAATCTGCCAACGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	MD:Z:36
diff --git a/apps/razers3/tests/pe-adeno-reads36_2-of4-tc1.sam b/apps/razers3/tests/pe-adeno-reads36_2-of4-tc1.sam
index 004a3ac..842b270 100644
--- a/apps/razers3/tests/pe-adeno-reads36_2-of4-tc1.sam
+++ b/apps/razers3/tests/pe-adeno-reads36_2-of4-tc1.sam
@@ -1,5 +1,5 @@
 @HD	VN:1.4	SO:coordinate
- at PG	ID:razers3	VN:3.2[fffb824I	PN:razers3	CL:-tc 1 adeno-genome.fa adeno-reads36_1.fa adeno-reads36_2.fa -o pe-adeno-reads36_2-of4-tc1.sam
+ at PG	ID:razers3	VN:3.3	PN:razers3	CL:-tc 1 adeno-genome.fa adeno-reads36_1.fa adeno-reads36_2.fa -o pe-adeno-reads36_2-of4-tc1.sam
 @SQ	SN:gi|9632547|ref|NC_002077.1|	LN:4718
 adeno-reads36.fasta.000000018	99	gi|9632547|ref|NC_002077.1|	4089	255	36M	=	4319	266	CCTCACACAGATGGACACTTTCACCCGTCTCCTCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	MD:Z:36
 adeno-reads36.fasta.000000018	147	gi|9632547|ref|NC_002077.1|	4319	255	36M	=	4089	-266	GCAGTACACATCCAATTATGCAAAATCTGCCAACGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	MD:Z:36
diff --git a/apps/razers3/tests/run_tests.py b/apps/razers3/tests/run_tests.py
index bc45a94..3e3c16d 100644
--- a/apps/razers3/tests/run_tests.py
+++ b/apps/razers3/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for the razers3 program.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/razers3/tests/run_tests_sequential.py b/apps/razers3/tests/run_tests_sequential.py
index 51d2284..eb506d9 100644
--- a/apps/razers3/tests/run_tests_sequential.py
+++ b/apps/razers3/tests/run_tests_sequential.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Sequential tests (num_threads == 0) for RazerS 3.
 
 See run_tests.py for the actual tests.  We only call the code from there.
diff --git a/apps/razers3/tests/se-adeno-reads100_1-of4-tc0.sam b/apps/razers3/tests/se-adeno-reads100_1-of4-tc0.sam
index ba1c07f..4b6dda4 100644
--- a/apps/razers3/tests/se-adeno-reads100_1-of4-tc0.sam
+++ b/apps/razers3/tests/se-adeno-reads100_1-of4-tc0.sam
@@ -1,5 +1,5 @@
 @HD	VN:1.4	SO:coordinate
- at PG	ID:razers3	VN:3.2[fffb824I	PN:razers3	CL:-tc 0 adeno-genome.fa adeno-reads100_1.fa -o se-adeno-reads100_1-of4-tc0.sam
+ at PG	ID:razers3	VN:3.3	PN:razers3	CL:-tc 0 adeno-genome.fa adeno-reads100_1.fa -o se-adeno-reads100_1-of4-tc0.sam
 @SQ	SN:gi|9632547|ref|NC_002077.1|	LN:4718
 adeno-reads100.fasta.000000000	16	gi|9632547|ref|NC_002077.1|	4411	255	100M	*	0	0	GTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	MD:Z:100
 adeno-reads100.fasta.000000001	16	gi|9632547|ref|NC_002077.1|	4567	255	100M	*	0	0	GTCATCGGGTTACCCCTAGTGATGGAGTTGCCCACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	MD:Z:100
diff --git a/apps/razers3/tests/se-adeno-reads100_1-of4-tc1.sam b/apps/razers3/tests/se-adeno-reads100_1-of4-tc1.sam
index 7bcc1f8..fff0c70 100644
--- a/apps/razers3/tests/se-adeno-reads100_1-of4-tc1.sam
+++ b/apps/razers3/tests/se-adeno-reads100_1-of4-tc1.sam
@@ -1,5 +1,5 @@
 @HD	VN:1.4	SO:coordinate
- at PG	ID:razers3	VN:3.2[fffb824I	PN:razers3	CL:-tc 1 adeno-genome.fa adeno-reads100_1.fa -o se-adeno-reads100_1-of4-tc1.sam
+ at PG	ID:razers3	VN:3.3	PN:razers3	CL:-tc 1 adeno-genome.fa adeno-reads100_1.fa -o se-adeno-reads100_1-of4-tc1.sam
 @SQ	SN:gi|9632547|ref|NC_002077.1|	LN:4718
 adeno-reads100.fasta.000000000	16	gi|9632547|ref|NC_002077.1|	4411	255	100M	*	0	0	GTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	MD:Z:100
 adeno-reads100.fasta.000000001	16	gi|9632547|ref|NC_002077.1|	4567	255	100M	*	0	0	GTCATCGGGTTACCCCTAGTGATGGAGTTGCCCACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	MD:Z:100
diff --git a/apps/razers3/tests/se-adeno-reads36_1-of4-tc0.sam b/apps/razers3/tests/se-adeno-reads36_1-of4-tc0.sam
index 3dff94a..61d437d 100644
--- a/apps/razers3/tests/se-adeno-reads36_1-of4-tc0.sam
+++ b/apps/razers3/tests/se-adeno-reads36_1-of4-tc0.sam
@@ -1,5 +1,5 @@
 @HD	VN:1.4	SO:coordinate
- at PG	ID:razers3	VN:3.2[fffb824I	PN:razers3	CL:-tc 0 adeno-genome.fa adeno-reads36_1.fa -o se-adeno-reads36_1-of4-tc0.sam
+ at PG	ID:razers3	VN:3.3	PN:razers3	CL:-tc 0 adeno-genome.fa adeno-reads36_1.fa -o se-adeno-reads36_1-of4-tc0.sam
 @SQ	SN:gi|9632547|ref|NC_002077.1|	LN:4718
 adeno-reads36.fasta.000000000	0	gi|9632547|ref|NC_002077.1|	3098	255	36M	*	0	0	TTCACCACGTGACTGGCAGCGACTCATCAACAACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	MD:Z:36
 adeno-reads36.fasta.000000001	0	gi|9632547|ref|NC_002077.1|	416	255	36M	*	0	0	AGCTGGGTGGCCGAGAAGGAATGGGATCTGCCCCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	MD:Z:26G9
diff --git a/apps/razers3/tests/se-adeno-reads36_1-of4-tc1.sam b/apps/razers3/tests/se-adeno-reads36_1-of4-tc1.sam
index d637f9f..2435e5c 100644
--- a/apps/razers3/tests/se-adeno-reads36_1-of4-tc1.sam
+++ b/apps/razers3/tests/se-adeno-reads36_1-of4-tc1.sam
@@ -1,5 +1,5 @@
 @HD	VN:1.4	SO:coordinate
- at PG	ID:razers3	VN:3.2[fffb824I	PN:razers3	CL:-tc 1 adeno-genome.fa adeno-reads36_1.fa -o se-adeno-reads36_1-of4-tc1.sam
+ at PG	ID:razers3	VN:3.3	PN:razers3	CL:-tc 1 adeno-genome.fa adeno-reads36_1.fa -o se-adeno-reads36_1-of4-tc1.sam
 @SQ	SN:gi|9632547|ref|NC_002077.1|	LN:4718
 adeno-reads36.fasta.000000000	0	gi|9632547|ref|NC_002077.1|	3098	255	36M	*	0	0	TTCACCACGTGACTGGCAGCGACTCATCAACAACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	MD:Z:36
 adeno-reads36.fasta.000000001	0	gi|9632547|ref|NC_002077.1|	416	255	36M	*	0	0	AGCTGGGTGGCCGAGAAGGAATGGGATCTGCCCCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	MD:Z:26G9
diff --git a/apps/rep_sep/CMakeLists.txt b/apps/rep_sep/CMakeLists.txt
index 6f6ed07..c7a6535 100644
--- a/apps/rep_sep/CMakeLists.txt
+++ b/apps/rep_sep/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_rep_sep CXX)
 message (STATUS "Configuring apps/rep_sep")
 
-set (SEQAN_APP_VERSION "0.1.5")
+set (SEQAN_APP_VERSION "0.1.7")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/sak/CMakeLists.txt b/apps/sak/CMakeLists.txt
index 2978ef3..3d6425e 100644
--- a/apps/sak/CMakeLists.txt
+++ b/apps/sak/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_sak CXX)
 message (STATUS "Configuring apps/sak")
 
-set (SEQAN_APP_VERSION "0.4.2")
+set (SEQAN_APP_VERSION "0.4.4")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/sak/sak.cpp b/apps/sak/sak.cpp
index eea7203..bb1f23a 100644
--- a/apps/sak/sak.cpp
+++ b/apps/sak/sak.cpp
@@ -84,7 +84,7 @@ struct SakOptions
 
     SakOptions() :
         verbosity(1),
-        seqInfixBegin(seqan::maxValue<uint64_t>()),
+        seqInfixBegin(0),
         seqInfixEnd(seqan::maxValue<uint64_t>()),
         reverseComplement(false),
         maxLength(seqan::maxValue<uint64_t>())
@@ -369,12 +369,18 @@ int main(int argc, char ** argv)
     // -----------------------------------------------------------------------
     startTime = seqan::sysTime();
 
-    unsigned idx = 0;
+
     uint64_t charsWritten = 0;
     seqan::CharString id;
     seqan::CharString seq;
     seqan::CharString quals;
-    while (!atEnd(inFile) && charsWritten < options.maxLength && idx < endIdx)
+
+    auto seqIndicesBeg = begin(options.seqIndices, seqan::Standard());
+    auto seqIndicesEnd = end(options.seqIndices, seqan::Standard());
+    auto seqIndexRangesBeg = begin(options.seqIndexRanges, seqan::Standard());
+    auto seqIndexRangesEnd = end(options.seqIndexRanges, seqan::Standard());
+
+    for (unsigned idx = 0; !atEnd(inFile) && charsWritten < options.maxLength && idx < endIdx; ++idx)
     {
         try
         {
@@ -386,78 +392,39 @@ int main(int argc, char ** argv)
             return 1;
         }
 
-        // Check whether to write out sequence.
-        bool writeOut = false;
-        if (empty(options.seqIndices) && empty(options.seqIndexRanges))
-            writeOut = true;
         // One of options.seqIndices.
-        if (!writeOut)
-        {
-            for (unsigned i = 0; i < length(options.seqIndices); ++i)
-            {
-                if (options.seqIndices[i] == idx)
-                {
-                    writeOut = true;
-                    break;
-                }
-            }
-        }
+        if (!empty(options.seqIndices) && std::find(seqIndicesBeg, seqIndicesEnd, idx) == seqIndicesEnd)
+            continue;
+
         // One of options.seqIndexRanges.
-        if (!writeOut)
-        {
-            for (unsigned i = 0; i < length(options.seqIndexRanges); ++i)
-            {
-                if (idx >= options.seqIndexRanges[i].i1 && idx < options.seqIndexRanges[i].i2)
-                {
-                    writeOut = true;
-                    break;
-                }
-            }
-        }
+        if (!empty(options.seqIndexRanges) && std::none_of(seqIndexRangesBeg, seqIndexRangesEnd,
+                        [idx](seqan::Pair<uint64_t> rng) { return idx >= rng.i1 && idx < rng.i2; } ))
+            continue;
+
         // Name pattern matches.
-        if (!writeOut && !empty(options.readPattern))
-        {
-            unsigned l = length(options.readPattern);
-            if (l > length(id))
-                l = length(id);
-            if (prefix(id, l) == prefix(options.readPattern, l))
-                writeOut = true;
-        }
+        if (!startsWith(id, options.readPattern))
+            continue;
 
-        // Write out if we want this.
-        if (writeOut)
+        // Get begin and end index of infix to write out.
+        uint64_t infixBegin = seqan::_min(options.seqInfixBegin, length(seq));
+        uint64_t infixEnd = seqan::_max(seqan::_min(options.seqInfixEnd, length(seq)), infixBegin);
+
+        if (options.verbosity >= 3)
+            std::cerr << "INFIX\tbegin:" << infixBegin << "\tend:" << infixEnd << "\n";
+
+        if (options.reverseComplement)
         {
-            // Get begin and end index of infix to write out.
-            uint64_t infixBegin = 0;
-            if (options.seqInfixBegin != seqan::maxValue<uint64_t>())
-                infixBegin = options.seqInfixBegin;
-            if (infixBegin > length(seq))
-                infixBegin = length(seq);
-            uint64_t infixEnd = length(seq);
-            if (options.seqInfixEnd < length(seq))
-                infixEnd = options.seqInfixEnd;
-            if (infixEnd < infixBegin)
-                infixEnd = infixBegin;
-            if (options.verbosity >= 3)
-                std::cerr << "INFIX\tbegin:" << infixBegin << "\tend:" << infixEnd << "\n";
-
-            if (options.reverseComplement)
-            {
-                seqan::Dna5String seqCopy = seq;
-                reverseComplement(seqCopy);
-                reverse(quals);
-                infixEnd = length(seq) - infixEnd;
-                infixBegin = length(seq) - infixBegin;
-                std::swap(infixEnd, infixBegin);
-
-                writeRecord(outFile, id, infix(seqCopy, infixBegin, infixEnd), infix(quals, infixBegin, infixEnd));
-            }
-            else
-                writeRecord(outFile, id, infix(seq, infixBegin, infixEnd), infix(quals, infixBegin, infixEnd));
+            seqan::Dna5String seqCopy = seq;
+            reverseComplement(seqCopy);
+            reverse(quals);
+            infixEnd = length(seq) - infixEnd;
+            infixBegin = length(seq) - infixBegin;
+            std::swap(infixEnd, infixBegin);
+
+            writeRecord(outFile, id, infix(seqCopy, infixBegin, infixEnd), infix(quals, infixBegin, infixEnd));
         }
-
-        // Advance counter idx.
-        idx += 1;
+        else
+            writeRecord(outFile, id, infix(seq, infixBegin, infixEnd), infix(quals, infixBegin, infixEnd));
     }
 
     if (options.verbosity >= 2)
diff --git a/apps/sak/tests/adeno.sn.fa b/apps/sak/tests/adeno.sn.fa
index 647959c..ec57a70 100644
--- a/apps/sak/tests/adeno.sn.fa
+++ b/apps/sak/tests/adeno.sn.fa
@@ -3,8 +3,3 @@ CCTATCTAATAATATACCTTATACTGGACTAGTGCCAATATTAAAATGAAGTGGGCGTAGTGTGTAATTT
 GATTGGGTGGAGGTGTGGCTTTGGCGTGCTTGTAAGTTTGGGCGGATGAGGAAGTGGGGCGCGGCGTGGG
 AGCCGGGCGCGCCGGATGTGACGTTTTAGACGCCATTTTACACGGAAATGATGTTTTTTGGGCGTTGTTT
 GTGCAAATTTTGTGTTTTAGGCGCGAAAACTGAAATGCGGAAGTGAAAATTGATGACGGCAATTTTATTA
->gi|51527264|ref|NC_003266.2| Human adenovirus E, firsT 280 base pairs
-CATCATCAATAATATACCTTATTTTTTTTGTGTGAGTTAATATGCAAATAAGGCGTGAAAATTTGGGGAT
-GGGGCGCGCTGATTGGCTGTGACAGCGGCGTTCGTTAGGGGCGGGGCAGGTGACGTTTTGATGACGCGAC
-TATGAGGAGGAGTTAGTTTGCAAGTTCTGGTGGGGAAAAGTGACGTCAAACGAGGTGTGGTTTAAACACG
-GAAATACTCAATTTTCCCACGCTGTCTAACAGGAAATGAGGTGTTTTTGGGCGGATGCAAGTGAAAACGG
diff --git a/apps/sak/tests/run_tests.py b/apps/sak/tests/run_tests.py
index 90a8e41..1927f2a 100755
--- a/apps/sak/tests/run_tests.py
+++ b/apps/sak/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for the sak program.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/sam2matrix/CMakeLists.txt b/apps/sam2matrix/CMakeLists.txt
index cf806bd..b27a258 100644
--- a/apps/sam2matrix/CMakeLists.txt
+++ b/apps/sam2matrix/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_sam2matrix CXX)
 message (STATUS "Configuring apps/sam2matrix")
 
-set (SEQAN_APP_VERSION "0.3.2")
+set (SEQAN_APP_VERSION "0.3.4")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/sam2matrix/tests/run_tests.py b/apps/sam2matrix/tests/run_tests.py
index 942c3c0..5cdcb91 100644
--- a/apps/sam2matrix/tests/run_tests.py
+++ b/apps/sam2matrix/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for sam2matrix.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/samcat/CMakeLists.txt b/apps/samcat/CMakeLists.txt
index ab4485f..a517812 100644
--- a/apps/samcat/CMakeLists.txt
+++ b/apps/samcat/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_samcat CXX)
 message (STATUS "Configuring apps/samcat")
 
-set (SEQAN_APP_VERSION "0.3.2")
+set (SEQAN_APP_VERSION "0.3.4")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/samcat/tests/run_tests.py b/apps/samcat/tests/run_tests.py
index 0758901..3bbe130 100755
--- a/apps/samcat/tests/run_tests.py
+++ b/apps/samcat/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for the samcat program.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/searchjoin/CMakeLists.txt b/apps/searchjoin/CMakeLists.txt
index 6cf4915..8cca23c 100644
--- a/apps/searchjoin/CMakeLists.txt
+++ b/apps/searchjoin/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_searchjoin CXX)
 message (STATUS "Configuring apps/searchjoin")
 
-set (SEQAN_APP_VERSION "0.5.2")
+set (SEQAN_APP_VERSION "0.5.4")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/searchjoin/join.cpp b/apps/searchjoin/join.cpp
index 7b991ce..1b7d356 100644
--- a/apps/searchjoin/join.cpp
+++ b/apps/searchjoin/join.cpp
@@ -42,6 +42,14 @@
 #ifdef _OPENMP
     #define _GLIBCXX_PARALLEL
     #include <omp.h>
+
+    #if defined(__INTEL_COMPILER)
+        #pragma message("The Intel Compiler crashes with _GLIBCXX_PARALLEL defined (at least until v16.0.2). Therefore, the feature will be disabled.")
+        #if __INTEL_COMPILER < 1600 || (__INTEL_COMPILER == 1600 && __INTEL_COMPILER_UPDATE <= 2)
+            #undef _GLIBCXX_PARALLEL
+        #endif
+    #endif // #if defined(__INTEL_COMPILER)
+
 #else
     #if !defined(SEQAN_IGNORE_MISSING_OPENMP) || (SEQAN_IGNORE_MISSING_OPENMP == 0)
         #pragma message("OpenMP not found! Shared-memory parallelization will be disabled in join tool.")
diff --git a/apps/searchjoin/search.cpp b/apps/searchjoin/search.cpp
index bcf384a..a286d6d 100644
--- a/apps/searchjoin/search.cpp
+++ b/apps/searchjoin/search.cpp
@@ -42,6 +42,13 @@
 #ifdef _OPENMP
     #define _GLIBCXX_PARALLEL
     #include <omp.h>
+
+    #if defined(__INTEL_COMPILER)
+        #pragma message("The Intel Compiler crashes with _GLIBCXX_PARALLEL defined (at least until v16.0.2). Therefore, the feature will be disabled.")
+        #if __INTEL_COMPILER < 1600 || (__INTEL_COMPILER == 1600 && __INTEL_COMPILER_UPDATE <= 2)
+            #undef _GLIBCXX_PARALLEL
+        #endif
+    #endif // #if defined(__INTEL_COMPILER)
 #else
     #if !defined(SEQAN_IGNORE_MISSING_OPENMP) || (SEQAN_IGNORE_MISSING_OPENMP == 0)
         #pragma message("OpenMP not found! Shared-memory parallelization will be disabled in search tool.")
diff --git a/apps/searchjoin/tests/run_tests.py b/apps/searchjoin/tests/run_tests.py
index 29ac703..6e347bb 100644
--- a/apps/searchjoin/tests/run_tests.py
+++ b/apps/searchjoin/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for search/join.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/seqan_tcoffee/CMakeLists.txt b/apps/seqan_tcoffee/CMakeLists.txt
index 5595f62..346b1c8 100644
--- a/apps/seqan_tcoffee/CMakeLists.txt
+++ b/apps/seqan_tcoffee/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_seqan_tcoffee CXX)
 message (STATUS "Configuring apps/seqan_tcoffee")
 
-set (SEQAN_APP_VERSION "1.13.2")
+set (SEQAN_APP_VERSION "1.13.4")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/seqan_tcoffee/tests/run_tests.py b/apps/seqan_tcoffee/tests/run_tests.py
index 1f128b1..53d7459 100755
--- a/apps/seqan_tcoffee/tests/run_tests.py
+++ b/apps/seqan_tcoffee/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for the seqan_tcoffee program.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/seqcons2/CMakeLists.txt b/apps/seqcons2/CMakeLists.txt
index 79a619e..b6355fa 100644
--- a/apps/seqcons2/CMakeLists.txt
+++ b/apps/seqcons2/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_seqcons2 CXX)
 message (STATUS "Configuring apps/seqcons2")
 
-set (SEQAN_APP_VERSION "2.0.3")
+set (SEQAN_APP_VERSION "2.0.5")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/seqcons2/tests/run_tests.py b/apps/seqcons2/tests/run_tests.py
index 914ee53..32b964f 100644
--- a/apps/seqcons2/tests/run_tests.py
+++ b/apps/seqcons2/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for the seqcons2 program.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/sgip/CMakeLists.txt b/apps/sgip/CMakeLists.txt
index 047c3ab..3cdd6d7 100755
--- a/apps/sgip/CMakeLists.txt
+++ b/apps/sgip/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_sgip CXX)
 message (STATUS "Configuring apps/sgip")
 
-set (SEQAN_APP_VERSION "1.4.2")
+set (SEQAN_APP_VERSION "1.4.4")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/sgip/tests/run_tests.py b/apps/sgip/tests/run_tests.py
index 77c6aea..8f38927 100755
--- a/apps/sgip/tests/run_tests.py
+++ b/apps/sgip/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for sgip.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/snp_store/CMakeLists.txt b/apps/snp_store/CMakeLists.txt
index aef898b..5a3221d 100644
--- a/apps/snp_store/CMakeLists.txt
+++ b/apps/snp_store/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_snp_store CXX)
 message (STATUS "Configuring apps/snp_store")
 
-set (SEQAN_APP_VERSION "1.3.2")
+set (SEQAN_APP_VERSION "1.3.4")
 
 # ----------------------------------------------------------------------------
 # Dependencies
@@ -18,11 +18,9 @@ set (SEQAN_APP_VERSION "1.3.2")
 
 # Search SeqAn and select dependencies.
 find_package (ZLIB)
+find_package (Boost)
 find_package (SeqAn REQUIRED)
 
-# Search BOOST, snp_store is not built if Boost is not found.
-find_package (Boost)	
-
 if (NOT Boost_FOUND OR NOT ZLIB_FOUND)
     message (STATUS "  Boost or zlib not found: Not building snp_store.")
     return ()
diff --git a/apps/snp_store/snp_store.cpp b/apps/snp_store/snp_store.cpp
index 631ee6a..cb6ad0d 100755
--- a/apps/snp_store/snp_store.cpp
+++ b/apps/snp_store/snp_store.cpp
@@ -37,7 +37,7 @@
 #include <seqan/bam_io.h>
 
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 #define SEQAN_DEFAULT_TMPDIR "C:\\TEMP\\"
 #else
 #define SEQAN_DEFAULT_TMPDIR "./"
diff --git a/apps/snp_store/snp_store.h b/apps/snp_store/snp_store.h
index 228bf45..6aaee0f 100755
--- a/apps/snp_store/snp_store.h
+++ b/apps/snp_store/snp_store.h
@@ -1799,7 +1799,7 @@ bool loadPositions(TPositions & positions,
 
 
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 
 template<typename TVal>
 double
diff --git a/apps/snp_store/tests/run_tests.py b/apps/snp_store/tests/run_tests.py
index f24303e..b6c19c5 100644
--- a/apps/snp_store/tests/run_tests.py
+++ b/apps/snp_store/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for snp_store.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/splazers/CMakeLists.txt b/apps/splazers/CMakeLists.txt
index bc5435f..dda53b9 100644
--- a/apps/splazers/CMakeLists.txt
+++ b/apps/splazers/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_splazers CXX)
 message (STATUS "Configuring apps/splazers")
 
-set (SEQAN_APP_VERSION "1.3.2")
+set (SEQAN_APP_VERSION "1.3.4")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/splazers/splazers.cpp b/apps/splazers/splazers.cpp
index cf28611..433b4f4 100644
--- a/apps/splazers/splazers.cpp
+++ b/apps/splazers/splazers.cpp
@@ -40,7 +40,7 @@
 #endif
 
 #include <seqan/platform.h>
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 	#define SEQAN_DEFAULT_TMPDIR "C:\\TEMP\\"
 #else
 	#define SEQAN_DEFAULT_TMPDIR "./"
diff --git a/apps/splazers/tests/run_tests.py b/apps/splazers/tests/run_tests.py
index b392470..2cc482e 100755
--- a/apps/splazers/tests/run_tests.py
+++ b/apps/splazers/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for splazers.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/stellar/CMakeLists.txt b/apps/stellar/CMakeLists.txt
index e0210b5..5be5713 100644
--- a/apps/stellar/CMakeLists.txt
+++ b/apps/stellar/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_stellar CXX)
 message (STATUS "Configuring apps/stellar")
 
-set (SEQAN_APP_VERSION "1.4.5")
+set (SEQAN_APP_VERSION "1.4.7")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/stellar/tests/run_tests.py b/apps/stellar/tests/run_tests.py
index ae78068..df28e7f 100755
--- a/apps/stellar/tests/run_tests.py
+++ b/apps/stellar/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for stellar.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/tree_recon/CMakeLists.txt b/apps/tree_recon/CMakeLists.txt
index 1d28817..e18c3af 100644
--- a/apps/tree_recon/CMakeLists.txt
+++ b/apps/tree_recon/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_apps_tree_recon CXX)
 message (STATUS "Configuring apps/tree_recon")
 
-set (SEQAN_APP_VERSION "1.4.2")
+set (SEQAN_APP_VERSION "1.4.4")
 
 # ----------------------------------------------------------------------------
 # Dependencies
diff --git a/apps/tree_recon/tests/run_tests.py b/apps/tree_recon/tests/run_tests.py
index 7db0847..990564f 100755
--- a/apps/tree_recon/tests/run_tests.py
+++ b/apps/tree_recon/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for the tree_recomb program.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/apps/yara/CMakeLists.txt b/apps/yara/CMakeLists.txt
index 40cd156..1098717 100644
--- a/apps/yara/CMakeLists.txt
+++ b/apps/yara/CMakeLists.txt
@@ -14,18 +14,13 @@ message (STATUS "Configuring apps/yara")
 # Dependencies
 # ----------------------------------------------------------------------------
 
-# Disable older MSVC.
-if (MSVC AND MSVC_VERSION LESS 1800)
-    message (STATUS "  Visual Studio 2012 or newer required to build yara.")
+if (COMPILER_MSVC)
+    message (STATUS "Yara is currently not build on Microsoft Visual because it requires OpenMP 3.0.")
     return ()
 endif ()
 
-# Disable parallelism in MSVC as it supports only OpenMP 2.0.
-if (NOT MSVC)
-    find_package (OpenMP)
-endif ()
-
 # Search SeqAn and select dependencies.
+find_package (OpenMP)
 find_package (ZLIB)
 find_package (BZip2)
 find_package (SeqAn REQUIRED)
@@ -49,32 +44,12 @@ endif (NOT BZIP2_FOUND)
 # App-Level Configuration
 # ----------------------------------------------------------------------------
 
-set (SEQAN_APP_VERSION "0.9.5")
+set (SEQAN_APP_VERSION "0.9.7")
 
-option (YARA_LARGE_CONTIGS "Set to ON to enable support for more than 32k contigs or contigs longer than 4Gbp." OFF)
-if (YARA_LARGE_CONTIGS)
+option (YARA_LARGE_CONTIGS "Set to OFF to disable support for more than 32k contigs or contigs longer than 4Gbp." ON)
+if (YARA_LARGE_CONTIGS AND NOT SEQAN_TRAVIS_BUILD)
   add_definitions (-DYARA_LARGE_CONTIGS=1)
-endif (YARA_LARGE_CONTIGS)
-
-option (YARA_ARCH_NATIVE "Set to OFF to disable architecture-specific optimizations, e.g. g++ -march=native." ON)
-
-# ----------------------------------------------------------------------------
-# Arch Setup
-# ----------------------------------------------------------------------------
-
-if (YARA_ARCH_NATIVE)
-  if (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG)
-    set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -march=native")
-  endif (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG)
-
-  if (CMAKE_COMPILER_IS_GNUCXX AND APPLE)
-    set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -mno-avx")
-  endif (CMAKE_COMPILER_IS_GNUCXX AND APPLE)
-
-  if (COMPILER_IS_INTEL)
-    set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -xHOST -ipo -no-prec-div -fp-model fast=2")
-  endif (COMPILER_IS_INTEL)
-endif (YARA_ARCH_NATIVE)
+endif (YARA_LARGE_CONTIGS AND NOT SEQAN_TRAVIS_BUILD)
 
 # ----------------------------------------------------------------------------
 # Disable Compiler Warnings
diff --git a/apps/yara/README.rst b/apps/yara/README.rst
index d53daa4..45e948b 100644
--- a/apps/yara/README.rst
+++ b/apps/yara/README.rst
@@ -10,29 +10,79 @@ Yara is an *exact* tool for aligning DNA sequencing reads to reference genomes.
 Main features
 ~~~~~~~~~~~~~
 
-* Exhaustive enumeration of sub-*optimal* end-to-end alignments under the edit distance;
-* Alignment of single-end and paired-end reads;
-* Speed of 10-50 Gbp/h on a desktop computer;
-* Fine-grained multi-threading;
-* Low memory footprint via a generalized FM-index;
-* Direct output in SAM or BAM format.
+* Exhaustive enumeration of sub-*optimal* end-to-end alignments under the edit distance.
+* Excellent speed, memory footprint and accuracy.
+* Accurate mapping quality computation.
+* Support for reference genomes consisiting of million of contigs.
+* Direct output in SAM/BAM format.
 
-Sequencing data
-~~~~~~~~~~~~~~~
+Supported data
+~~~~~~~~~~~~~~
 
-Yara has been tested with DNA reads (WGS, Exome and ChIP-seq) produced by the following sequencing platforms:
+Yara has been tested on DNA reads (i.e., Whole Genome, Exome, ChIP-seq, MeDIP-seq) produced by the following sequencing platforms:
 
-* Illumina GA II, HiSeq and MiSeq;
+* Illumina GA II, HiSeq and MiSeq (single-end and paired-end).
 * Life Technologies Ion Torrent Proton and PGM.
 
 Quality trimming is *necessary* for Ion Torrent reads and recommended for Illumina reads.
-Note that Yara cannot map RNA-seq reads spanning splicing sites.
 
+Unsupported data
+~~~~~~~~~~~~~~~~
+
+* RNA-seq reads spanning splicing sites.
+* Long noisy reads (e.g., Pacific Biosciences RSII, Oxford Nanopore MinION).
+
+Installation from sources
+-------------------------
+
+The following instructions assume Linux or OS X. For more information, including Windows instructions, refer to the `SeqAn getting started tutorial <http://trac.seqan.de/wiki/Tutorial/GettingStarted>`_.
+
+Software requirements
+~~~~~~~~~~~~~~~~~~~~~
+
+**A modern C++11 compiler with OpenMP 3.0 extensions is required to build Yara. If unsure, use GNU G++ 4.9 or newer.**
+
+* Git.
+* CMake 3.2 or newer.
+* G++ 4.9 or newer.
+
+Download
+~~~~~~~~
+
+Yara sources are hosted on GitHub within the SeqAn library. Download the sources by executing:
+
+::
+
+  $ git clone https://github.com/seqan/seqan.git
+
+Configuration
+~~~~~~~~~~~~~
+
+Create a build project by executing CMake as follows:
+
+::
+
+  $ mkdir yara-build
+  $ cd yara-build
+  $ cmake ../seqan -DSEQAN_BUILD_SYSTEM=APP:yara -DCMAKE_CXX_COMPILER=/usr/bin/g++-4.9
+
+Build
+~~~~~
+
+Invoke make as follows:
+
+::
+
+  $ make all
 
 Installation
-------------
+~~~~~~~~~~~~
 
-For installation instructions and updates, visit: http://www.seqan.de/projects/yara.
+Copy the binaries to a folder in your *PATH*, e.g.:
+
+::
+
+  # cp bin/yara* /usr/local/bin
 
 
 Usage
@@ -40,11 +90,10 @@ Usage
 
 Yara consists of two executables:
 
-* **yara_indexer** builds the index of a reference genome;
+* **yara_indexer** builds the index of a reference genome.
 * **yara_mapper** maps DNA reads on the indexed reference genome.
 
-This documents explain the most basic workflow.
-To get a complete usage description, invoke each tool with -h or --help.
+This document explains only basic usage. To get complete usage descriptions, invoke each tool with -h or --help.
 
 Indexer
 ~~~~~~~
@@ -60,6 +109,8 @@ Be sure to dispose of that space inside the output folder.
 The tool will take about one-two hours to index the human reference genome.
 On success, the tool will create various files called *REF.index.**.
 
+**The indexer does not work over GPFS and may have problems on other network filesystems**.
+
 Mapper
 ~~~~~~
 
@@ -70,11 +121,10 @@ Map single-end DNA reads on the indexed reference genome by executing:
 
 ::
 
-  $ yara_mapper REF.index READS.fastq.gz -o READS.bam --threads 16
+  $ yara_mapper REF.index READS.fastq.gz -o READS.bam
 
-The mapper will report all co-optimal mapping locations per read within an error rate of 5%.
-he results will be stored in a BAM file called *READS.bam*.
-The tool will use 16 working threads.
+By default, the tool will report all co-optimal mapping locations per read within an error rate of 5%.
+The results will be stored in a BAM file called *READS.bam*.
 
 Paired-end reads
 ^^^^^^^^^^^^^^^^
@@ -100,8 +150,6 @@ In addition, Yara generates the following optional tags:
 +-----+----------------------------------------------------+ 
 | X1  | Number of sub-optimal mapping locations            |
 +-----+----------------------------------------------------+ 
-| XT  | Type: Unique/Repeat                                |
-+-----+----------------------------------------------------+ 
 | XA  | Alternative locations: (chr,begin,end,strand,NM;)* |
 +-----+----------------------------------------------------+ 
 
@@ -110,3 +158,10 @@ Contact
 -------
 
 For questions or comments, feel free to contact: Enrico Siragusa <enrico.siragusa at fu-berlin.de>
+
+
+References
+----------
+
+1. Siragusa, E. (2015). Approximate string matching for high-throughput sequencing. PhD Dissertation, Free University of Berlin.
+2. Siragusa, E., Weese D., and Reinert, K. (2013). Fast and accurate read mapping with approximate seeds and multiple backtracking. Nucleic Acids Research, 2013, 1–8.
\ No newline at end of file
diff --git a/apps/yara/basic_alphabet.h b/apps/yara/basic_alphabet.h
index 2a84f38..4a9ac3a 100644
--- a/apps/yara/basic_alphabet.h
+++ b/apps/yara/basic_alphabet.h
@@ -155,7 +155,7 @@ inline bool ordGreater(Dna5 const & left_, Dna5 const & right_)
 // This function is overloaded to avoid casting TValue2 to Dna.
 
 template <typename TValue2>
-SEQAN_HOST_DEVICE inline bool ordEqual(Dna const & left, TValue2 const & right)
+inline bool ordEqual(Dna const & left, TValue2 const & right)
 {
     return ordValue(left) == ordValue(right);
 }
diff --git a/apps/yara/bits_matches.h b/apps/yara/bits_matches.h
index d21e9cf..e8f2feb 100644
--- a/apps/yara/bits_matches.h
+++ b/apps/yara/bits_matches.h
@@ -113,10 +113,7 @@ typedef ReadSize        ContigEnd;
 // Class Match
 // ----------------------------------------------------------------------------
 
-#ifdef PLATFORM_WINDOWS
-    #pragma pack(push,1)
-#endif
-
+#pragma pack(push,1)
 template <typename TSpec = void>
 struct Match
 {
@@ -126,15 +123,8 @@ struct Match
     typename Member<Match, ContigBegin>::Type   contigBegin  : MemberBits<Match, ContigSize>::VALUE;
     typename Member<Match, ContigEnd>::Type     contigEnd    : MemberBits<Match, ReadSize>::VALUE;
     typename Member<Match, Errors>::Type        errors       : MemberBits<Match, Errors>::VALUE;
-}
-#ifndef PLATFORM_WINDOWS
-    __attribute__((packed))
-#endif
-;
-
-#ifdef PLATFORM_WINDOWS
-      #pragma pack(pop)
-#endif
+};
+#pragma pack(pop)
 
 // ============================================================================
 // Match Types
@@ -151,16 +141,17 @@ struct Member<Match<TSpec>, ReadId>
     typedef uint32_t    Type;
 };
 
-template <typename TSpec>
-struct Member<Match<TSpec>, ContigId>
+template <typename TContigsSize, typename TContigsLen, typename TContigsSum>
+struct Member<Match<Limits<TContigsSize, TContigsLen, TContigsSum> >, ContigId>
 {
-    typedef uint16_t    Type;
+    // To remove GCC packed-bitfield-compat warning. See MemberBits below.
+    typedef uint32_t  Type;
 };
 
-template <typename TContigsLen, typename TContigsSum>
-struct Member<Match<Limits<TContigsLen, TContigsSum> >, ContigSize>
+template <typename TContigsSize, typename TContigsLen, typename TContigsSum>
+struct Member<Match<Limits<TContigsSize, TContigsLen, TContigsSum> >, ContigSize>
 {
-    typedef TContigsSum  Type;
+    typedef TContigsLen  Type;
 };
 
 template <typename TSpec>
@@ -191,14 +182,28 @@ struct MemberBits<Match<TSpec>, ReadId>
     static const unsigned VALUE = 21;
 };
 
-template <typename TContigsLen>
-struct MemberBits<Match<Limits<TContigsLen, uint8_t> >, ContigId>
+template <typename TContigsLen, typename TContigsSum>
+struct MemberBits<Match<Limits<uint8_t, TContigsLen, TContigsSum> >, ContigId>
 {
+    // To remove GCC packed-bitfield-compat warning.
     static const unsigned VALUE = 8;
 };
 
-template <typename TContigsLen>
-struct MemberBits<Match<Limits<TContigsLen, uint64_t> >, ContigSize>
+template <typename TContigsLen, typename TContigsSum>
+struct MemberBits<Match<Limits<uint16_t, TContigsLen, TContigsSum> >, ContigId>
+{
+    // To remove GCC packed-bitfield-compat warning.
+    static const unsigned VALUE = 16;
+};
+
+template <typename TContigsLen, typename TContigsSum>
+struct MemberBits<Match<Limits<uint32_t, TContigsLen, TContigsSum> >, ContigId>
+{
+    static const unsigned VALUE = 30;
+};
+
+template <typename TContigsSize, typename TContigsSum>
+struct MemberBits<Match<Limits<TContigsSize, uint64_t, TContigsSum> >, ContigSize>
 {
     static const unsigned VALUE = 48;
 };
@@ -855,7 +860,8 @@ findProperMates(TMatches const & mates, TMatch const & match,
     TIter first = std::lower_bound(begin(mates, Standard()), end(mates, Standard()), mateLeq, MatchSorter<TMatch, ContigBegin>());
     TIter last = std::upper_bound(begin(mates, Standard()), end(mates, Standard()), mateGeq, MatchSorter<TMatch, ContigEnd>());
 
-    SEQAN_ASSERT_LEQ(first, last);
+    // Return empty infix if no proper mates were found.
+    if (first > last) return infix(mates, 0, 0);
 
     return infix(mates, position(first, mates), position(last, mates));
 }
diff --git a/apps/yara/find_extender.h b/apps/yara/find_extender.h
index e0fe970..d72da42 100644
--- a/apps/yara/find_extender.h
+++ b/apps/yara/find_extender.h
@@ -58,10 +58,10 @@ struct Extender
 template <typename THaystack, typename TNeedle, typename TSpec>
 struct Extender<THaystack, TNeedle, HammingDistance, TSpec>
 {
-    typedef typename Infix<THaystack const>::Type       THaystackInfix;
-    typedef ModifiedString<THaystackInfix, ModReverse>  THaystackInfixRev;
-    typedef typename Infix<TNeedle const>::Type         TNeedleInfix;
-    typedef ModifiedString<TNeedleInfix, ModReverse>    TNeedleInfixRev;
+    typedef typename InfixOnValue<THaystack const>::Type THaystackInfix;
+    typedef ModifiedString<THaystackInfix, ModReverse>   THaystackInfixRev;
+    typedef typename InfixOnValue<TNeedle const>::Type   TNeedleInfix;
+    typedef ModifiedString<TNeedleInfix, ModReverse>     TNeedleInfixRev;
 
     THaystack const &   haystack;
 
@@ -77,20 +77,20 @@ struct Extender<THaystack, TNeedle, HammingDistance, TSpec>
 template <typename THaystack, typename TNeedle, typename TSpec>
 struct Extender<THaystack, TNeedle, EditDistance, TSpec>
 {
-    typedef typename Infix<THaystack const>::Type       THaystackInfix;
-    typedef ModifiedString<THaystackInfix, ModReverse>  THaystackInfixRev;
-    typedef typename Infix<TNeedle const>::Type         TNeedleInfix;
-    typedef ModifiedString<TNeedleInfix, ModReverse>    TNeedleInfixRev;
+    typedef typename InfixOnValue<THaystack const>::Type THaystackInfix;
+    typedef ModifiedString<THaystackInfix, ModReverse>   THaystackInfixRev;
+    typedef typename InfixOnValue<TNeedle const>::Type   TNeedleInfix;
+    typedef ModifiedString<TNeedleInfix, ModReverse>     TNeedleInfixRev;
 
     typedef AlignTextBanded<FindPrefix,
                             NMatchesNone_,
-                            NMatchesNone_>              TMyersSpec;
-    typedef Myers<TMyersSpec, True, void>               TAlgorithm;
+                            NMatchesNone_>               TMyersSpec;
+    typedef Myers<TMyersSpec, True, void>                TAlgorithm;
 
-    typedef Finder<THaystackInfix>                      TFinderRight;
-    typedef Finder<THaystackInfixRev>                   TFinderLeft;
-    typedef PatternState_<TNeedleInfix, TAlgorithm>     TPatternRight;
-    typedef PatternState_<TNeedleInfixRev, TAlgorithm>  TPatternLeft;
+    typedef Finder<THaystackInfix>                       TFinderRight;
+    typedef Finder<THaystackInfixRev>                    TFinderLeft;
+    typedef PatternState_<TNeedleInfix, TAlgorithm>      TPatternRight;
+    typedef PatternState_<TNeedleInfixRev, TAlgorithm>   TPatternLeft;
 
     THaystack const &   haystack;
 //    TFinderRight        finderRight;
@@ -389,6 +389,13 @@ extend(Extender<THaystack, TNeedle, TDistance, TSpec> & extender,
     THaystackSize haystackLength = length(extender.haystack[haystackId]);
     TNeedlePos needleLength = length(needle);
 
+    // Check seed due to Ns randomization in the index.
+    TErrors needleErrorsCheck = 0;
+    THaystackInfix haystackSeed = infix(extender.haystack, haystackBegin, haystackEnd);
+    TNeedleInfix needleSeed = infix(needle, needleBegin, needleEnd);
+    if (!checkHammingDistance(haystackSeed, needleSeed, needleErrorsCheck, needleErrors)) return;
+    SEQAN_ASSERT_EQ(needleErrors, needleErrorsCheck);
+
     // Extend left.
     THaystackPos matchBegin = haystackBegin;
 
diff --git a/apps/yara/find_verifier.h b/apps/yara/find_verifier.h
index fd537f2..cb1ce9d 100644
--- a/apps/yara/find_verifier.h
+++ b/apps/yara/find_verifier.h
@@ -48,15 +48,15 @@ using namespace seqan;
 template <typename THaystack, typename TNeedle, typename TSpec>
 struct Verifier
 {
-    typedef typename Infix<THaystack const>::Type   THaystackInfix;
-    typedef String<GapAnchor<int> >                 TGapAnchors;
-    typedef AnchorGaps<TGapAnchors>                 TAnchorGaps;
-    typedef typename Size<THaystackInfix>::Type     TSize;
-    typedef typename Position<THaystackInfix>::Type TPosition;
-    typedef TraceSegment_<TPosition, TSize>         TTraceSegment;
-    typedef String<TTraceSegment>                   TTrace;
-    typedef DPScoutState_<Default>                  TDPState;
-    typedef DPContext<int, AffineGaps>              TDPContext;
+    typedef typename InfixOnValue<THaystack const>::Type THaystackInfix;
+    typedef String<GapAnchor<int> >                      TGapAnchors;
+    typedef AnchorGaps<TGapAnchors>                      TAnchorGaps;
+    typedef typename Size<THaystackInfix>::Type          TSize;
+    typedef typename Position<THaystackInfix>::Type      TPosition;
+    typedef TraceSegment_<TPosition, TSize>              TTraceSegment;
+    typedef String<TTraceSegment>                        TTrace;
+    typedef DPScoutState_<Default>                       TDPState;
+    typedef DPContext<int, AffineGaps>                   TDPContext;
 
     // Thread-private data.
     TGapAnchors     contigAnchors;
@@ -133,8 +133,8 @@ verify(Verifier<THaystack, TNeedle, AffineGaps> & me,
 
     if (events <= maxErrors && gaps <= maxIndels)
     {
-        THaystackPos matchBegin = posAdd(haystackBegin, clippedBeginPosition(readGaps));
-        THaystackPos matchEnd = posAdd(matchBegin, length(readGaps));
+        THaystackPos matchBegin = posAdd(haystackBegin, beginPosition(contigGaps));
+        THaystackPos matchEnd = posAdd(haystackBegin, endPosition(contigGaps));
         delegate(matchBegin, matchEnd, errors);
     }
 }
diff --git a/apps/yara/index_fm.h b/apps/yara/index_fm.h
index 831271f..c281ab6 100644
--- a/apps/yara/index_fm.h
+++ b/apps/yara/index_fm.h
@@ -107,34 +107,37 @@ inline bool open(Index<StringSet<TText, TSSetSpec>, FMIndex<TSpec, TConfig> > &
 // ----------------------------------------------------------------------------
 // This function is overloaded for Dna5 and Dna5Q to let Ns always mismatch.
 
-template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline bool
-_getNodeByChar(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<TSpec> > > const & it,
-               typename VertexDescriptor<Index<TText, FMIndex<TOccSpec, TIndexSpec> > >::Type const & vDesc,
-               Pair<typename Size<Index<TText, FMIndex<TOccSpec, TIndexSpec> > >::Type> & _range,
+template <typename TText, typename TOccSpec, typename TSize_, typename TLen_, typename TSum_, typename TAlloc_, typename TSpec, typename TSize>
+inline bool
+_getNodeByChar(Iter<Index<TText, FMIndex<TOccSpec, YaraFMConfig<TSize_, TLen_, TSum_, TAlloc_> > >, VSTree<TopDown<TSpec> > > const & it,
+               typename VertexDescriptor<Index<TText, FMIndex<TOccSpec, YaraFMConfig<TSize_, TLen_, TSum_, TAlloc_> > > >::Type const & vDesc,
+               Pair<typename Size<Index<TText, FMIndex<TOccSpec, YaraFMConfig<TSize_, TLen_, TSum_, TAlloc_> > > >::Type> & _range,
+               TSize & smaller,
                Dna5 c)
 {
-    return _getNodeByCharImpl(it, vDesc, _range, c);
+    return _getNodeByCharImpl(it, vDesc, _range, smaller, c);
 }
 
-template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline bool
-_getNodeByChar(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<TSpec> > > const & it,
-               typename VertexDescriptor<Index<TText, FMIndex<TOccSpec, TIndexSpec> > >::Type const & vDesc,
-               Pair<typename Size<Index<TText, FMIndex<TOccSpec, TIndexSpec> > >::Type> & _range,
+template <typename TText, typename TOccSpec, typename TSize_, typename TLen_, typename TSum_, typename TAlloc_, typename TSpec, typename TSize>
+inline bool
+_getNodeByChar(Iter<Index<TText, FMIndex<TOccSpec, YaraFMConfig<TSize_, TLen_, TSum_, TAlloc_> > >, VSTree<TopDown<TSpec> > > const & it,
+               typename VertexDescriptor<Index<TText, FMIndex<TOccSpec, YaraFMConfig<TSize_, TLen_, TSum_, TAlloc_> > > >::Type const & vDesc,
+               Pair<typename Size<Index<TText, FMIndex<TOccSpec, YaraFMConfig<TSize_, TLen_, TSum_, TAlloc_> > > >::Type> & _range,
+               TSize & smaller,
                Dna5Q c)
 {
-    return _getNodeByCharImpl(it, vDesc, _range, c);
+    return _getNodeByCharImpl(it, vDesc, _range, smaller, c);
 }
 
-template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec, typename TChar>
-SEQAN_HOST_DEVICE inline bool
-_getNodeByCharImpl(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<TSpec> > > const & it,
-               typename VertexDescriptor<Index<TText, FMIndex<TOccSpec, TIndexSpec> > >::Type const & vDesc,
-               Pair<typename Size<Index<TText, FMIndex<TOccSpec, TIndexSpec> > >::Type> & _range,
+template <typename TText, typename TOccSpec, typename TSize_, typename TLen_, typename TSum_, typename TAlloc_, typename TSpec, typename TSize, typename TChar>
+inline bool
+_getNodeByCharImpl(Iter<Index<TText, FMIndex<TOccSpec, YaraFMConfig<TSize_, TLen_, TSum_, TAlloc_> > >, VSTree<TopDown<TSpec> > > const & it,
+               typename VertexDescriptor<Index<TText, FMIndex<TOccSpec, YaraFMConfig<TSize_, TLen_, TSum_, TAlloc_> > > >::Type const & vDesc,
+               Pair<typename Size<Index<TText, FMIndex<TOccSpec, YaraFMConfig<TSize_, TLen_, TSum_, TAlloc_> > > >::Type> & _range,
+               TSize & /*smaller*/,
                TChar c)
 {
-    typedef Index<TText, FMIndex<TOccSpec, TIndexSpec> >        TIndex;
+    typedef Index<TText, FMIndex<TOccSpec, YaraFMConfig<TSize_, TLen_, TSum_, TAlloc_> > >        TIndex;
     typedef typename Fibre<TIndex, FibreLF>::Type               TLF;
     typedef typename Value<TIndex>::Type                        TAlphabet;
 
@@ -151,6 +154,30 @@ _getNodeByCharImpl(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<Top
     return _range.i1 < _range.i2;
 }
 
+// This function is overloaded for YaraFMConfig because the LevelDictionary for the occurrence table
+// does not support cumulativeSearch (calculating the smaller value) yet.
+template <typename TText, typename TOccSpec, typename TSize_, typename TLen_, typename TSum_, typename TAlloc_, typename TSpec, typename TSize, typename TChar>
+inline bool
+_getNodeByChar(Iter<Index<TText, FMIndex<TOccSpec, YaraFMConfig<TSize_, TLen_, TSum_, TAlloc_> > >, VSTree<TopDown<TSpec> > > const & it,
+               typename VertexDescriptor<Index<TText, FMIndex<TOccSpec, YaraFMConfig<TSize_, TLen_, TSum_, TAlloc_> > > >::Type const & vDesc,
+               Pair<typename Size<Index<TText, FMIndex<TOccSpec, YaraFMConfig<TSize_, TLen_, TSum_, TAlloc_> > > >::Type> & _range,
+               TSize & /*smaller*/,
+               TChar c)
+{
+    typedef Index<TText, FMIndex<TOccSpec, YaraFMConfig<TSize_, TLen_, TSum_, TAlloc_> > >        TIndex;
+    typedef typename Fibre<TIndex, FibreLF>::Type               TLF;
+
+    TIndex const & index = container(it);
+    TLF const & lf = indexLF(index);
+
+    _range = range(index, vDesc);
+
+    _range.i1 = lf(_range.i1, c);
+    _range.i2 = lf(_range.i2, c);
+
+    return _range.i1 < _range.i2;
+}
+
 }
 
 #endif  // #ifndef APP_YARA_INDEX_FM_H_
diff --git a/apps/yara/mapper.cpp b/apps/yara/mapper.cpp
index fd55e8c..1cb6e8c 100644
--- a/apps/yara/mapper.cpp
+++ b/apps/yara/mapper.cpp
@@ -113,7 +113,7 @@ void setupArgumentParser(ArgumentParser & parser, Options const & options)
     addUsageLine(parser, "[\\fIOPTIONS\\fP] <\\fIREFERENCE INDEX PREFIX\\fP> <\\fISE-READS FILE\\fP>");
     addUsageLine(parser, "[\\fIOPTIONS\\fP] <\\fIREFERENCE INDEX PREFIX\\fP> <\\fIPE-READS FILE 1\\fP> <\\fIPE-READS FILE 2\\fP>");
 
-    addArgument(parser, ArgParseArgument(ArgParseArgument::INPUTPREFIX, "REFERENCE INDEX PREFIX"));
+    addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_PREFIX, "REFERENCE INDEX PREFIX"));
     setHelpText(parser, 0, "An indexed reference genome.");
 
     addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE, "READS FILE", true));
@@ -121,7 +121,7 @@ void setupArgumentParser(ArgumentParser & parser, Options const & options)
     setHelpText(parser, 1, "Either one single-end or two paired-end / mate-pair read files.");
 
     addOption(parser, ArgParseOption("v", "verbose", "Displays global statistics."));
-    addOption(parser, ArgParseOption("vv", "vverbose", "Displays extensive statistics for each batch of reads."));
+    addOption(parser, ArgParseOption("vv", "very-verbose", "Displays extensive statistics for each batch of reads."));
 
     // Setup output options.
     addSection(parser, "Output Options");
@@ -137,43 +137,54 @@ void setupArgumentParser(ArgumentParser & parser, Options const & options)
     setDefaultValue(parser, "output-format", "sam");
 
 #if SEQAN_HAS_ZLIB
-    addOption(parser, ArgParseOption("u", "uncompressed-bam", "Turn off the compression of BAM written to standard output."));
+    addOption(parser, ArgParseOption("u", "uncompressed-bam", "Turn off compression of BAM written to standard output."));
+    hideOption(getOption(parser, "uncompressed-bam"));
 #endif
 
-    addOption(parser, ArgParseOption("rg", "read-group", "Specify a read group for all reads in the SAM/BAM file.",
+    addOption(parser, ArgParseOption("rg", "read-group", "Specify a read group for all records in the SAM/BAM file.",
                                      ArgParseOption::STRING));
     setDefaultValue(parser, "read-group", options.readGroup);
 
-    addOption(parser, ArgParseOption("os", "output-secondary", "Output secondary alignments as separate SAM/BAM records. \
-                                                                Default: output secondary alignments inside the XA tag \
-                                                                of the primary alignment."));
-
-    addOption(parser, ArgParseOption("or", "output-rabema", "Output a SAM/BAM file usable as a gold standard for the \
-                                                             Read Alignment BEnchMArk (RABEMA)."));
+    addOption(parser, ArgParseOption("sa", "secondary-alignments", "Specify whether to output secondary alignments in \
+                                                                    the XA tag of the primary alignment, as separate \
+                                                                    secondary records, or to omit them.",
+                                                                ArgParseOption::STRING));
+    setValidValues(parser, "secondary-alignments", options.secondaryAlignmentsList);
+    setDefaultValue(parser, "secondary-alignments", options.secondaryAlignmentsList[options.secondaryAlignments]);
 
+    addOption(parser, ArgParseOption("ra", "rabema-alignments", "Output alignments compatible with the \
+                                                                 Read Alignment BEnchMArk (RABEMA)."));
 
     // Setup mapping options.
     addSection(parser, "Mapping Options");
 
-    addOption(parser, ArgParseOption("e", "error-rate", "Ignore alignments above this percentual number of errors.",
+    addOption(parser, ArgParseOption("e", "error-rate", "Consider alignments within this percentual number of errors. \
+                                         Increase this threshold to increase the number of mapped reads. \
+                                         Decrease this threshold to decrease the runtime.",
                                      ArgParseOption::INTEGER));
     setMinValue(parser, "error-rate", "0");
     setMaxValue(parser, "error-rate", "10");
     setDefaultValue(parser, "error-rate", 100.0 * options.errorRate);
 
-    addOption(parser, ArgParseOption("s", "strata-rate", "Report suboptimal alignments within this percentual number \
-                                                          of errors from the optimal alignment.",
+    addOption(parser, ArgParseOption("s", "strata-rate", "Consider suboptimal alignments within this percentual number \
+                                      of errors from the optimal alignment. Increase this threshold to increase \
+                                      the number of alternative alignments at the expense of runtime.",
                                                           ArgParseOption::INTEGER));
     setMinValue(parser, "strata-rate", "0");
     setMaxValue(parser, "strata-rate", "10");
     setDefaultValue(parser, "strata-rate", 100.0 * options.strataRate);
 
-    addOption(parser, ArgParseOption("a", "all", "Report all alignments within --error-rate. Default: report alignments \
-                                                  within --strata-rate."));
+    addOption(parser, ArgParseOption("a", "all", "Consider all alignments within --error-rate. Default: consider only \
+                                                  alignments within --strata-rate."));
     hideOption(getOption(parser, "all"));
 
-    addOption(parser, ArgParseOption("q", "quick", "Be quicker by loosely mapping a few very repetitive reads."));
-    hideOption(getOption(parser, "quick"));
+    addOption(parser, ArgParseOption("y", "sensitivity", "Sensitivity with respect to edit distance. \
+                                                          Full sensitivity guarantees to find all considered alignments \
+                                                          but increases runtime, low sensitivity decreases runtime by \
+                                                          breaking such guarantee.",
+                                     ArgParseOption::STRING));
+    setValidValues(parser, "sensitivity", options.sensitivityList);
+    setDefaultValue(parser, "sensitivity", options.sensitivityList[options.sensitivity]);
 
     // Setup paired-end mapping options.
     addSection(parser, "Paired-End Mapping Options");
@@ -184,16 +195,15 @@ void setupArgumentParser(ArgumentParser & parser, Options const & options)
 
     addOption(parser, ArgParseOption("ld", "library-deviation", "Deviation from the expected library length. \
                                             Default: autodetected.", ArgParseOption::INTEGER));
-    setMinValue(parser, "library-deviation", "0");
+    setMinValue(parser, "library-deviation", "1");
 
-    addOption(parser, ArgParseOption("i", "indel-rate", "Ignore rescued alignments above this percentual number of indels.",
+    addOption(parser, ArgParseOption("i", "indel-rate", "Rescue unaligned ends within this percentual number of indels.",
                                      ArgParseOption::INTEGER));
     setMinValue(parser, "indel-rate", "0");
     setMaxValue(parser, "indel-rate", "50");
     setDefaultValue(parser, "indel-rate", 100.0 * options.indelRate);
 
-    addOption(parser, ArgParseOption("ni", "no-indels", "Do not attempt to rescue unaligned ends containing indels."));
-
+    addOption(parser, ArgParseOption("ni", "no-indels", "Turn off the rescue of unaligned ends containing indels."));
 
 //    addOption(parser, ArgParseOption("lo", "library-orientation", "Expected orientation of the segments in the library.",
 //                                     ArgParseOption::STRING));
@@ -273,8 +283,8 @@ parseCommandLine(Options & options, ArgumentParser & parser, int argc, char cons
 
     // Parse output options.
     getOptionValue(options.readGroup, parser, "read-group");
-    getOptionValue(options.outputSecondary, parser, "output-secondary");
-    getOptionValue(options.rabema, parser, "output-rabema");
+    getOptionValue(options.secondaryAlignments, parser, "secondary-alignments", options.secondaryAlignmentsList);
+    getOptionValue(options.rabema, parser, "rabema-alignments");
 
     // Parse mapping options.
     unsigned errorRate;
@@ -291,7 +301,7 @@ parseCommandLine(Options & options, ArgumentParser & parser, int argc, char cons
         options.strataRate = options.errorRate;
     }
 
-    getOptionValue(options.quick, parser, "quick");
+    getOptionValue(options.sensitivity, parser, "sensitivity", options.sensitivityList);
 
     // Parse paired-end mapping options.
     getOptionValue(options.libraryLength, parser, "library-length");
@@ -309,7 +319,7 @@ parseCommandLine(Options & options, ArgumentParser & parser, int argc, char cons
     getOptionValue(options.readsCount, parser, "reads-batch");
 
     if (isSet(parser, "verbose")) options.verbose = 1;
-    if (isSet(parser, "vverbose")) options.verbose = 2;
+    if (isSet(parser, "very-verbose")) options.verbose = 2;
 
     // Get version.
     options.version = getVersion(parser);
diff --git a/apps/yara/mapper.h b/apps/yara/mapper.h
index 7d99006..10b628e 100644
--- a/apps/yara/mapper.h
+++ b/apps/yara/mapper.h
@@ -60,7 +60,8 @@ struct Options
     Pair<CharString>    readsFile;
     CharString          outputFile;
     TOutputFormat       outputFormat;
-    bool                outputSecondary;
+    SecondaryAlignments secondaryAlignments;
+    TList               secondaryAlignmentsList;
     bool                uncompressedBam;
     CharString          readGroup;
 
@@ -68,13 +69,14 @@ struct Options
     float               errorRate;
     float               indelRate;
     float               strataRate;
-    bool                quick;
+    Sensitivity         sensitivity;
+    TList               sensitivityList;
 
     bool                singleEnd;
     unsigned            libraryLength;
     unsigned            libraryDev;
-    LibraryOrientation  libraryOrientation;
-    TList               libraryOrientationList;
+//    LibraryOrientation  libraryOrientation;
+//    TList               libraryOrientationList;
     bool                verifyMatches;
 
     unsigned            readsCount;
@@ -90,18 +92,18 @@ struct Options
         contigsSize(),
         contigsMaxLength(),
         contigsSum(),
-        outputSecondary(false),
+        secondaryAlignments(TAG),
         uncompressedBam(false),
         readGroup("none"),
         mappingMode(STRATA),
         errorRate(0.05f),
         indelRate(0.25f),
         strataRate(0.00f),
-        quick(false),
+        sensitivity(HIGH),
         singleEnd(true),
         libraryLength(),
         libraryDev(),
-        libraryOrientation(FWD_REV),
+//        libraryOrientation(FWD_REV),
         verifyMatches(true),
         readsCount(100000),
         threadsCount(1),
@@ -109,9 +111,20 @@ struct Options
         rabema(false),
         verbose(0)
     {
-        appendValue(libraryOrientationList, "fwd-rev");
-        appendValue(libraryOrientationList, "fwd-fwd");
-        appendValue(libraryOrientationList, "rev-rev");
+#ifdef _OPENMP
+        threadsCount = std::thread::hardware_concurrency();
+#endif
+        appendValue(secondaryAlignmentsList, "tag");
+        appendValue(secondaryAlignmentsList, "record");
+        appendValue(secondaryAlignmentsList, "omit");
+
+        appendValue(sensitivityList, "low");
+        appendValue(sensitivityList, "high");
+        appendValue(sensitivityList, "full");
+
+//        appendValue(libraryOrientationList, "fwd-rev");
+//        appendValue(libraryOrientationList, "fwd-fwd");
+//        appendValue(libraryOrientationList, "rev-rev");
     }
 };
 
@@ -192,7 +205,7 @@ struct MapperTraits
     typedef StringSet<TSeedsCount, Owner<ConcatDirect<> > >         TRanks;
     typedef Tuple<TRanks, TConfig::BUCKETS>                         TRanksBuckets;
 
-    typedef Limits<TContigsLen, TContigsSum>                        TMatchSpec;
+    typedef Limits<TContigsSize, TContigsLen, TContigsSum>          TMatchSpec;
     typedef Match<TMatchSpec>                                       TMatch;
     typedef String<TMatch>                                          TMatches;
     typedef ConcurrentAppender<TMatches>                            TMatchesAppender;
@@ -589,7 +602,10 @@ inline void findSeeds(Mapper<TSpec, TConfig> & me, TBucketId bucketId)
     {
         // Estimate the number of hits.
         reserve(me.hits[bucketId], lengthSum(me.seeds[bucketId]) * Power<ERRORS, 2>::VALUE, Exact());
-        _findSeedsImpl(me, me.hits[bucketId], me.seeds[bucketId], ERRORS, HammingDistance());
+        if (me.options.sensitivity == FULL)
+            _findSeedsImpl(me, me.hits[bucketId], me.seeds[bucketId], ERRORS, EditDistance());
+        else
+            _findSeedsImpl(me, me.hits[bucketId], me.seeds[bucketId], ERRORS, HammingDistance());
     }
     else
     {
@@ -902,39 +918,46 @@ inline void rankMatches(Mapper<TSpec, TConfig> & me, TReadSeqs const & readSeqs)
     if (IsSameType<typename TConfig::TSequencing, SingleEnd>::VALUE) return;
 
     start(me.timer);
-    // Collect library lengths from unique pairs.
-    TLibraryLengths libraryLengths;
-    reserve(libraryLengths, getPairsCount(readSeqs), Exact());
-    ConcurrentAppender<TLibraryLengths> libraryLengthsAppender(libraryLengths);
-    forAllMatchesPairs(me.matchesSetByCoord, readSeqs, [&](TMatchesSetValue const & firstMatches, TMatchesSetValue const & secondMatches)
+    // Estimate library mean length and deviation if one of them was not provided.
+    if (!me.options.libraryLength || !me.options.libraryDev)
     {
-        if (length(firstMatches) == 1 && length(secondMatches) == 1)
+        // Collect library lengths from unique optimal pairs.
+        TLibraryLengths libraryLengths;
+        reserve(libraryLengths, getPairsCount(readSeqs), Exact());
+        ConcurrentAppender<TLibraryLengths> libraryLengthsAppender(libraryLengths);
+        forAllMatchesPairs(me.optimalMatchesSet, readSeqs, [&](TMatchesViewSetValue const & firstMatches, TMatchesViewSetValue const & secondMatches)
         {
-            TMatch const & firstMatch = front(firstMatches);
-            TMatch const & secondMatch = front(secondMatches);
+            if (length(firstMatches) == 1 && length(secondMatches) == 1)
+            {
+                TMatch const & firstMatch = front(firstMatches);
+                TMatch const & secondMatch = front(secondMatches);
 
-            if (contigEqual(firstMatch, secondMatch) && orientationProper(firstMatch, secondMatch))
-                appendValue(libraryLengthsAppender, getLibraryLength(firstMatch, secondMatch), Insist(), typename TTraits::TThreading());
-        }
-    },
-    typename TTraits::TThreading());
+                if (contigEqual(firstMatch, secondMatch) && orientationProper(firstMatch, secondMatch))
+                    appendValue(libraryLengthsAppender, getLibraryLength(firstMatch, secondMatch), Insist(), typename TTraits::TThreading());
+            }
+        },
+        typename TTraits::TThreading());
 
-    // Remove library outliers > 6 * median.
-    if (!empty(libraryLengths))
-    {
+        // If library mean length and deviation cannot be estimated proceed as single-ended.
+        if (empty(libraryLengths)) return;
+
+        // Remove library outliers > 6 * median.
         unsigned libraryMedian = nthElement(libraryLengths, length(libraryLengths) / 2, typename TTraits::TThreading());
         removeIf(libraryLengths, std::bind2nd(std::greater<unsigned>(), 6.0 * libraryMedian), typename TTraits::TThreading());
 
+        // If library mean length and deviation cannot be estimated proceed as single-ended.
+        if (empty(libraryLengths)) return;
+
         // Compute library mean.
         unsigned librarySum = accumulate(libraryLengths, 0u, typename TTraits::TThreading());
-        float libraryMean = librarySum / static_cast<float>(length(libraryLengths));
+        float libraryMean = std::max(librarySum / static_cast<float>(length(libraryLengths)), 1.0f);
 
         // Compute library standard deviation.
         String<float> libraryDiffs;
         resize(libraryDiffs, length(libraryLengths), Exact());
         transform(libraryDiffs, libraryLengths, std::bind2nd(std::minus<float>(), libraryMean), typename TTraits::TThreading());
         float librarySqSum = innerProduct(libraryDiffs, 0.0f, typename TTraits::TThreading());
-        float libraryDev = std::sqrt(librarySqSum / static_cast<float>(length(libraryLengths)));
+        float libraryDev = std::max(std::sqrt(librarySqSum / static_cast<float>(length(libraryLengths))), 1.0f);
 
         if (me.options.verbose > 1)
         {
@@ -1113,6 +1136,13 @@ inline void _verifyMatchesImpl(Mapper<TSpec, TConfig> & me, PairedEnd)
             setPaired(me.ctx, mateId);
             setPaired(me.ctx, anchorId);
 
+            // Set primary matches probabilities.
+            double errorRate = getErrorRate(me.primaryMatches[anchorId], me.reads.seqs);
+            auto bestCount = countMatchesInBestStratum(me.optimalMatchesSet[anchorId]);
+            auto subCount = length(me.suboptimalMatchesSet[anchorId]) - bestCount;
+            me.primaryMatchesProbs[anchorId] = getMatchProb(errorRate, errorRate, bestCount, subCount);
+            me.primaryMatchesProbs[mateId] = me.primaryMatchesProbs[anchorId];
+
             SEQAN_ASSERT(isMapped(me.ctx, mateId));
             SEQAN_ASSERT(isPaired(me.ctx, anchorId));
             SEQAN_ASSERT(isValid(me.primaryMatches[mateId]));
@@ -1223,7 +1253,7 @@ inline void _mapReadsImpl(Mapper<TSpec, TConfig> & me, TReadSeqs & readSeqs, All
     collectSeeds<1>(me, readSeqs);
     collectSeeds<2>(me, readSeqs);
     findSeeds<1>(me, 1);
-    if (me.options.quick)
+    if (me.options.sensitivity == LOW)
         findSeeds<1>(me, 2);
     else
         findSeeds<2>(me, 2);
@@ -1280,7 +1310,7 @@ inline void _mapReadsImpl(Mapper<TSpec, TConfig> & me, TReadSeqs & readSeqs, Str
     clearSeeds(me);
     clearHits(me);
 
-    if (!me.options.quick)
+    if (me.options.sensitivity > LOW)
     {
         initSeeds(me, readSeqs);
         collectSeeds<2>(me, readSeqs);
diff --git a/apps/yara/mapper_aligner.h b/apps/yara/mapper_aligner.h
index 68933f1..46f1562 100644
--- a/apps/yara/mapper_aligner.h
+++ b/apps/yara/mapper_aligner.h
@@ -209,9 +209,9 @@ inline void _alignMatchImpl(MatchesAligner<TSpec, Traits> & me, TMatchIt & match
 
         // Shrink the match after realigning and clipping.
         TContigPos contigBegin(getMember(match, ContigId()), getMember(match, ContigBegin()));
-        contigBegin = posAdd(contigBegin, clippedBeginPosition(readGaps));
+        contigBegin = posAdd(contigBegin, beginPosition(contigGaps));
         TContigPos contigEnd = contigBegin;
-        contigEnd = posAdd(contigEnd, length(readGaps));
+        contigEnd = posAdd(contigEnd, endPosition(contigGaps));
         setContigPosition(match, contigBegin, contigEnd);
     }
 
diff --git a/apps/yara/mapper_writer.h b/apps/yara/mapper_writer.h
index 7183c35..78f517c 100644
--- a/apps/yara/mapper_writer.h
+++ b/apps/yara/mapper_writer.h
@@ -187,10 +187,10 @@ inline void appendSuboptimalCount(BamAlignmentRecord & record, TCount count)
     appendTagValue(record.tags, "X1", count, 'i');
 }
 
-inline void appendType(BamAlignmentRecord & record, bool unique)
-{
-    appendTagValue(record.tags, "XT", unique ? 'U' : 'R', 'A');
-}
+//inline void appendType(BamAlignmentRecord & record, bool unique)
+//{
+//    appendTagValue(record.tags, "XT", unique ? 'U' : 'R', 'A');
+//}
 
 template <typename TPos>
 inline void appendExtraPosition(BamAlignmentRecord & record, TPos pos)
@@ -306,6 +306,7 @@ inline void _writeMappedRead(MatchesWriter<TSpec, Traits> & me, TReadId readId,
     _fillReadPosition(me, primary);
     _fillReadOrientation(me, primary);
     _fillReadAlignment(me, primary);
+    _fillReadDistance(me, primary);
 //    _fillMateInfo(me, readId);
 
     TMatches const & matches = me.matchesSet[readId];
@@ -322,13 +323,13 @@ inline void _writeMappedRead(MatchesWriter<TSpec, Traits> & me, TReadId readId,
     TSize primaryPos = position(it, matches);
     SEQAN_ASSERT_LT(primaryPos, length(matches));
 
-    if (!me.options.outputSecondary)
+    if (me.options.secondaryAlignments == TAG)
         _fillXa(me, matches, primaryPos);
 
     _writeRecord(me);
 
-    if (me.options.outputSecondary)
-        _writeSecondary(me, matches, primaryPos);
+    if (me.options.secondaryAlignments == RECORD)
+        _writeSecondary(me, matches, primaryPos, SingleEnd());
 }
 
 template <typename TSpec, typename Traits, typename TReadId, typename TMatch>
@@ -347,6 +348,7 @@ inline void _writeMappedRead(MatchesWriter<TSpec, Traits> & me, TReadId readId,
     _fillReadPosition(me, primary);
     _fillReadOrientation(me, primary);
     _fillReadAlignment(me, primary);
+    _fillReadDistance(me, primary);
     _fillMateInfo(me, readId);
 
     TMatches const & matches = me.matchesSet[readId];
@@ -363,54 +365,60 @@ inline void _writeMappedRead(MatchesWriter<TSpec, Traits> & me, TReadId readId,
         _fillMateOrientation(me, mate);
 
         if (isPaired(me.ctx, readId))
-        {
             _fillMateInsert(me, primary, mate);
-            me.record.mapQ = getMapq(me.primaryMatchesProbs[readId]);
-        }
-        else
-        {
-            double errorRate = getErrorRate(primary, me.reads.seqs);
-            double prob = getMatchProb(errorRate, errorRate, bestCount, subCount);
-            me.record.mapQ = getMapq(prob);
-        }
     }
     else
     {
         _fillMatePosition(me, primary);
     }
 
+    if (isPaired(me.ctx, readId))
+    {
+        me.record.mapQ = getMapq(me.primaryMatchesProbs[readId]);
+    }
+    else
+    {
+        double errorRate = getErrorRate(primary, me.reads.seqs);
+        double prob = getMatchProb(errorRate, errorRate, bestCount, subCount);
+        me.record.mapQ = getMapq(prob);
+    }
+
     // Find the primary match in the list of matches.
     TIter it = findMatch(matches, primary);
     TSize primaryPos = position(it, matches);
 
-    if (!me.options.outputSecondary)
+    if (me.options.secondaryAlignments == TAG)
         _fillXa(me, matches, primaryPos);
 
     _writeRecord(me);
 
-    if (me.options.outputSecondary)
-        _writeSecondary(me, matches, primaryPos);
+    if (me.options.secondaryAlignments == RECORD)
+        _writeSecondary(me, matches, primaryPos, PairedEnd());
 }
 
 // ----------------------------------------------------------------------------
 // Function _writeSecondary()
 // ----------------------------------------------------------------------------
 
-template <typename TSpec, typename Traits, typename TMatches, typename TPos>
-inline void _writeSecondary(MatchesWriter<TSpec, Traits> & me, TMatches const & matches, TPos primaryPos)
+template <typename TSpec, typename Traits, typename TMatches, typename TPos, typename TSequencing>
+inline void _writeSecondary(MatchesWriter<TSpec, Traits> & me, TMatches const & matches, TPos primaryPos, TSequencing const & tag)
 {
-    _writeSecondary(me, prefix(matches, primaryPos));
-    _writeSecondary(me, suffix(matches, _min(primaryPos + 1, length(matches))));
+    _writeSecondary(me, prefix(matches, primaryPos), tag);
+    _writeSecondary(me, suffix(matches, _min(primaryPos + 1, length(matches))), tag);
 }
 
-template <typename TSpec, typename Traits, typename TMatches>
-inline void _writeSecondary(MatchesWriter<TSpec, Traits> & me, TMatches const & matches)
+template <typename TSpec, typename Traits, typename TMatches, typename TSequencing>
+inline void _writeSecondary(MatchesWriter<TSpec, Traits> & me, TMatches const & matches, TSequencing const & /* tag */)
 {
     forEach(matches, [&](typename Value<TMatches const>::Type const & match)
     {
         clear(me.record);
         _fillReadName(me, getReadSeqId(match, me.reads.seqs));
         _fillReadPosition(me, match);
+        _fillReadOrientation(me, match);
+        _fillReadDistance(me, match);
+        if (IsSameType<TSequencing, PairedEnd>::VALUE)
+            _fillMateInfo(me, getMember(match, ReadId()));
         appendExtraPosition(me.record, getMember(match, ContigEnd()));
         me.record.flag |= BAM_FLAG_SECONDARY;
         _writeRecord(me);
@@ -477,6 +485,15 @@ template <typename TSpec, typename Traits, typename TMatch>
 inline void _fillReadAlignment(MatchesWriter<TSpec, Traits> & me, TMatch const & match)
 {
     me.record.cigar = me.cigarSet[getMember(match, ReadId())];
+}
+
+// ----------------------------------------------------------------------------
+// Function _fillReadDistance()
+// ----------------------------------------------------------------------------
+
+template <typename TSpec, typename Traits, typename TMatch>
+inline void _fillReadDistance(MatchesWriter<TSpec, Traits> & me, TMatch const & match)
+{
     appendErrors(me.record, getMember(match, Errors()));
 }
 
@@ -548,7 +565,7 @@ inline void _fillReadInfo(MatchesWriter<TSpec, Traits> & me, TCount bestCount, T
 {
     appendCooptimalCount(me.record, bestCount);
     appendSuboptimalCount(me.record, subCount);
-    appendType(me.record, bestCount == 1);
+//    appendType(me.record, bestCount == 1);
     appendReadGroup(me.record, me.options.readGroup);
     // Set number of secondary alignments and hit index.
 //    appendTagValue(me.record.tags, "NH", 1, 'i');
diff --git a/apps/yara/misc_options.h b/apps/yara/misc_options.h
index 5992360..1533c26 100644
--- a/apps/yara/misc_options.h
+++ b/apps/yara/misc_options.h
@@ -39,7 +39,7 @@
 #include <seqan/sequence.h>
 #include <seqan/arg_parse.h>
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 #include <direct.h>
 #endif
 
@@ -53,7 +53,7 @@ typedef EqualsChar<'.'>        IsDot;
 typedef EqualsChar<'/'>        IsSlash;
 typedef EqualsChar<'\\'>       IsBackSlash;
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     typedef IsBackSlash        IsPathDelimited;
 #else
     typedef IsSlash            IsPathDelimited;
@@ -70,7 +70,7 @@ typedef EqualsChar<'\\'>       IsBackSlash;
 template <typename TString, typename TValue>
 bool setEnv(TString const & key, TValue & value)
 {
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     return !_putenv_s(toCString(key), toCString(value));
 #else
     return !setenv(toCString(key), toCString(value), true);
@@ -86,7 +86,7 @@ void getCwd(TString & string)
 {
     char cwd[1000];
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     _getcwd(cwd, 1000);
 #else
     ignoreUnusedVariableWarning(getcwd(cwd, 1000));
diff --git a/apps/yara/misc_tags.h b/apps/yara/misc_tags.h
index 286aa21..93f855d 100644
--- a/apps/yara/misc_tags.h
+++ b/apps/yara/misc_tags.h
@@ -55,6 +55,16 @@ enum LibraryOrientation
     FWD_REV, FWD_FWD, REV_REV, ANY
 };
 
+enum SecondaryAlignments
+{
+    TAG, RECORD, OMIT
+};
+
+enum Sensitivity
+{
+    LOW, HIGH, FULL
+};
+
 // ============================================================================
 // Tags
 // ============================================================================
diff --git a/apps/yara/misc_types.h b/apps/yara/misc_types.h
index 78d4b5f..089eb00 100644
--- a/apps/yara/misc_types.h
+++ b/apps/yara/misc_types.h
@@ -48,7 +48,7 @@ using namespace seqan;
 // Tag Limits
 // ----------------------------------------------------------------------------
 
-template <typename T1 = void, typename T2 = void>
+template <typename T1 = void, typename T2 = void, typename T3 = void>
 struct Limits {};
 
 // ----------------------------------------------------------------------------
@@ -57,18 +57,24 @@ struct Limits {};
 
 namespace seqan
 {
-template <typename T1, typename T2>
-struct Value<Limits<T1, T2>, 1>
+template <typename T1, typename T2, typename T3>
+struct Value<Limits<T1, T2, T3>, 1>
 {
     typedef T1 Type;
 };
 
-template <typename T1, typename T2>
-struct Value<Limits<T1, T2>, 2>
+template <typename T1, typename T2, typename T3>
+struct Value<Limits<T1, T2, T3>, 2>
 {
     typedef T2 Type;
 };
 
+template <typename T1, typename T2, typename T3>
+struct Value<Limits<T1, T2, T3>, 3>
+{
+    typedef T3 Type;
+};
+
 // ============================================================================
 // StringSet
 // ============================================================================
@@ -125,11 +131,13 @@ struct FormattedFileContext<FormattedFile<Bam, Output, StringSet<TString, Owner<
 // ----------------------------------------------------------------------------
 // Overloaded to load FastQ files with Iupac symbols.
 
+#ifdef YARA_INDEXER
 template <typename TString, typename TSSetSpec, typename TSpec>
 struct SeqFileBuffer_<StringSet<TString, TSSetSpec>, TSpec>
 {
     typedef String<Iupac>   Type;
 };
+#endif
 }
 
 // ============================================================================
@@ -164,6 +172,8 @@ struct YaraFMConfig
 
     // Sparse SA sampling rate.
     static const unsigned SAMPLING =                    10;
+    static const unsigned WORDS_PER_BLOCK =             0;
+    static const unsigned LEVELS =                      1;
 };
 
 // ----------------------------------------------------------------------------
diff --git a/apps/yara/tests/gold/adeno-reads_1.t1.sam b/apps/yara/tests/gold/adeno-reads_1.t1.sam
index a7119e1..ddafde6 100644
--- a/apps/yara/tests/gold/adeno-reads_1.t1.sam
+++ b/apps/yara/tests/gold/adeno-reads_1.t1.sam
@@ -1,1004 +1,1004 @@
 @HD	VN:1.4	SO:unsorted
- at PG	ID:Yara	PN:Yara	VN:0.9.4 [8ab9090]	CL:/Users/esiragusa/Code/seqan-builds/Release-Gcc/bin/yara_mapper gold/adeno-genome input/adeno-reads_1.fa -o gold/adeno-reads_1.t1.sam --threads 1
+ at PG	ID:Yara	PN:Yara	VN:0.9.6 [519cf08]	CL:/Users/esiragusa/Code/seqan-builds/Release-Gcc/bin/yara_mapper gold/adeno-genome input/adeno-reads_1.fa -o gold/adeno-reads_1.t1.sam --threads 1
 @RG	ID:none	SM:none	PG:Yara
 @SQ	SN:gi|9632547|ref|NC_002077.1|	LN:4718
-adeno-reads100.fasta.000000000	16	gi|9632547|ref|NC_002077.1|	4411	70	100M	*	0	0	GTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000001	16	gi|9632547|ref|NC_002077.1|	4567	70	100M	*	0	0	GTCATCGGGTTACCCCTAGTGATGGAGTTGCCCACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000002	16	gi|9632547|ref|NC_002077.1|	2570	60	100M	*	0	0	AGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGATCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000003	0	gi|9632547|ref|NC_002077.1|	2371	40	89M1D11M	*	0	0	ACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACACCAGCAGCTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000004	0	gi|9632547|ref|NC_002077.1|	1151	70	100M	*	0	0	ATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000005	0	gi|9632547|ref|NC_002077.1|	184	60	100M	*	0	0	AAATTACGTCATAGGGGAGTGGTCCTGTATTAGCTGTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCGATTTAGGGTATATATGGCCGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000006	16	gi|9632547|ref|NC_002077.1|	2499	60	100M	*	0	0	TATAACCACGCCGACGCAGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000007	0	gi|9632547|ref|NC_002077.1|	2828	50	41M1D59M	*	0	0	AATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACATGGCTAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000008	0	gi|9632547|ref|NC_002077.1|	4189	50	91M1D9M	*	0	0	CGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGACTGCAGAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000009	0	gi|9632547|ref|NC_002077.1|	2764	70	100M	*	0	0	CAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000010	16	gi|9632547|ref|NC_002077.1|	4449	70	100M	*	0	0	TAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000011	16	gi|9632547|ref|NC_002077.1|	770	70	100M	*	0	0	AAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000012	16	gi|9632547|ref|NC_002077.1|	4107	50	100M	*	0	0	TTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGACCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000013	0	gi|9632547|ref|NC_002077.1|	804	70	100M	*	0	0	TCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000014	0	gi|9632547|ref|NC_002077.1|	29	70	100M	*	0	0	CGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGAGGGAGTGGGCAACTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000015	16	gi|9632547|ref|NC_002077.1|	1260	70	100M	*	0	0	CTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCAGAAAAGGTTCGGGAAGCGCAACACCATCTGGCTGTTTGGGCCGGCCACCACGGGCAAGACCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000016	16	gi|9632547|ref|NC_002077.1|	516	70	100M	*	0	0	GCGACTTCCTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000017	16	gi|9632547|ref|NC_002077.1|	2552	60	62M1D38M	*	0	0	TGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000018	16	gi|9632547|ref|NC_002077.1|	4086	60	100M	*	0	0	CTTCCTCACACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000019	16	gi|9632547|ref|NC_002077.1|	4501	60	100M	*	0	0	TATCGGTTACCATGGTTATAGCTCACACATTAACTGCTTGGTTGCGCTTCGCGATAAAAGACTTACGTCATCGGGTTACCCCTAGTGATGGAGTTGCCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000020	0	gi|9632547|ref|NC_002077.1|	2314	60	100M	*	0	0	AGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000021	0	gi|9632547|ref|NC_002077.1|	2154	60	24M1D76M	*	0	0	CGGCCTGCGATCTGGTCAACGTGGCCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000022	0	gi|9632547|ref|NC_002077.1|	236	70	100M	*	0	0	GCGACATTTTGCGACACCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000023	0	gi|9632547|ref|NC_002077.1|	756	50	63M1D37M	*	0	0	CCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCNCCAACTACCTCCTGCCCAAGACTCGCCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000024	0	gi|9632547|ref|NC_002077.1|	2900	70	100M	*	0	0	AAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000025	0	gi|9632547|ref|NC_002077.1|	1835	60	6M1I93M	*	0	0	GATAAAGAGCGAGCCCAAGCGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000026	0	gi|9632547|ref|NC_002077.1|	3369	70	100M	*	0	0	AATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000027	0	gi|9632547|ref|NC_002077.1|	2177	60	100M	*	0	0	GACCTGGATGACTGTGTTTCTGAGCAATAGATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000028	0	gi|9632547|ref|NC_002077.1|	2814	50	100M	*	0	0	GTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGNAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000029	16	gi|9632547|ref|NC_002077.1|	4335	70	100M	*	0	0	TATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000030	0	gi|9632547|ref|NC_002077.1|	3924	70	100M	*	0	0	GCCACTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAGCACAGACCCTGCGACCGGAGATGTGCATGCTATGGGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000031	16	gi|9632547|ref|NC_002077.1|	3272	50	100M	*	0	0	GCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGNCGTGTTCATGATTCCGCAATACGGCTACCTGCCGCTCAACAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000032	16	gi|9632547|ref|NC_002077.1|	3440	70	100M	*	0	0	GGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000033	0	gi|9632547|ref|NC_002077.1|	929	70	100M	*	0	0	ACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000034	0	gi|9632547|ref|NC_002077.1|	2099	50	100M	*	0	0	CGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTTTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000035	0	gi|9632547|ref|NC_002077.1|	3309	60	100M	*	0	0	CTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGTTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000036	0	gi|9632547|ref|NC_002077.1|	3713	60	100M	*	0	0	CAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAACACGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000037	0	gi|9632547|ref|NC_002077.1|	613	70	100M	*	0	0	TCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000038	16	gi|9632547|ref|NC_002077.1|	1118	60	5M1I94M	*	0	0	CAGATACAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000039	0	gi|9632547|ref|NC_002077.1|	1651	50	100M	*	0	0	GCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGTCGTCTGGAGGATGACTTTGGCAAGGTGACAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000040	16	gi|9632547|ref|NC_002077.1|	644	50	100M	*	0	0	GTGCTGGGCCGCTTCCTGAGTCAAATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCGAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000041	16	gi|9632547|ref|NC_002077.1|	1622	60	100M	*	0	0	GGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000042	0	gi|9632547|ref|NC_002077.1|	63	60	100M	*	0	0	ACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGACAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000043	0	gi|9632547|ref|NC_002077.1|	3144	60	100M	*	0	0	CGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACNG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!I	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000044	16	gi|9632547|ref|NC_002077.1|	929	70	100M	*	0	0	ACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000045	16	gi|9632547|ref|NC_002077.1|	4098	70	100M	*	0	0	GATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000046	16	gi|9632547|ref|NC_002077.1|	3324	70	100M	*	0	0	GCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000047	16	gi|9632547|ref|NC_002077.1|	4317	50	10M1D90M	*	0	0	GTGCAGTACAATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGGCACCCTTTACCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000048	0	gi|9632547|ref|NC_002077.1|	1123	60	100M	*	0	0	CAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000049	16	gi|9632547|ref|NC_002077.1|	1022	60	69M1D31M	*	0	0	TGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTCAACGCCGCTTCCAACTCGCGGTCCCAGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000050	16	gi|9632547|ref|NC_002077.1|	2863	70	100M	*	0	0	ATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000051	0	gi|9632547|ref|NC_002077.1|	252	70	100M	*	0	0	CCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000052	0	gi|9632547|ref|NC_002077.1|	95	70	100M	*	0	0	GCGAGCGAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCTGACGTAAATTACGTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000053	16	gi|9632547|ref|NC_002077.1|	2613	50	100M	*	0	0	CTGGTTGAGGAAGGCGCTAAGACGGCTCCTNGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000054	16	gi|9632547|ref|NC_002077.1|	1314	40	67M3D33M	*	0	0	GCAACACCATCTGGCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000055	16	gi|9632547|ref|NC_002077.1|	4226	50	7M1I92M	*	0	0	TTCATTCNATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTA	IIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000056	16	gi|9632547|ref|NC_002077.1|	4590	60	100M	*	0	0	GGAGTTGCCCACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTTTGCCGGCCCCACCGAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000057	16	gi|9632547|ref|NC_002077.1|	2144	60	40M1I59M	*	0	0	ATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGAATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000058	16	gi|9632547|ref|NC_002077.1|	783	70	100M	*	0	0	AGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000059	16	gi|9632547|ref|NC_002077.1|	1730	70	100M	*	0	0	GTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGAGCCAACAAAAGACCCGCCCCCGATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000060	0	gi|9632547|ref|NC_002077.1|	3204	50	13M1D87M	*	0	0	GATGGCGTCACAACATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000061	16	gi|9632547|ref|NC_002077.1|	1033	70	100M	*	0	0	CCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000062	16	gi|9632547|ref|NC_002077.1|	303	70	100M	*	0	0	TTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000063	0	gi|9632547|ref|NC_002077.1|	2442	70	100M	*	0	0	GAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000064	0	gi|9632547|ref|NC_002077.1|	2691	70	100M	*	0	0	TCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000065	16	gi|9632547|ref|NC_002077.1|	434	60	100M	*	0	0	GAATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000066	0	gi|9632547|ref|NC_002077.1|	324	70	100M	*	0	0	GAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000067	0	gi|9632547|ref|NC_002077.1|	126	60	100M	*	0	0	CTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCTGACGTAAATTACGTNATAGGGGAGTGGTCCTGTATTAGCTGTCACGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000068	0	gi|9632547|ref|NC_002077.1|	225	70	100M	*	0	0	TGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000069	16	gi|9632547|ref|NC_002077.1|	3114	60	100M	*	0	0	CAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCATGGAGGTCACGACGAATGATGGCGTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000070	16	gi|9632547|ref|NC_002077.1|	2108	60	100M	*	0	0	TGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000071	16	gi|9632547|ref|NC_002077.1|	2050	60	100M	*	0	0	CTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000072	0	gi|9632547|ref|NC_002077.1|	4165	50	100M	*	0	0	TCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000073	0	gi|9632547|ref|NC_002077.1|	4333	50	44M1I43M1D12M	*	0	0	ATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGGACTTTATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCGTCCCCTGTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000074	0	gi|9632547|ref|NC_002077.1|	3903	60	95M1D5M	*	0	0	ACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAGCACAGACCCTGCACCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000075	0	gi|9632547|ref|NC_002077.1|	3515	60	56M1D44M	*	0	0	GGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACAGAACTCAAATCAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000076	16	gi|9632547|ref|NC_002077.1|	3108	70	100M	*	0	0	GACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000077	0	gi|9632547|ref|NC_002077.1|	2805	60	56M1I43M	*	0	0	CCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACCAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000078	16	gi|9632547|ref|NC_002077.1|	4398	60	80M1I19M	*	0	0	CCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTATTGGTCTCCTGTCCTTCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000079	0	gi|9632547|ref|NC_002077.1|	3529	60	100M	*	0	0	ATCCTCTCATCGGCCAATACCTGTATTACCTGAACAGAACTCAAAATCAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000080	16	gi|9632547|ref|NC_002077.1|	2484	70	100M	*	0	0	AATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000081	16	gi|9632547|ref|NC_002077.1|	2824	70	100M	*	0	0	CTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000082	0	gi|9632547|ref|NC_002077.1|	1398	70	100M	*	0	0	GCTGCGTCAACTGGACCAATGAGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCCAAGGTCGTGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000083	0	gi|9632547|ref|NC_002077.1|	3238	60	100M	*	0	0	GCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000084	16	gi|9632547|ref|NC_002077.1|	3616	70	100M	*	0	0	GTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAAACAGACAACAACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000085	16	gi|9632547|ref|NC_002077.1|	1393	60	2M1D98M	*	0	0	CTCGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCCAAGGTCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000086	0	gi|9632547|ref|NC_002077.1|	2572	70	100M	*	0	0	CAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000087	0	gi|9632547|ref|NC_002077.1|	2715	60	52M1D48M	*	0	0	CAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000088	16	gi|9632547|ref|NC_002077.1|	3205	50	100M	*	0	0	ATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCATGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000089	0	gi|9632547|ref|NC_002077.1|	3584	70	100M	*	0	0	AAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000090	0	gi|9632547|ref|NC_002077.1|	1195	70	100M	*	0	0	CGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000091	16	gi|9632547|ref|NC_002077.1|	3231	60	100M	*	0	0	CTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000092	16	gi|9632547|ref|NC_002077.1|	1519	70	100M	*	0	0	CGGCAGCAAGGTGCGCGTGGACCAAAAGTGCAAGTCGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000093	0	gi|9632547|ref|NC_002077.1|	2879	60	100M	*	0	0	CGGAGTGGGTAATGCCTCAGGAAATTGCCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000094	16	gi|9632547|ref|NC_002077.1|	3256	70	100M	*	0	0	CGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000095	16	gi|9632547|ref|NC_002077.1|	1648	60	100M	*	0	0	GCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAAAGCAGGAAGTCAAAGAGTTCTTCCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000096	16	gi|9632547|ref|NC_002077.1|	4281	70	100M	*	0	0	CTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000097	0	gi|9632547|ref|NC_002077.1|	100	70	100M	*	0	0	CGAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCTGACGTAAATTACGTCATAGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000098	0	gi|9632547|ref|NC_002077.1|	2335	60	100M	*	0	0	AGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000099	0	gi|9632547|ref|NC_002077.1|	495	70	100M	*	0	0	CCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000100	0	gi|9632547|ref|NC_002077.1|	3373	70	100M	*	0	0	GCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000101	0	gi|9632547|ref|NC_002077.1|	1034	70	100M	*	0	0	CGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000102	16	gi|9632547|ref|NC_002077.1|	2709	70	100M	*	0	0	GGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000103	0	gi|9632547|ref|NC_002077.1|	266	70	100M	*	0	0	AGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000104	0	gi|9632547|ref|NC_002077.1|	433	50	100M	*	0	0	GGAATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCCGCAGCGCGACTTCCTGGTCCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000105	0	gi|9632547|ref|NC_002077.1|	4292	70	100M	*	0	0	AAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000106	0	gi|9632547|ref|NC_002077.1|	3645	60	53M1D47M	*	0	0	CCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAACAGACAACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000107	0	gi|9632547|ref|NC_002077.1|	2693	70	100M	*	0	0	GGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000108	0	gi|9632547|ref|NC_002077.1|	2065	50	100M	*	0	0	AGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTTCTTGCTCGGCCTGCGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000109	16	gi|9632547|ref|NC_002077.1|	3311	60	100M	*	0	0	CCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGCCGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000110	0	gi|9632547|ref|NC_002077.1|	1934	70	100M	*	0	0	AAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000111	0	gi|9632547|ref|NC_002077.1|	4069	50	100M	*	0	0	GTCCCATTTGGGCCAAACTTCCTCANACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCAT	IIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000112	0	gi|9632547|ref|NC_002077.1|	324	50	100M	*	0	0	GAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGACCTAGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000113	0	gi|9632547|ref|NC_002077.1|	2820	60	100M	*	0	0	CCTACTACAATGGCTTCAGGCGGTGGGGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000114	16	gi|9632547|ref|NC_002077.1|	3073	70	100M	*	0	0	ATTTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000115	16	gi|9632547|ref|NC_002077.1|	3141	60	100M	*	0	0	TTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGNTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000116	16	gi|9632547|ref|NC_002077.1|	4250	50	100M	*	0	0	AGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAAGCAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000117	16	gi|9632547|ref|NC_002077.1|	1894	60	100M	*	0	0	GGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCCGTTTCCCTGCAAGACATGCGAGAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000118	0	gi|9632547|ref|NC_002077.1|	3082	50	34M1D66M	*	0	0	GATTCCACTGCCACTTTTCACCACGTGACTGGCACGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000119	16	gi|9632547|ref|NC_002077.1|	3447	70	100M	*	0	0	AACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000120	0	gi|9632547|ref|NC_002077.1|	2480	60	100M	*	0	0	TGACAATCCGTGCCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000121	0	gi|9632547|ref|NC_002077.1|	2744	60	100M	*	0	0	TCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTAATACAATGGCTTCAGGCGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000122	0	gi|9632547|ref|NC_002077.1|	3752	60	100M	*	0	0	CCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGGGCGGTGTCATGATTTTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000123	0	gi|9632547|ref|NC_002077.1|	1861	60	15M1D85M	*	0	0	CCCCTCAGTCGCGGACCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000124	0	gi|9632547|ref|NC_002077.1|	3207	50	100M	*	0	0	GGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGCCTCTGCGCACCAGGGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000125	16	gi|9632547|ref|NC_002077.1|	1827	60	100M	*	0	0	ATGACGCGGATAAAAGCGAGCTCAAGCGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000126	0	gi|9632547|ref|NC_002077.1|	1114	70	100M	*	0	0	GTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000127	0	gi|9632547|ref|NC_002077.1|	4248	60	100M	*	0	0	ACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000128	16	gi|9632547|ref|NC_002077.1|	1388	60	3M1I96M	*	0	0	CCCATTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000129	16	gi|9632547|ref|NC_002077.1|	219	70	100M	*	0	0	GTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000130	16	gi|9632547|ref|NC_002077.1|	1293	20	20M1I68M3D11M	*	0	0	CCCAGAAAAGGTTCGGGAAGCCGCAACACCATCTGGCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAANCCATCGCCCACGTGCCCTTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000131	0	gi|9632547|ref|NC_002077.1|	370	50	100M	*	0	0	GAGCGACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAGGAATGGGCTCTGCCCCCGGATTCTGACATGGATCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000132	0	gi|9632547|ref|NC_002077.1|	3541	70	100M	*	0	0	ACCAATACCTGTATTACCTGAACAGAACTCAAAATCAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000133	16	gi|9632547|ref|NC_002077.1|	692	60	63M1D37M	*	0	0	ATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000134	0	gi|9632547|ref|NC_002077.1|	3459	70	100M	*	0	0	AGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000135	16	gi|9632547|ref|NC_002077.1|	2791	70	100M	*	0	0	AACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000136	16	gi|9632547|ref|NC_002077.1|	2663	60	100M	*	0	0	GCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000137	16	gi|9632547|ref|NC_002077.1|	4094	70	100M	*	0	0	CACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000138	16	gi|9632547|ref|NC_002077.1|	2305	60	100M	*	0	0	GAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000139	0	gi|9632547|ref|NC_002077.1|	1909	60	100M	*	0	0	GAACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000140	0	gi|9632547|ref|NC_002077.1|	14	3	100M	*	0	0	CTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTCTGCCGGCCCCAACGAGCGAGCGAGCGCNCAGAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIII	NM:i:2	X0:i:2	X1:i:0	XT:A:R	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4607,4707,+,2;
-adeno-reads100.fasta.000000141	16	gi|9632547|ref|NC_002077.1|	894	70	100M	*	0	0	GGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000142	0	gi|9632547|ref|NC_002077.1|	3496	60	69M1I30M	*	0	0	ACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACANGAACTCAAAATCAGTCCGGAAGTGCCCAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000143	16	gi|9632547|ref|NC_002077.1|	3708	70	100M	*	0	0	AACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000144	16	gi|9632547|ref|NC_002077.1|	3582	50	100M	*	0	0	GGAAGTNCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGACTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGC	IIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000145	0	gi|9632547|ref|NC_002077.1|	2066	50	76M1D24M	*	0	0	GAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGGATTGCTTGCTCGGCCTGCGATCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000146	0	gi|9632547|ref|NC_002077.1|	1642	70	100M	*	0	0	GCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAAAGCAGGAAGTCAAAGAGTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000147	0	gi|9632547|ref|NC_002077.1|	4083	60	100M	*	0	0	AAACTTCCTCACACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000148	0	gi|9632547|ref|NC_002077.1|	4188	50	85M1D15M	*	0	0	GCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGATGGGAGCTGCAGAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000149	0	gi|9632547|ref|NC_002077.1|	541	70	100M	*	0	0	CGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000150	0	gi|9632547|ref|NC_002077.1|	951	70	100M	*	0	0	ATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000151	16	gi|9632547|ref|NC_002077.1|	1393	60	28M1I71M	*	0	0	CTACGGCTGCGTCAACTGGACCAATGAGAAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCCAAGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000152	0	gi|9632547|ref|NC_002077.1|	1370	40	11M3D89M	*	0	0	GCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000153	0	gi|9632547|ref|NC_002077.1|	1037	70	100M	*	0	0	GGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000154	0	gi|9632547|ref|NC_002077.1|	51	70	100M	*	0	0	AAAGGTCCGCAGACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000155	16	gi|9632547|ref|NC_002077.1|	684	70	100M	*	0	0	TGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000156	0	gi|9632547|ref|NC_002077.1|	4282	70	100M	*	0	0	TGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000157	0	gi|9632547|ref|NC_002077.1|	2671	60	100M	*	0	0	CACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000158	0	gi|9632547|ref|NC_002077.1|	3697	50	100M	*	0	0	CAAAAACAGACAACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAAACCTGGCACTGCTATGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000159	0	gi|9632547|ref|NC_002077.1|	3912	60	31M1I68M	*	0	0	GAGGAAATTAAAGCCACTAACCCTGTGGCCATCCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAGCACAGACCCTGCGACCGGAGATGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000160	0	gi|9632547|ref|NC_002077.1|	1329	20	10M1I42M3D47M	*	0	0	TGTTTGGGCCAGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCNCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!II	NM:i:5	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000161	16	gi|9632547|ref|NC_002077.1|	4479	70	100M	*	0	0	TGGTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAAAAGACTTACGTCATCGGGTTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000162	0	gi|9632547|ref|NC_002077.1|	699	60	100M	*	0	0	GCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTGCATCCCCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000163	0	gi|9632547|ref|NC_002077.1|	2627	60	100M	*	0	0	CGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000164	16	gi|9632547|ref|NC_002077.1|	3348	60	64M1D36M	*	0	0	TACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000165	16	gi|9632547|ref|NC_002077.1|	1606	40	55M1I44M	*	0	0	GTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGNGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000166	0	gi|9632547|ref|NC_002077.1|	1139	70	100M	*	0	0	AATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000167	0	gi|9632547|ref|NC_002077.1|	2030	60	100M	*	0	0	ACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCCGAAACTCTGTGCCATTCATCATCTGCTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000168	0	gi|9632547|ref|NC_002077.1|	2778	60	100M	*	0	0	CAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACNATAACGAAGGCGCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000169	0	gi|9632547|ref|NC_002077.1|	3420	70	100M	*	0	0	CCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000170	16	gi|9632547|ref|NC_002077.1|	3746	50	5M1I32M1D62M	*	0	0	ATATANACCTCAATGGGCGTGAATCCATCATCAACCCTGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGTGTCATG	IIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000171	16	gi|9632547|ref|NC_002077.1|	419	50	46M1D54M	*	0	0	TGGGTGGCCGAGAAGGAATGGGATCTGCCCCCGGATTCTGACATGGTCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000172	16	gi|9632547|ref|NC_002077.1|	3659	70	100M	*	0	0	ACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAAACAGACAACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000173	0	gi|9632547|ref|NC_002077.1|	2256	70	100M	*	0	0	GAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000174	16	gi|9632547|ref|NC_002077.1|	2484	60	100M	*	0	0	AATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTGTTCCAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000175	16	gi|9632547|ref|NC_002077.1|	998	60	100M	*	0	0	GCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCCTACATCTCCTTCAACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000176	0	gi|9632547|ref|NC_002077.1|	3026	70	100M	*	0	0	CAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000177	0	gi|9632547|ref|NC_002077.1|	1576	50	100M	*	0	0	CCCCGAGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000178	0	gi|9632547|ref|NC_002077.1|	3039	70	100M	*	0	0	TACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000179	16	gi|9632547|ref|NC_002077.1|	2110	60	100M	*	0	0	TGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000180	0	gi|9632547|ref|NC_002077.1|	1003	70	100M	*	0	0	CTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000181	16	gi|9632547|ref|NC_002077.1|	4460	70	100M	*	0	0	ATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000182	16	gi|9632547|ref|NC_002077.1|	678	60	46M1I53M	*	0	0	AGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACCTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000183	16	gi|9632547|ref|NC_002077.1|	1555	60	100M	*	0	0	GTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000184	0	gi|9632547|ref|NC_002077.1|	3739	70	100M	*	0	0	CTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000185	16	gi|9632547|ref|NC_002077.1|	395	60	100M	*	0	0	GGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAGGAATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000186	16	gi|9632547|ref|NC_002077.1|	4497	60	69M1D31M	*	0	0	ATCTTATCGGTTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAAAAGACTTAGTCATCGGGTTACCCCTAGTGATGGAGTTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000187	16	gi|9632547|ref|NC_002077.1|	963	60	100M	*	0	0	ATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGTCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
+adeno-reads100.fasta.000000000	16	gi|9632547|ref|NC_002077.1|	4411	70	100M	*	0	0	GTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000001	16	gi|9632547|ref|NC_002077.1|	4567	70	100M	*	0	0	GTCATCGGGTTACCCCTAGTGATGGAGTTGCCCACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000002	16	gi|9632547|ref|NC_002077.1|	2570	60	100M	*	0	0	AGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGATCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000003	0	gi|9632547|ref|NC_002077.1|	2371	40	89M1D11M	*	0	0	ACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACACCAGCAGCTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000004	0	gi|9632547|ref|NC_002077.1|	1151	70	100M	*	0	0	ATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000005	0	gi|9632547|ref|NC_002077.1|	184	60	100M	*	0	0	AAATTACGTCATAGGGGAGTGGTCCTGTATTAGCTGTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCGATTTAGGGTATATATGGCCGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000006	16	gi|9632547|ref|NC_002077.1|	2499	60	100M	*	0	0	TATAACCACGCCGACGCAGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000007	0	gi|9632547|ref|NC_002077.1|	2828	50	41M1D59M	*	0	0	AATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACATGGCTAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000008	0	gi|9632547|ref|NC_002077.1|	4189	50	91M1D9M	*	0	0	CGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGACTGCAGAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000009	0	gi|9632547|ref|NC_002077.1|	2764	70	100M	*	0	0	CAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000010	16	gi|9632547|ref|NC_002077.1|	4449	70	100M	*	0	0	TAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000011	16	gi|9632547|ref|NC_002077.1|	770	70	100M	*	0	0	AAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000012	16	gi|9632547|ref|NC_002077.1|	4107	50	100M	*	0	0	TTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGACCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000013	0	gi|9632547|ref|NC_002077.1|	804	70	100M	*	0	0	TCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000014	0	gi|9632547|ref|NC_002077.1|	29	70	100M	*	0	0	CGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGAGGGAGTGGGCAACTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000015	16	gi|9632547|ref|NC_002077.1|	1260	70	100M	*	0	0	CTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCAGAAAAGGTTCGGGAAGCGCAACACCATCTGGCTGTTTGGGCCGGCCACCACGGGCAAGACCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000016	16	gi|9632547|ref|NC_002077.1|	516	70	100M	*	0	0	GCGACTTCCTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000017	16	gi|9632547|ref|NC_002077.1|	2552	60	62M1D38M	*	0	0	TGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000018	16	gi|9632547|ref|NC_002077.1|	4086	60	100M	*	0	0	CTTCCTCACACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000019	16	gi|9632547|ref|NC_002077.1|	4501	60	100M	*	0	0	TATCGGTTACCATGGTTATAGCTCACACATTAACTGCTTGGTTGCGCTTCGCGATAAAAGACTTACGTCATCGGGTTACCCCTAGTGATGGAGTTGCCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000020	0	gi|9632547|ref|NC_002077.1|	2314	60	100M	*	0	0	AGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000021	0	gi|9632547|ref|NC_002077.1|	2154	60	24M1D76M	*	0	0	CGGCCTGCGATCTGGTCAACGTGGCCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000022	0	gi|9632547|ref|NC_002077.1|	236	70	100M	*	0	0	GCGACATTTTGCGACACCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000023	0	gi|9632547|ref|NC_002077.1|	756	50	63M1D37M	*	0	0	CCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCNCCAACTACCTCCTGCCCAAGACTCGCCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000024	0	gi|9632547|ref|NC_002077.1|	2900	70	100M	*	0	0	AAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000025	0	gi|9632547|ref|NC_002077.1|	1835	60	6M1I93M	*	0	0	GATAAAGAGCGAGCCCAAGCGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000026	0	gi|9632547|ref|NC_002077.1|	3369	70	100M	*	0	0	AATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000027	0	gi|9632547|ref|NC_002077.1|	2177	60	100M	*	0	0	GACCTGGATGACTGTGTTTCTGAGCAATAGATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000028	0	gi|9632547|ref|NC_002077.1|	2814	50	100M	*	0	0	GTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGNAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000029	16	gi|9632547|ref|NC_002077.1|	4335	70	100M	*	0	0	TATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000030	0	gi|9632547|ref|NC_002077.1|	3924	70	100M	*	0	0	GCCACTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAGCACAGACCCTGCGACCGGAGATGTGCATGCTATGGGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000031	16	gi|9632547|ref|NC_002077.1|	3272	50	100M	*	0	0	GCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGNCGTGTTCATGATTCCGCAATACGGCTACCTGCCGCTCAACAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000032	16	gi|9632547|ref|NC_002077.1|	3440	70	100M	*	0	0	GGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000033	0	gi|9632547|ref|NC_002077.1|	929	70	100M	*	0	0	ACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000034	0	gi|9632547|ref|NC_002077.1|	2099	50	100M	*	0	0	CGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTTTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000035	0	gi|9632547|ref|NC_002077.1|	3309	60	100M	*	0	0	CTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGTTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000036	0	gi|9632547|ref|NC_002077.1|	3713	60	100M	*	0	0	CAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAACACGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000037	0	gi|9632547|ref|NC_002077.1|	613	70	100M	*	0	0	TCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000038	16	gi|9632547|ref|NC_002077.1|	1118	60	5M1I94M	*	0	0	CAGATACAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000039	0	gi|9632547|ref|NC_002077.1|	1651	50	100M	*	0	0	GCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGTCGTCTGGAGGATGACTTTGGCAAGGTGACAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000040	16	gi|9632547|ref|NC_002077.1|	644	50	100M	*	0	0	GTGCTGGGCCGCTTCCTGAGTCAAATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCGAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000041	16	gi|9632547|ref|NC_002077.1|	1622	60	100M	*	0	0	GGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000042	0	gi|9632547|ref|NC_002077.1|	63	60	100M	*	0	0	ACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGACAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000043	0	gi|9632547|ref|NC_002077.1|	3144	60	100M	*	0	0	CGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACNG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!I	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000044	16	gi|9632547|ref|NC_002077.1|	929	70	100M	*	0	0	ACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000045	16	gi|9632547|ref|NC_002077.1|	4098	70	100M	*	0	0	GATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000046	16	gi|9632547|ref|NC_002077.1|	3324	70	100M	*	0	0	GCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000047	16	gi|9632547|ref|NC_002077.1|	4317	50	10M1D90M	*	0	0	GTGCAGTACAATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGGCACCCTTTACCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000048	0	gi|9632547|ref|NC_002077.1|	1123	60	100M	*	0	0	CAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000049	16	gi|9632547|ref|NC_002077.1|	1022	60	69M1D31M	*	0	0	TGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTCAACGCCGCTTCCAACTCGCGGTCCCAGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000050	16	gi|9632547|ref|NC_002077.1|	2863	70	100M	*	0	0	ATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000051	0	gi|9632547|ref|NC_002077.1|	252	70	100M	*	0	0	CCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000052	0	gi|9632547|ref|NC_002077.1|	95	70	100M	*	0	0	GCGAGCGAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCTGACGTAAATTACGTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000053	16	gi|9632547|ref|NC_002077.1|	2613	50	100M	*	0	0	CTGGTTGAGGAAGGCGCTAAGACGGCTCCTNGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000054	16	gi|9632547|ref|NC_002077.1|	1314	40	67M3D33M	*	0	0	GCAACACCATCTGGCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000055	16	gi|9632547|ref|NC_002077.1|	4226	50	7M1I92M	*	0	0	TTCATTCNATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTA	IIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000056	16	gi|9632547|ref|NC_002077.1|	4590	60	100M	*	0	0	GGAGTTGCCCACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTTTGCCGGCCCCACCGAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000057	16	gi|9632547|ref|NC_002077.1|	2144	60	40M1I59M	*	0	0	ATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGAATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000058	16	gi|9632547|ref|NC_002077.1|	783	70	100M	*	0	0	AGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000059	16	gi|9632547|ref|NC_002077.1|	1730	70	100M	*	0	0	GTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGAGCCAACAAAAGACCCGCCCCCGATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000060	0	gi|9632547|ref|NC_002077.1|	3204	50	13M1D87M	*	0	0	GATGGCGTCACAACATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000061	16	gi|9632547|ref|NC_002077.1|	1033	70	100M	*	0	0	CCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000062	16	gi|9632547|ref|NC_002077.1|	303	70	100M	*	0	0	TTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000063	0	gi|9632547|ref|NC_002077.1|	2442	70	100M	*	0	0	GAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000064	0	gi|9632547|ref|NC_002077.1|	2691	70	100M	*	0	0	TCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000065	16	gi|9632547|ref|NC_002077.1|	434	60	100M	*	0	0	GAATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000066	0	gi|9632547|ref|NC_002077.1|	324	70	100M	*	0	0	GAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000067	0	gi|9632547|ref|NC_002077.1|	126	60	100M	*	0	0	CTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCTGACGTAAATTACGTNATAGGGGAGTGGTCCTGTATTAGCTGTCACGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000068	0	gi|9632547|ref|NC_002077.1|	225	70	100M	*	0	0	TGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000069	16	gi|9632547|ref|NC_002077.1|	3114	60	100M	*	0	0	CAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCATGGAGGTCACGACGAATGATGGCGTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000070	16	gi|9632547|ref|NC_002077.1|	2108	60	100M	*	0	0	TGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000071	16	gi|9632547|ref|NC_002077.1|	2050	60	100M	*	0	0	CTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000072	0	gi|9632547|ref|NC_002077.1|	4165	50	100M	*	0	0	TCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000073	0	gi|9632547|ref|NC_002077.1|	4333	50	44M1I43M1D12M	*	0	0	ATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGGACTTTATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCGTCCCCTGTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000074	0	gi|9632547|ref|NC_002077.1|	3903	60	95M1D5M	*	0	0	ACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAGCACAGACCCTGCACCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000075	0	gi|9632547|ref|NC_002077.1|	3515	60	56M1D44M	*	0	0	GGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACAGAACTCAAATCAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000076	16	gi|9632547|ref|NC_002077.1|	3108	70	100M	*	0	0	GACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000077	0	gi|9632547|ref|NC_002077.1|	2805	60	56M1I43M	*	0	0	CCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACCAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000078	16	gi|9632547|ref|NC_002077.1|	4398	60	80M1I19M	*	0	0	CCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTATTGGTCTCCTGTCCTTCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000079	0	gi|9632547|ref|NC_002077.1|	3529	60	100M	*	0	0	ATCCTCTCATCGGCCAATACCTGTATTACCTGAACAGAACTCAAAATCAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000080	16	gi|9632547|ref|NC_002077.1|	2484	70	100M	*	0	0	AATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000081	16	gi|9632547|ref|NC_002077.1|	2824	70	100M	*	0	0	CTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000082	0	gi|9632547|ref|NC_002077.1|	1398	70	100M	*	0	0	GCTGCGTCAACTGGACCAATGAGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCCAAGGTCGTGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000083	0	gi|9632547|ref|NC_002077.1|	3238	60	100M	*	0	0	GCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000084	16	gi|9632547|ref|NC_002077.1|	3616	70	100M	*	0	0	GTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAAACAGACAACAACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000085	16	gi|9632547|ref|NC_002077.1|	1393	60	2M1D98M	*	0	0	CTCGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCCAAGGTCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000086	0	gi|9632547|ref|NC_002077.1|	2572	70	100M	*	0	0	CAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000087	0	gi|9632547|ref|NC_002077.1|	2715	60	52M1D48M	*	0	0	CAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000088	16	gi|9632547|ref|NC_002077.1|	3205	50	100M	*	0	0	ATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCATGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000089	0	gi|9632547|ref|NC_002077.1|	3584	70	100M	*	0	0	AAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000090	0	gi|9632547|ref|NC_002077.1|	1195	70	100M	*	0	0	CGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000091	16	gi|9632547|ref|NC_002077.1|	3231	60	100M	*	0	0	CTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000092	16	gi|9632547|ref|NC_002077.1|	1519	70	100M	*	0	0	CGGCAGCAAGGTGCGCGTGGACCAAAAGTGCAAGTCGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000093	0	gi|9632547|ref|NC_002077.1|	2879	60	100M	*	0	0	CGGAGTGGGTAATGCCTCAGGAAATTGCCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000094	16	gi|9632547|ref|NC_002077.1|	3256	70	100M	*	0	0	CGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000095	16	gi|9632547|ref|NC_002077.1|	1648	60	100M	*	0	0	GCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAAAGCAGGAAGTCAAAGAGTTCTTCCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000096	16	gi|9632547|ref|NC_002077.1|	4281	70	100M	*	0	0	CTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000097	0	gi|9632547|ref|NC_002077.1|	100	70	100M	*	0	0	CGAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCTGACGTAAATTACGTCATAGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000098	0	gi|9632547|ref|NC_002077.1|	2335	60	100M	*	0	0	AGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000099	0	gi|9632547|ref|NC_002077.1|	495	70	100M	*	0	0	CCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000100	0	gi|9632547|ref|NC_002077.1|	3373	70	100M	*	0	0	GCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000101	0	gi|9632547|ref|NC_002077.1|	1034	70	100M	*	0	0	CGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000102	16	gi|9632547|ref|NC_002077.1|	2709	70	100M	*	0	0	GGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000103	0	gi|9632547|ref|NC_002077.1|	266	70	100M	*	0	0	AGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000104	0	gi|9632547|ref|NC_002077.1|	433	50	100M	*	0	0	GGAATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCCGCAGCGCGACTTCCTGGTCCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000105	0	gi|9632547|ref|NC_002077.1|	4292	70	100M	*	0	0	AAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000106	0	gi|9632547|ref|NC_002077.1|	3645	60	53M1D47M	*	0	0	CCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAACAGACAACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000107	0	gi|9632547|ref|NC_002077.1|	2693	70	100M	*	0	0	GGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000108	0	gi|9632547|ref|NC_002077.1|	2065	50	100M	*	0	0	AGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTTCTTGCTCGGCCTGCGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000109	16	gi|9632547|ref|NC_002077.1|	3311	60	100M	*	0	0	CCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGCCGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000110	0	gi|9632547|ref|NC_002077.1|	1934	70	100M	*	0	0	AAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000111	0	gi|9632547|ref|NC_002077.1|	4069	50	100M	*	0	0	GTCCCATTTGGGCCAAACTTCCTCANACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCAT	IIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000112	0	gi|9632547|ref|NC_002077.1|	324	50	100M	*	0	0	GAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGACCTAGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000113	0	gi|9632547|ref|NC_002077.1|	2820	60	100M	*	0	0	CCTACTACAATGGCTTCAGGCGGTGGGGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000114	16	gi|9632547|ref|NC_002077.1|	3073	70	100M	*	0	0	ATTTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000115	16	gi|9632547|ref|NC_002077.1|	3141	60	100M	*	0	0	TTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGNTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000116	16	gi|9632547|ref|NC_002077.1|	4250	50	100M	*	0	0	AGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAAGCAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000117	16	gi|9632547|ref|NC_002077.1|	1894	60	100M	*	0	0	GGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCCGTTTCCCTGCAAGACATGCGAGAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000118	0	gi|9632547|ref|NC_002077.1|	3082	50	34M1D66M	*	0	0	GATTCCACTGCCACTTTTCACCACGTGACTGGCACGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000119	16	gi|9632547|ref|NC_002077.1|	3447	70	100M	*	0	0	AACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000120	0	gi|9632547|ref|NC_002077.1|	2480	60	100M	*	0	0	TGACAATCCGTGCCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000121	0	gi|9632547|ref|NC_002077.1|	2744	60	100M	*	0	0	TCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTAATACAATGGCTTCAGGCGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000122	0	gi|9632547|ref|NC_002077.1|	3752	60	100M	*	0	0	CCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGGGCGGTGTCATGATTTTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000123	0	gi|9632547|ref|NC_002077.1|	1861	60	15M1D85M	*	0	0	CCCCTCAGTCGCGGACCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000124	0	gi|9632547|ref|NC_002077.1|	3207	50	100M	*	0	0	GGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGCCTCTGCGCACCAGGGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000125	16	gi|9632547|ref|NC_002077.1|	1827	60	100M	*	0	0	ATGACGCGGATAAAAGCGAGCTCAAGCGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000126	0	gi|9632547|ref|NC_002077.1|	1114	70	100M	*	0	0	GTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000127	0	gi|9632547|ref|NC_002077.1|	4248	60	100M	*	0	0	ACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000128	16	gi|9632547|ref|NC_002077.1|	1388	60	3M1I96M	*	0	0	CCCATTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000129	16	gi|9632547|ref|NC_002077.1|	219	70	100M	*	0	0	GTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000130	16	gi|9632547|ref|NC_002077.1|	1293	20	20M1I68M3D11M	*	0	0	CCCAGAAAAGGTTCGGGAAGCCGCAACACCATCTGGCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAANCCATCGCCCACGTGCCCTTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000131	0	gi|9632547|ref|NC_002077.1|	370	50	100M	*	0	0	GAGCGACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAGGAATGGGCTCTGCCCCCGGATTCTGACATGGATCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000132	0	gi|9632547|ref|NC_002077.1|	3541	70	100M	*	0	0	ACCAATACCTGTATTACCTGAACAGAACTCAAAATCAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000133	16	gi|9632547|ref|NC_002077.1|	692	60	63M1D37M	*	0	0	ATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000134	0	gi|9632547|ref|NC_002077.1|	3459	70	100M	*	0	0	AGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000135	16	gi|9632547|ref|NC_002077.1|	2791	70	100M	*	0	0	AACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000136	16	gi|9632547|ref|NC_002077.1|	2663	60	100M	*	0	0	GCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000137	16	gi|9632547|ref|NC_002077.1|	4094	70	100M	*	0	0	CACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000138	16	gi|9632547|ref|NC_002077.1|	2305	60	100M	*	0	0	GAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000139	0	gi|9632547|ref|NC_002077.1|	1909	60	100M	*	0	0	GAACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000140	0	gi|9632547|ref|NC_002077.1|	14	3	100M	*	0	0	CTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTCTGCCGGCCCCAACGAGCGAGCGAGCGCNCAGAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIII	NM:i:2	X0:i:2	X1:i:0	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4607,4707,+,2;
+adeno-reads100.fasta.000000141	16	gi|9632547|ref|NC_002077.1|	894	70	100M	*	0	0	GGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000142	0	gi|9632547|ref|NC_002077.1|	3496	60	69M1I30M	*	0	0	ACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACANGAACTCAAAATCAGTCCGGAAGTGCCCAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000143	16	gi|9632547|ref|NC_002077.1|	3708	70	100M	*	0	0	AACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000144	16	gi|9632547|ref|NC_002077.1|	3582	50	100M	*	0	0	GGAAGTNCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGACTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGC	IIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000145	0	gi|9632547|ref|NC_002077.1|	2066	50	76M1D24M	*	0	0	GAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGGATTGCTTGCTCGGCCTGCGATCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000146	0	gi|9632547|ref|NC_002077.1|	1642	70	100M	*	0	0	GCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAAAGCAGGAAGTCAAAGAGTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000147	0	gi|9632547|ref|NC_002077.1|	4083	60	100M	*	0	0	AAACTTCCTCACACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000148	0	gi|9632547|ref|NC_002077.1|	4188	50	85M1D15M	*	0	0	GCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGATGGGAGCTGCAGAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000149	0	gi|9632547|ref|NC_002077.1|	541	70	100M	*	0	0	CGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000150	0	gi|9632547|ref|NC_002077.1|	951	70	100M	*	0	0	ATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000151	16	gi|9632547|ref|NC_002077.1|	1393	60	28M1I71M	*	0	0	CTACGGCTGCGTCAACTGGACCAATGAGAAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCCAAGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000152	0	gi|9632547|ref|NC_002077.1|	1370	40	11M3D89M	*	0	0	GCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000153	0	gi|9632547|ref|NC_002077.1|	1037	70	100M	*	0	0	GGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000154	0	gi|9632547|ref|NC_002077.1|	51	70	100M	*	0	0	AAAGGTCCGCAGACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000155	16	gi|9632547|ref|NC_002077.1|	684	70	100M	*	0	0	TGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000156	0	gi|9632547|ref|NC_002077.1|	4282	70	100M	*	0	0	TGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000157	0	gi|9632547|ref|NC_002077.1|	2671	60	100M	*	0	0	CACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000158	0	gi|9632547|ref|NC_002077.1|	3697	50	100M	*	0	0	CAAAAACAGACAACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAAACCTGGCACTGCTATGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000159	0	gi|9632547|ref|NC_002077.1|	3912	60	31M1I68M	*	0	0	GAGGAAATTAAAGCCACTAACCCTGTGGCCATCCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAGCACAGACCCTGCGACCGGAGATGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000160	0	gi|9632547|ref|NC_002077.1|	1329	20	10M1I42M3D47M	*	0	0	TGTTTGGGCCAGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCNCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!II	NM:i:5	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000161	16	gi|9632547|ref|NC_002077.1|	4479	70	100M	*	0	0	TGGTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAAAAGACTTACGTCATCGGGTTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000162	0	gi|9632547|ref|NC_002077.1|	699	60	100M	*	0	0	GCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTGCATCCCCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000163	0	gi|9632547|ref|NC_002077.1|	2627	60	100M	*	0	0	CGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000164	16	gi|9632547|ref|NC_002077.1|	3348	60	64M1D36M	*	0	0	TACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000165	16	gi|9632547|ref|NC_002077.1|	1606	40	55M1I44M	*	0	0	GTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGNGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000166	0	gi|9632547|ref|NC_002077.1|	1139	70	100M	*	0	0	AATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000167	0	gi|9632547|ref|NC_002077.1|	2030	60	100M	*	0	0	ACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCCGAAACTCTGTGCCATTCATCATCTGCTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000168	0	gi|9632547|ref|NC_002077.1|	2778	60	100M	*	0	0	CAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACNATAACGAAGGCGCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000169	0	gi|9632547|ref|NC_002077.1|	3420	70	100M	*	0	0	CCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000170	16	gi|9632547|ref|NC_002077.1|	3746	50	5M1I32M1D62M	*	0	0	ATATANACCTCAATGGGCGTGAATCCATCATCAACCCTGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGTGTCATG	IIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000171	16	gi|9632547|ref|NC_002077.1|	419	50	46M1D54M	*	0	0	TGGGTGGCCGAGAAGGAATGGGATCTGCCCCCGGATTCTGACATGGTCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000172	16	gi|9632547|ref|NC_002077.1|	3659	70	100M	*	0	0	ACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAAACAGACAACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000173	0	gi|9632547|ref|NC_002077.1|	2256	70	100M	*	0	0	GAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000174	16	gi|9632547|ref|NC_002077.1|	2484	60	100M	*	0	0	AATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTGTTCCAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000175	16	gi|9632547|ref|NC_002077.1|	998	60	100M	*	0	0	GCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCCTACATCTCCTTCAACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000176	0	gi|9632547|ref|NC_002077.1|	3026	70	100M	*	0	0	CAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000177	0	gi|9632547|ref|NC_002077.1|	1576	50	100M	*	0	0	CCCCGAGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000178	0	gi|9632547|ref|NC_002077.1|	3039	70	100M	*	0	0	TACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000179	16	gi|9632547|ref|NC_002077.1|	2110	60	100M	*	0	0	TGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000180	0	gi|9632547|ref|NC_002077.1|	1003	70	100M	*	0	0	CTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000181	16	gi|9632547|ref|NC_002077.1|	4460	70	100M	*	0	0	ATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000182	16	gi|9632547|ref|NC_002077.1|	678	60	46M1I53M	*	0	0	AGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACCTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000183	16	gi|9632547|ref|NC_002077.1|	1555	60	100M	*	0	0	GTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000184	0	gi|9632547|ref|NC_002077.1|	3739	70	100M	*	0	0	CTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000185	16	gi|9632547|ref|NC_002077.1|	395	60	100M	*	0	0	GGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAGGAATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000186	16	gi|9632547|ref|NC_002077.1|	4497	60	69M1D31M	*	0	0	ATCTTATCGGTTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAAAAGACTTAGTCATCGGGTTACCCCTAGTGATGGAGTTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000187	16	gi|9632547|ref|NC_002077.1|	963	60	100M	*	0	0	ATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGTCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
 adeno-reads100.fasta.000000188	4	*	0	0	*	*	0	0	CAGTGCTTCGAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTCCAACAGATTCCACTGCCACTTTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	RG:Z:none
-adeno-reads100.fasta.000000189	0	gi|9632547|ref|NC_002077.1|	3190	50	100M	*	0	0	AGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCATACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000190	0	gi|9632547|ref|NC_002077.1|	2649	50	100M	*	0	0	AAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAGGAGACTCAATTTTGGTCAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000191	16	gi|9632547|ref|NC_002077.1|	604	70	100M	*	0	0	CCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000192	0	gi|9632547|ref|NC_002077.1|	1322	40	59M3D41M	*	0	0	ATCTGGCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000193	0	gi|9632547|ref|NC_002077.1|	2820	70	100M	*	0	0	CCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000194	0	gi|9632547|ref|NC_002077.1|	1616	60	100M	*	0	0	ATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000195	0	gi|9632547|ref|NC_002077.1|	2404	60	100M	*	0	0	AGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000196	16	gi|9632547|ref|NC_002077.1|	1607	50	100M	*	0	0	TGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGNCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!II	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000197	0	gi|9632547|ref|NC_002077.1|	2328	50	100M	*	0	0	CAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGNGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!II	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000198	0	gi|9632547|ref|NC_002077.1|	3917	70	100M	*	0	0	AATTAAAGCCACTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAGCACAGACCCTGCGACCGGAGATGTGCATGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
+adeno-reads100.fasta.000000189	0	gi|9632547|ref|NC_002077.1|	3190	50	100M	*	0	0	AGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCATACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000190	0	gi|9632547|ref|NC_002077.1|	2649	50	100M	*	0	0	AAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAGGAGACTCAATTTTGGTCAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000191	16	gi|9632547|ref|NC_002077.1|	604	70	100M	*	0	0	CCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000192	0	gi|9632547|ref|NC_002077.1|	1322	40	59M3D41M	*	0	0	ATCTGGCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000193	0	gi|9632547|ref|NC_002077.1|	2820	70	100M	*	0	0	CCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000194	0	gi|9632547|ref|NC_002077.1|	1616	60	100M	*	0	0	ATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000195	0	gi|9632547|ref|NC_002077.1|	2404	60	100M	*	0	0	AGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000196	16	gi|9632547|ref|NC_002077.1|	1607	50	100M	*	0	0	TGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGNCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!II	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000197	0	gi|9632547|ref|NC_002077.1|	2328	50	100M	*	0	0	CAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGNGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!II	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000198	0	gi|9632547|ref|NC_002077.1|	3917	70	100M	*	0	0	AATTAAAGCCACTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAGCACAGACCCTGCGACCGGAGATGTGCATGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
 adeno-reads100.fasta.000000199	4	*	0	0	*	*	0	0	TGAAATCAAAGTACCCCCAGGGGGTGCTGTAGCCGAAGTAGTGGTTGTCGTTGCTTGCCCCCCAGCGTTGAAGCACTGGAGATTTGCTTGTAGAGGTGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	RG:Z:none
-adeno-reads100.fasta.000000200	16	gi|9632547|ref|NC_002077.1|	1790	60	77M1D23M	*	0	0	GTCAGAAAGGGTGGAGCCAACAAAAGACCCGCCCCCGATGACGCGGATAAAAGCGAGCCCAAGCGGGCCTGCCCCTCGTCGCGGATCCATCGACGTCAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000201	16	gi|9632547|ref|NC_002077.1|	1985	70	100M	*	0	0	TGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000202	16	gi|9632547|ref|NC_002077.1|	2559	60	100M	*	0	0	AACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCNGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!II	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000203	0	gi|9632547|ref|NC_002077.1|	3415	60	100M	*	0	0	ATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTNCCACAGCAGCTACGCGCACAGCCAGAGCCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000204	0	gi|9632547|ref|NC_002077.1|	941	70	100M	*	0	0	AACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000205	16	gi|9632547|ref|NC_002077.1|	2368	50	100M	*	0	0	GCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000206	16	gi|9632547|ref|NC_002077.1|	4117	60	100M	*	0	0	CTCCTCTTNTGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTAC	IIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000207	0	gi|9632547|ref|NC_002077.1|	4176	60	100M	*	0	0	ACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000208	16	gi|9632547|ref|NC_002077.1|	1331	30	3M1I47M3D49M	*	0	0	TTTGGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000209	16	gi|9632547|ref|NC_002077.1|	3595	50	100M	*	0	0	ACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGGCCCTGTTATCGGCAGCAGCGTGTTTCTAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000210	0	gi|9632547|ref|NC_002077.1|	2686	60	100M	*	0	0	CCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000211	0	gi|9632547|ref|NC_002077.1|	2238	70	100M	*	0	0	TATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000212	0	gi|9632547|ref|NC_002077.1|	695	70	100M	*	0	0	TACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000213	0	gi|9632547|ref|NC_002077.1|	3173	60	100M	*	0	0	CAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000214	16	gi|9632547|ref|NC_002077.1|	1099	70	100M	*	0	0	CGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000215	16	gi|9632547|ref|NC_002077.1|	614	70	100M	*	0	0	CTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000216	0	gi|9632547|ref|NC_002077.1|	1880	50	100M	*	0	0	TCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCACGCTTCAGATGCTGTTTCCTTGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000217	16	gi|9632547|ref|NC_002077.1|	2644	60	100M	*	0	0	GAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000218	16	gi|9632547|ref|NC_002077.1|	1287	40	95M2I3M	*	0	0	GCTGGGCCCAGAAAAGGTTCGGGAAGCGCAACACCATCTGGCTGTTTGGGCCGACCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000219	0	gi|9632547|ref|NC_002077.1|	4182	60	100M	*	0	0	GTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
+adeno-reads100.fasta.000000200	16	gi|9632547|ref|NC_002077.1|	1790	60	77M1D23M	*	0	0	GTCAGAAAGGGTGGAGCCAACAAAAGACCCGCCCCCGATGACGCGGATAAAAGCGAGCCCAAGCGGGCCTGCCCCTCGTCGCGGATCCATCGACGTCAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000201	16	gi|9632547|ref|NC_002077.1|	1985	70	100M	*	0	0	TGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000202	16	gi|9632547|ref|NC_002077.1|	2559	60	100M	*	0	0	AACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCNGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!II	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000203	0	gi|9632547|ref|NC_002077.1|	3415	60	100M	*	0	0	ATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTNCCACAGCAGCTACGCGCACAGCCAGAGCCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000204	0	gi|9632547|ref|NC_002077.1|	941	70	100M	*	0	0	AACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000205	16	gi|9632547|ref|NC_002077.1|	2368	50	100M	*	0	0	GCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000206	16	gi|9632547|ref|NC_002077.1|	4117	60	100M	*	0	0	CTCCTCTTNTGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTAC	IIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000207	0	gi|9632547|ref|NC_002077.1|	4176	60	100M	*	0	0	ACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000208	16	gi|9632547|ref|NC_002077.1|	1331	30	3M1I47M3D49M	*	0	0	TTTGGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000209	16	gi|9632547|ref|NC_002077.1|	3595	50	100M	*	0	0	ACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGGCCCTGTTATCGGCAGCAGCGTGTTTCTAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000210	0	gi|9632547|ref|NC_002077.1|	2686	60	100M	*	0	0	CCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000211	0	gi|9632547|ref|NC_002077.1|	2238	70	100M	*	0	0	TATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000212	0	gi|9632547|ref|NC_002077.1|	695	70	100M	*	0	0	TACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000213	0	gi|9632547|ref|NC_002077.1|	3173	60	100M	*	0	0	CAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000214	16	gi|9632547|ref|NC_002077.1|	1099	70	100M	*	0	0	CGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000215	16	gi|9632547|ref|NC_002077.1|	614	70	100M	*	0	0	CTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000216	0	gi|9632547|ref|NC_002077.1|	1880	50	100M	*	0	0	TCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCACGCTTCAGATGCTGTTTCCTTGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000217	16	gi|9632547|ref|NC_002077.1|	2644	60	100M	*	0	0	GAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000218	16	gi|9632547|ref|NC_002077.1|	1287	40	95M2I3M	*	0	0	GCTGGGCCCAGAAAAGGTTCGGGAAGCGCAACACCATCTGGCTGTTTGGGCCGACCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000219	0	gi|9632547|ref|NC_002077.1|	4182	60	100M	*	0	0	GTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
 adeno-reads100.fasta.000000220	4	*	0	0	*	*	0	0	CTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTNGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTCTTCAACGCTGGGGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	RG:Z:none
-adeno-reads100.fasta.000000221	0	gi|9632547|ref|NC_002077.1|	33	60	100M	*	0	0	CGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGAGGGAGTGGCCAACTCCATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000222	16	gi|9632547|ref|NC_002077.1|	2282	60	100M	*	0	0	CGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000223	16	gi|9632547|ref|NC_002077.1|	3682	60	70M1D30M	*	0	0	AGCGCGTTTCTAAAACAAAAACAGACAACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACTCAATGGGCGTGAATCCATCATCAACCCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000224	16	gi|9632547|ref|NC_002077.1|	472	70	100M	*	0	0	TCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000225	16	gi|9632547|ref|NC_002077.1|	739	70	100M	*	0	0	CAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000226	0	gi|9632547|ref|NC_002077.1|	20	3	100M	*	0	0	GCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCACGCAGAGAGGGAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:2	X1:i:0	XT:A:R	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4613,4713,+,1;
-adeno-reads100.fasta.000000227	16	gi|9632547|ref|NC_002077.1|	584	70	100M	*	0	0	AAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000228	16	gi|9632547|ref|NC_002077.1|	2130	60	100M	*	0	0	GGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000229	0	gi|9632547|ref|NC_002077.1|	741	70	100M	*	0	0	AGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000230	0	gi|9632547|ref|NC_002077.1|	2585	70	100M	*	0	0	CAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000231	0	gi|9632547|ref|NC_002077.1|	2118	60	100M	*	0	0	ATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000232	0	gi|9632547|ref|NC_002077.1|	1410	50	100M	*	0	0	GGACCAATGAGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGTCAAGGTCGTTGAGTCCGCCAAGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000233	0	gi|9632547|ref|NC_002077.1|	1811	60	15M1D85M	*	0	0	AAAAGACCCGCCCCCATGACGCGGATAAAAGCGAGCCCAAGCGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000234	16	gi|9632547|ref|NC_002077.1|	1853	70	100M	*	0	0	CGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000235	0	gi|9632547|ref|NC_002077.1|	1695	60	95M1I4M	*	0	0	TGGAGCATGACTTTGGCAAGGTGACAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACAGTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000236	0	gi|9632547|ref|NC_002077.1|	2007	40	100M	*	0	0	TCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAACGAGGNCGTATCGGANACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIII!III	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000237	0	gi|9632547|ref|NC_002077.1|	2436	60	100M	*	0	0	TCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000238	16	gi|9632547|ref|NC_002077.1|	1342	20	39M3D61M	*	0	0	CACCACGGGCAAGACCAACATCGCGGAAGCGATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTNCCCTTCAATGATTGCGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000239	16	gi|9632547|ref|NC_002077.1|	444	60	100M	*	0	0	TGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGAAGCGCGACTTCCTGGTCCAATGGCGCCGCGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000240	16	gi|9632547|ref|NC_002077.1|	3468	60	100M	*	0	0	TTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTNTATTACCTGAACAGAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000241	16	gi|9632547|ref|NC_002077.1|	3043	70	100M	*	0	0	TCGGCTACAGCACCCCCTGGGGGTATTTTGATTTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000242	16	gi|9632547|ref|NC_002077.1|	2421	50	84M1I15M	*	0	0	GCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACNCACGCCGACGCCGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000243	16	gi|9632547|ref|NC_002077.1|	2031	60	100M	*	0	0	CGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGTACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000244	0	gi|9632547|ref|NC_002077.1|	4281	70	100M	*	0	0	CTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000245	0	gi|9632547|ref|NC_002077.1|	4207	60	100M	*	0	0	TTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000246	0	gi|9632547|ref|NC_002077.1|	2574	60	100M	*	0	0	GTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTTGCCAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000247	0	gi|9632547|ref|NC_002077.1|	2933	20	84M4I12M	*	0	0	CAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCCCCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000248	16	gi|9632547|ref|NC_002077.1|	1170	70	100M	*	0	0	CCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000249	0	gi|9632547|ref|NC_002077.1|	4296	60	100M	*	0	0	AGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTAGACTGAGCCTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000250	0	gi|9632547|ref|NC_002077.1|	1932	70	100M	*	0	0	ACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000251	16	gi|9632547|ref|NC_002077.1|	2801	60	100M	*	0	0	AACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGACGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000252	0	gi|9632547|ref|NC_002077.1|	2904	70	100M	*	0	0	TGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000253	0	gi|9632547|ref|NC_002077.1|	2609	60	100M	*	0	0	CGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000254	16	gi|9632547|ref|NC_002077.1|	3191	40	64M1D36M	*	0	0	GGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCATGCCTTCCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000255	0	gi|9632547|ref|NC_002077.1|	4087	70	100M	*	0	0	TTCCTCACACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000256	16	gi|9632547|ref|NC_002077.1|	1328	30	32M1D20M3D48M	*	0	0	CTGTTTGGGCCGGCCACCACGGGCAAGACCAAATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000257	16	gi|9632547|ref|NC_002077.1|	1056	70	100M	*	0	0	AGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000258	0	gi|9632547|ref|NC_002077.1|	2040	60	100M	*	0	0	GTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000259	16	gi|9632547|ref|NC_002077.1|	1590	60	100M	*	0	0	CCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000260	16	gi|9632547|ref|NC_002077.1|	3439	70	100M	*	0	0	CGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000261	0	gi|9632547|ref|NC_002077.1|	972	70	100M	*	0	0	CGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000262	16	gi|9632547|ref|NC_002077.1|	4077	50	100M	*	0	0	TGGGCCAAACTTCCTCACACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCACCAAAAACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000263	0	gi|9632547|ref|NC_002077.1|	2982	20	35M4I13M1I47M	*	0	0	AACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000264	16	gi|9632547|ref|NC_002077.1|	204	70	100M	*	0	0	GGTCCTGTATTAGCTGTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000265	0	gi|9632547|ref|NC_002077.1|	3466	70	100M	*	0	0	CCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000266	16	gi|9632547|ref|NC_002077.1|	3804	70	100M	*	0	0	AAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGTGTCATGATTTTTGGAAAAGAGAGCGCCGGAGCTTCAAACACTGCATTGGACAATGTCATGATTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000267	0	gi|9632547|ref|NC_002077.1|	2937	30	80M4I16M	*	0	0	GTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000268	16	gi|9632547|ref|NC_002077.1|	305	70	100M	*	0	0	TTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000269	0	gi|9632547|ref|NC_002077.1|	1966	70	100M	*	0	0	GCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000270	16	gi|9632547|ref|NC_002077.1|	3413	50	58M1I41M	*	0	0	ATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGGAGGAAGTGCCTTTCCACAGCAGCCACGCGCACAGCCAGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000271	0	gi|9632547|ref|NC_002077.1|	2640	50	100M	*	0	0	CCTGGAAAGAAACGTCCGGTAGAGCAGTCGCNACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000272	16	gi|9632547|ref|NC_002077.1|	2150	70	100M	*	0	0	TGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000273	16	gi|9632547|ref|NC_002077.1|	3775	60	79M1D21M	*	0	0	TCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGTGTCATGATTTTTGGAAAGAGAGCGCCGGAGCTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000274	0	gi|9632547|ref|NC_002077.1|	1703	60	100M	*	0	0	GACTTTGGCAAGGTGACAAAGCAGGAAGTCAAAGAGTTCTTCCTCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000275	0	gi|9632547|ref|NC_002077.1|	716	70	100M	*	0	0	CTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000276	16	gi|9632547|ref|NC_002077.1|	2223	70	100M	*	0	0	ATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000277	0	gi|9632547|ref|NC_002077.1|	3084	60	100M	*	0	0	TTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACAGCCAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000278	0	gi|9632547|ref|NC_002077.1|	2384	50	100M	*	0	0	ACCCTTCAGCGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000279	0	gi|9632547|ref|NC_002077.1|	1973	50	91M1I8M	*	0	0	CCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGNGCTTCCCCGGCGTGTCCAGAATCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000280	0	gi|9632547|ref|NC_002077.1|	2659	60	100M	*	0	0	TAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000281	0	gi|9632547|ref|NC_002077.1|	443	50	62M1D38M	*	0	0	CTGCCCCCGGATTCTGACGTGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000282	0	gi|9632547|ref|NC_002077.1|	1141	60	100M	*	0	0	TGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCANCCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000283	0	gi|9632547|ref|NC_002077.1|	2482	70	100M	*	0	0	ACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000284	16	gi|9632547|ref|NC_002077.1|	1902	70	100M	*	0	0	CTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000285	0	gi|9632547|ref|NC_002077.1|	3473	60	100M	*	0	0	GGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGGATTACCTGAACAGAACTCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000286	16	gi|9632547|ref|NC_002077.1|	2483	70	100M	*	0	0	CAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000287	0	gi|9632547|ref|NC_002077.1|	1077	60	100M	*	0	0	CCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000288	0	gi|9632547|ref|NC_002077.1|	554	60	100M	*	0	0	CCGGAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCGACCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000289	16	gi|9632547|ref|NC_002077.1|	884	70	100M	*	0	0	GAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000290	16	gi|9632547|ref|NC_002077.1|	2662	60	100M	*	0	0	AGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000291	16	gi|9632547|ref|NC_002077.1|	4114	60	100M	*	0	0	CGTCTCCNCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGC	IIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000292	16	gi|9632547|ref|NC_002077.1|	2740	60	83M1I16M	*	0	0	TTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTAACTACAATGGCTTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000293	0	gi|9632547|ref|NC_002077.1|	3130	60	100M	*	0	0	ACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATGGCTAATAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000294	16	gi|9632547|ref|NC_002077.1|	426	50	100M	*	0	0	CCGAGAAGGAATGGGATCTGCGCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGACTTCCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000295	0	gi|9632547|ref|NC_002077.1|	2540	40	69M1I30M	*	0	0	AGATACGTCTCTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAAAAGCGGGTTCTCGAACCTCTGCGGTCTGGTTGAGGAAGGCGCTAAGACGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000296	16	gi|9632547|ref|NC_002077.1|	4086	60	100M	*	0	0	CTTCCTCACACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000297	16	gi|9632547|ref|NC_002077.1|	4311	50	45M1D55M	*	0	0	CCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGGCANCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!III	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000298	0	gi|9632547|ref|NC_002077.1|	3334	60	100M	*	0	0	TCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCAGGAATATTTCCCTTCTCAGATGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000299	0	gi|9632547|ref|NC_002077.1|	3904	60	100M	*	0	0	CNGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAGCACAGACCCTGCGACCGG	I!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000300	0	gi|9632547|ref|NC_002077.1|	731	50	95M1I4M	*	0	0	GCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGATGNTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!II	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000301	16	gi|9632547|ref|NC_002077.1|	3848	60	100M	*	0	0	TTTTGGAAAAGAGAGCGCCGGAGCTTCAAACACTGCATTGGACAATGTCATGATTACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCACCAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000302	16	gi|9632547|ref|NC_002077.1|	479	70	100M	*	0	0	GAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTGTTCAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000303	0	gi|9632547|ref|NC_002077.1|	925	70	100M	*	0	0	CCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000304	16	gi|9632547|ref|NC_002077.1|	3302	50	64M1D36M	*	0	0	GGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATATGGCTACCTGACGCTCACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000305	16	gi|9632547|ref|NC_002077.1|	2456	70	100M	*	0	0	CTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000306	16	gi|9632547|ref|NC_002077.1|	459	70	100M	*	0	0	ACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000307	16	gi|9632547|ref|NC_002077.1|	1863	70	100M	*	0	0	CCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000308	16	gi|9632547|ref|NC_002077.1|	2426	60	100M	*	0	0	GGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000309	0	gi|9632547|ref|NC_002077.1|	2586	70	100M	*	0	0	AAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000310	0	gi|9632547|ref|NC_002077.1|	3015	20	54M1I45M	*	0	0	TGGGGGGCCAGCAACGACAACCACTACTTCGGCTACNGCACCCCCTGGGGGTATCCTTGATTTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000311	0	gi|9632547|ref|NC_002077.1|	4161	60	100M	*	0	0	ATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000312	16	gi|9632547|ref|NC_002077.1|	3148	60	100M	*	0	0	CCAAGAGACTCAACTTCNAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCA	IIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000313	16	gi|9632547|ref|NC_002077.1|	2166	50	100M	*	0	0	TGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCAAGATTGGCTCGTGGACAACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000314	0	gi|9632547|ref|NC_002077.1|	1036	70	100M	*	0	0	GGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000315	16	gi|9632547|ref|NC_002077.1|	3320	60	100M	*	0	0	CCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATGTTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000316	0	gi|9632547|ref|NC_002077.1|	60	70	100M	*	0	0	CAGACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000317	16	gi|9632547|ref|NC_002077.1|	962	70	100M	*	0	0	AATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000318	16	gi|9632547|ref|NC_002077.1|	2057	60	100M	*	0	0	GGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000319	0	gi|9632547|ref|NC_002077.1|	1152	50	100M	*	0	0	TCATGGCCCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTATCGCATCCTGGAGCTGAACGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000320	0	gi|9632547|ref|NC_002077.1|	1091	70	100M	*	0	0	TTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000321	0	gi|9632547|ref|NC_002077.1|	2232	50	52M1D10M1I37M	*	0	0	GATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGGTGGTGGGACNTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000322	16	gi|9632547|ref|NC_002077.1|	1337	20	17M1D19M1D6M3D58M	*	0	0	CCGGCCACCACGGGCAAACCAACATCGCGGAAGCCACGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTTCAATGATTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000323	16	gi|9632547|ref|NC_002077.1|	488	60	100M	*	0	0	CCCCTGACCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTNTTCAGTTCGAGAAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000324	16	gi|9632547|ref|NC_002077.1|	4548	60	100M	*	0	0	TTCGCGATAAAACACTTACGTCATCGGGTTACCCCTAGTGATGGAGTTGCCCACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000325	16	gi|9632547|ref|NC_002077.1|	3124	60	100M	*	0	0	TCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000326	16	gi|9632547|ref|NC_002077.1|	1332	40	49M3D51M	*	0	0	TTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTTCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000327	16	gi|9632547|ref|NC_002077.1|	3464	60	54M1D46M	*	0	0	CACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000328	16	gi|9632547|ref|NC_002077.1|	2290	50	60M1D40M	*	0	0	GGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000329	0	gi|9632547|ref|NC_002077.1|	3426	60	100M	*	0	0	CAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCGGAGCCTGGACCGGCTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000330	0	gi|9632547|ref|NC_002077.1|	626	70	100M	*	0	0	ACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000331	0	gi|9632547|ref|NC_002077.1|	4300	70	100M	*	0	0	AGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000332	0	gi|9632547|ref|NC_002077.1|	163	70	100M	*	0	0	CTGCCGCGTCAGCGCTGACGTAAATTACGTCATAGGGGAGTGGTCCTGTATTAGCTGTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000333	16	gi|9632547|ref|NC_002077.1|	3170	50	100M	*	0	0	CTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCCCGGTTCAAGCCTTCTCGGACTCGGAGTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000334	0	gi|9632547|ref|NC_002077.1|	2928	30	89M4I7M	*	0	0	GGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000335	0	gi|9632547|ref|NC_002077.1|	1052	70	100M	*	0	0	AAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000336	16	gi|9632547|ref|NC_002077.1|	4422	60	100M	*	0	0	CGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTAGCGGTTACCATGGTTATAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000337	0	gi|9632547|ref|NC_002077.1|	4189	60	100M	*	0	0	CGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000338	16	gi|9632547|ref|NC_002077.1|	3330	60	66M1I33M	*	0	0	GTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCACTCCTTTTACTGCCTGGAATATTTCCCTTCTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000339	16	gi|9632547|ref|NC_002077.1|	4423	70	100M	*	0	0	GTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000340	16	gi|9632547|ref|NC_002077.1|	1276	70	100M	*	0	0	CGTCTTTCTCGGCTGGGCCCAGAAAAGGTTCGGGAAGCGCAACACCATCTGGCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000341	0	gi|9632547|ref|NC_002077.1|	173	60	100M	*	0	0	AGCGCTGACGTAAATTACGTCATAGGGGAGTGGTCCTGTATTAGCTGTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGTCATTTAGGGTAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000342	16	gi|9632547|ref|NC_002077.1|	4063	50	96M1D4M	*	0	0	TGCAGGGTCCCATTTGGGCCAAACTTCCTCACACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCGATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000343	0	gi|9632547|ref|NC_002077.1|	3866	70	100M	*	0	0	CGGAGCTTCAAACACTGCATTGGACAATGTCATGATTACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000344	0	gi|9632547|ref|NC_002077.1|	4365	70	100M	*	0	0	GTGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000345	16	gi|9632547|ref|NC_002077.1|	2087	50	100M	*	0	0	AAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCCACGTGGACCTGGATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000346	16	gi|9632547|ref|NC_002077.1|	1343	30	38M3D62M	*	0	0	ACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGGACTTTCCCTTCAATGATTGCGTCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000347	0	gi|9632547|ref|NC_002077.1|	1089	70	100M	*	0	0	CCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000348	16	gi|9632547|ref|NC_002077.1|	2130	50	51M1D49M	*	0	0	GGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000349	0	gi|9632547|ref|NC_002077.1|	3580	50	24M1I75M	*	0	0	CCGGAAGTGCCCAAAACAAGGACTNTGCTGTATAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGC	IIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000350	0	gi|9632547|ref|NC_002077.1|	1060	60	100M	*	0	0	GATCCAGGAGGACCAGGCCTCGTACATCTGCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000351	0	gi|9632547|ref|NC_002077.1|	1829	60	50M1I49M	*	0	0	GACGCGGATAAAAGCGAGCCCAAGCGGGCCTGCCCCTCAGTCGCGGATCCNATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000352	0	gi|9632547|ref|NC_002077.1|	4332	50	37M1D23M1I39M	*	0	0	AATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGCAACAATGGACTTTATACTGAGCACTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000353	0	gi|9632547|ref|NC_002077.1|	4126	60	100M	*	0	0	TGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGNGTTTTCAGCTACAAAGTTTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000354	16	gi|9632547|ref|NC_002077.1|	3342	60	100M	*	0	0	CCGCAATACGGCTACCTGACGCTCAACAATTGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000355	0	gi|9632547|ref|NC_002077.1|	2117	50	100M	*	0	0	CATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGNCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000356	0	gi|9632547|ref|NC_002077.1|	916	60	33M1I66M	*	0	0	CCACGTCAGCCAGACCCAGGAGCAGAACAAGGACGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000357	16	gi|9632547|ref|NC_002077.1|	2199	60	100M	*	0	0	AGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGCGGGACTTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000358	16	gi|9632547|ref|NC_002077.1|	3843	70	100M	*	0	0	ATGATTTTTGGAAAAGAGAGCGCCGGAGCTTCAAACACTGCATTGGACAATGTCATGATTACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000359	16	gi|9632547|ref|NC_002077.1|	3790	50	100M	*	0	0	CTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGAGTCATGATTTTTGGAAAAGAGAGCGCCGGAGCTTCAAACACTGGATTGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000360	16	gi|9632547|ref|NC_002077.1|	1880	60	2M1D98M	*	0	0	TCACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000361	0	gi|9632547|ref|NC_002077.1|	1187	60	100M	*	0	0	GTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000362	0	gi|9632547|ref|NC_002077.1|	659	70	100M	*	0	0	CTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000363	16	gi|9632547|ref|NC_002077.1|	4447	60	60M1D40M	*	0	0	AATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000364	16	gi|9632547|ref|NC_002077.1|	2194	60	60M1I39M	*	0	0	TTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCNTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000365	0	gi|9632547|ref|NC_002077.1|	3426	70	100M	*	0	0	CAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000366	16	gi|9632547|ref|NC_002077.1|	1728	70	100M	*	0	0	AAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGAGCCAACAAAAGACCCGCCCCCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000367	0	gi|9632547|ref|NC_002077.1|	4064	50	100M	*	0	0	GCAGGGTCCCATTTGGGCCAAACTTCCTCACACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCNTTGGACTCAAGAACCCGCCTCCTCAGATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000368	16	gi|9632547|ref|NC_002077.1|	2257	60	100M	*	0	0	AGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000369	16	gi|9632547|ref|NC_002077.1|	828	70	100M	*	0	0	TGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000370	0	gi|9632547|ref|NC_002077.1|	647	70	100M	*	0	0	CTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000371	16	gi|9632547|ref|NC_002077.1|	305	60	100M	*	0	0	TTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCGGGACGAGCACCTGCCGGGCATTTCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000372	0	gi|9632547|ref|NC_002077.1|	4280	60	94M1I5M	*	0	0	GCTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACNAATGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000373	0	gi|9632547|ref|NC_002077.1|	738	60	100M	*	0	0	CCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGACCGAGCTGCAGTGGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000374	16	gi|9632547|ref|NC_002077.1|	2019	70	100M	*	0	0	TCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000375	0	gi|9632547|ref|NC_002077.1|	875	70	100M	*	0	0	AACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000376	0	gi|9632547|ref|NC_002077.1|	436	50	100M	*	0	0	ATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGAGTTCCTGGTCCAATGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000377	0	gi|9632547|ref|NC_002077.1|	4283	60	100M	*	0	0	GCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGTACTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000378	0	gi|9632547|ref|NC_002077.1|	2402	50	100M	*	0	0	CAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGGCAATCCGTACCTGCGGTAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000379	16	gi|9632547|ref|NC_002077.1|	4266	50	100M	*	0	0	GAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTGGATTCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATNTTACTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000380	0	gi|9632547|ref|NC_002077.1|	2145	70	100M	*	0	0	TTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000381	0	gi|9632547|ref|NC_002077.1|	2638	50	65M1D35M	*	0	0	CTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000382	16	gi|9632547|ref|NC_002077.1|	4514	70	100M	*	0	0	GGTTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAAAAGACTTACGTCATCGGGTTACCCCTAGTGATGGAGTTGCCCACTCCCTCTCTGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000383	0	gi|9632547|ref|NC_002077.1|	579	60	100M	*	0	0	TCGNGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAA	III!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000384	16	gi|9632547|ref|NC_002077.1|	1046	60	84M1I15M	*	0	0	TCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCAGCTCTGGACAATGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000385	16	gi|9632547|ref|NC_002077.1|	4150	60	100M	*	0	0	CGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACCCCAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000386	0	gi|9632547|ref|NC_002077.1|	3419	60	100M	*	0	0	CCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGCAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000387	16	gi|9632547|ref|NC_002077.1|	2198	70	100M	*	0	0	GAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000388	0	gi|9632547|ref|NC_002077.1|	689	50	97M1D3M	*	0	0	ACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAAGGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000389	16	gi|9632547|ref|NC_002077.1|	2944	30	73M4I23M	*	0	0	CCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000390	0	gi|9632547|ref|NC_002077.1|	2121	60	100M	*	0	0	ATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000391	0	gi|9632547|ref|NC_002077.1|	2445	70	100M	*	0	0	CACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000392	0	gi|9632547|ref|NC_002077.1|	1024	70	100M	*	0	0	GCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000393	16	gi|9632547|ref|NC_002077.1|	1951	40	26M1I28M1D45M	*	0	0	GGGCATGCTTCAGATGCTGTTTCCCTCGCAAGACATGCGAGAGAATGAATCAGAATTCAAAATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000394	16	gi|9632547|ref|NC_002077.1|	20	3	100M	*	0	0	GCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTTTGCCGGCCCCACCGAGCGAGCGGGCGCGCAGAGAGGGAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:2	X1:i:0	XT:A:R	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4613,4713,-,2;
-adeno-reads100.fasta.000000395	16	gi|9632547|ref|NC_002077.1|	3095	70	100M	*	0	0	CTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000396	16	gi|9632547|ref|NC_002077.1|	1554	60	100M	*	0	0	CGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000397	0	gi|9632547|ref|NC_002077.1|	4256	60	100M	*	0	0	AGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAACATCTGCCAACGTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000398	0	gi|9632547|ref|NC_002077.1|	648	60	33M1I66M	*	0	0	TGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCATGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000399	16	gi|9632547|ref|NC_002077.1|	3767	70	100M	*	0	0	ATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGTGTCATGATTTTTGGAAAAGAGAGCGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000400	16	gi|9632547|ref|NC_002077.1|	2913	50	100M	*	0	0	GATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTAGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCANTGCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000401	0	gi|9632547|ref|NC_002077.1|	76	60	1M1I98M	*	0	0	GCCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000402	16	gi|9632547|ref|NC_002077.1|	1257	50	50M1D44M1D6M	*	0	0	AACCTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCAGAAAAGGTTCGGAAGCGCAACACCATCTGGCTGTTTGGGCCGGCCACCACGGGCAGACCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000403	16	gi|9632547|ref|NC_002077.1|	4433	70	100M	*	0	0	ATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000404	16	gi|9632547|ref|NC_002077.1|	1570	60	100M	*	0	0	CCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000405	0	gi|9632547|ref|NC_002077.1|	4149	70	100M	*	0	0	CCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000406	0	gi|9632547|ref|NC_002077.1|	1675	70	100M	*	0	0	ATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000407	0	gi|9632547|ref|NC_002077.1|	1836	50	100M	*	0	0	ATAAAAGCGAGCCCAAGCGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCACCGGTGGACTTTGCCNACAGGTACCAAAACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000408	0	gi|9632547|ref|NC_002077.1|	4349	70	100M	*	0	0	CAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000409	16	gi|9632547|ref|NC_002077.1|	893	70	100M	*	0	0	CGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000410	16	gi|9632547|ref|NC_002077.1|	1142	50	10M1D90M	*	0	0	GCCGGCAAGACATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCGTCCTGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000411	0	gi|9632547|ref|NC_002077.1|	2866	50	100M	*	0	0	ACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTACGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000412	0	gi|9632547|ref|NC_002077.1|	767	50	23M1I16M1I59M	*	0	0	AACAAGGTGGTGGACGAGTGCTATCATCCCCAACTACCTCACTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000413	0	gi|9632547|ref|NC_002077.1|	1551	60	100M	*	0	0	AGTCGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000414	0	gi|9632547|ref|NC_002077.1|	766	50	100M	*	0	0	GAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGTCGTGGACTAACATGGAGGAGTATATAAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000415	16	gi|9632547|ref|NC_002077.1|	524	70	100M	*	0	0	CTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000416	0	gi|9632547|ref|NC_002077.1|	2180	60	100M	*	0	0	CTGAATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000417	16	gi|9632547|ref|NC_002077.1|	1985	50	100M	*	0	0	TGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGATTGTTCAGAGTGCTTCCCCGGCGGGTCAGAATCTCAACCGGTCGTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000418	16	gi|9632547|ref|NC_002077.1|	3451	70	100M	*	0	0	TTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000419	0	gi|9632547|ref|NC_002077.1|	4232	60	100M	*	0	0	CATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000420	0	gi|9632547|ref|NC_002077.1|	4116	50	11M1I88M	*	0	0	TCTCCTCTTATGGGGCCGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000421	0	gi|9632547|ref|NC_002077.1|	851	60	100M	*	0	0	GAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACNAGGAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000422	0	gi|9632547|ref|NC_002077.1|	2406	60	100M	*	0	0	GGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000423	0	gi|9632547|ref|NC_002077.1|	3430	60	100M	*	0	0	TGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTNTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000424	16	gi|9632547|ref|NC_002077.1|	279	70	100M	*	0	0	CCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000425	0	gi|9632547|ref|NC_002077.1|	1944	60	100M	*	0	0	GTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGTGAGACTGTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000426	0	gi|9632547|ref|NC_002077.1|	3696	70	100M	*	0	0	ACAAAAACAGACAACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000427	0	gi|9632547|ref|NC_002077.1|	2680	60	100M	*	0	0	CAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000428	16	gi|9632547|ref|NC_002077.1|	3460	70	100M	*	0	0	GCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000429	16	gi|9632547|ref|NC_002077.1|	3801	60	89M1D11M	*	0	0	CACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGTGTCATGATTTTTGGAAAAGAGAGCGCCGGAGCTTCAAACACTGCATTGGAAATGTCATGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000430	16	gi|9632547|ref|NC_002077.1|	1962	70	100M	*	0	0	AGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000431	0	gi|9632547|ref|NC_002077.1|	3003	30	14M4I82M	*	0	0	TCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTTCAACAGATTCCACTGCCACTTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000432	0	gi|9632547|ref|NC_002077.1|	3708	70	100M	*	0	0	AACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000433	16	gi|9632547|ref|NC_002077.1|	844	60	100M	*	0	0	TAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCACAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000434	16	gi|9632547|ref|NC_002077.1|	1545	60	100M	*	0	0	AGTGCAAGTCGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000435	16	gi|9632547|ref|NC_002077.1|	4096	70	100M	*	0	0	CAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000436	0	gi|9632547|ref|NC_002077.1|	4099	70	100M	*	0	0	ATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000437	0	gi|9632547|ref|NC_002077.1|	2186	70	100M	*	0	0	GACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000438	16	gi|9632547|ref|NC_002077.1|	2099	50	100M	*	0	0	CGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000439	16	gi|9632547|ref|NC_002077.1|	3142	70	100M	*	0	0	TCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000440	0	gi|9632547|ref|NC_002077.1|	2362	50	100M	*	0	0	TTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000441	16	gi|9632547|ref|NC_002077.1|	3610	40	11M1I88M	*	0	0	TTAGCCGTGGGTTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACGTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAANACAGACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000442	16	gi|9632547|ref|NC_002077.1|	1391	70	100M	*	0	0	TTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCCAAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000443	0	gi|9632547|ref|NC_002077.1|	1715	50	100M	*	0	0	GTGACAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGAGCCAACNAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!III	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000444	16	gi|9632547|ref|NC_002077.1|	3610	70	100M	*	0	0	TTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAAACAGACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000445	0	gi|9632547|ref|NC_002077.1|	2633	40	37M1D63M	*	0	0	GACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCTCGCTAAAAAGAGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000446	16	gi|9632547|ref|NC_002077.1|	3732	60	77M1I22M	*	0	0	ACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGATCGACGAAGACAAGTTCTTTCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000447	0	gi|9632547|ref|NC_002077.1|	2893	70	100M	*	0	0	CCTCAGGAAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000448	16	gi|9632547|ref|NC_002077.1|	2287	50	100M	*	0	0	GGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGCCTGGTGCTTCCTGGCTACAAGTACCTAGGACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000449	0	gi|9632547|ref|NC_002077.1|	3538	70	100M	*	0	0	TCGACCAATACCTGTATTACCTGAACAGAACTCAAAATCAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000450	16	gi|9632547|ref|NC_002077.1|	1027	60	100M	*	0	0	GGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCCGATCAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000451	16	gi|9632547|ref|NC_002077.1|	4589	60	100M	*	0	0	TGGAGTTGCCCACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTTTGCCGGCCCCACCGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000452	16	gi|9632547|ref|NC_002077.1|	3726	60	100M	*	0	0	ACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCAGCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000453	0	gi|9632547|ref|NC_002077.1|	2882	60	18M1D82M	*	0	0	AGTGGGTAATGCCTCAGGAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000454	16	gi|9632547|ref|NC_002077.1|	2930	30	87M4I9M	*	0	0	CGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000455	16	gi|9632547|ref|NC_002077.1|	4432	70	100M	*	0	0	AATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000456	16	gi|9632547|ref|NC_002077.1|	4516	70	100M	*	0	0	TTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAAAAGACTTACGTCATCGGGTTACCCCTAGTGATGGAGTTGCCCACTCCCTCTCTGCGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000457	0	gi|9632547|ref|NC_002077.1|	3628	70	100M	*	0	0	CTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAAACAGACAACAACAACAGCAATTTTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000458	16	gi|9632547|ref|NC_002077.1|	2234	50	22M1I77M	*	0	0	TGGTTATCTTCCAGATTGGCTCAGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAATCCAACCAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000459	16	gi|9632547|ref|NC_002077.1|	833	60	100M	*	0	0	TGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCAGCTGACCCACGTCAGCCAGACCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000460	16	gi|9632547|ref|NC_002077.1|	2871	60	100M	*	0	0	GGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000461	0	gi|9632547|ref|NC_002077.1|	2443	70	100M	*	0	0	AGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000462	0	gi|9632547|ref|NC_002077.1|	2045	50	100M	*	0	0	GAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCATCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000463	0	gi|9632547|ref|NC_002077.1|	3057	70	100M	*	0	0	CCCTGGGGGTATTTTGATTTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000464	0	gi|9632547|ref|NC_002077.1|	4096	70	100M	*	0	0	CAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000465	16	gi|9632547|ref|NC_002077.1|	1725	70	100M	*	0	0	AGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGAGCCAACAAAAGACCCGCCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000466	16	gi|9632547|ref|NC_002077.1|	1749	70	100M	*	0	0	GGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGAGCCAACAAAAGACCCGCCCCCGATGACGCGGATAAAAGCGAGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000467	0	gi|9632547|ref|NC_002077.1|	2867	70	100M	*	0	0	CGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000468	16	gi|9632547|ref|NC_002077.1|	3503	70	100M	*	0	0	CAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACAGAACTCAAAATCAGTCCGGAAGTGCCCAAAACAAGGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000469	16	gi|9632547|ref|NC_002077.1|	2402	50	100M	*	0	0	CAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGATCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000470	16	gi|9632547|ref|NC_002077.1|	2425	60	100M	*	0	0	CGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000471	0	gi|9632547|ref|NC_002077.1|	3293	70	100M	*	0	0	TGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000472	0	gi|9632547|ref|NC_002077.1|	458	70	100M	*	0	0	GACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000473	0	gi|9632547|ref|NC_002077.1|	3347	40	60M1D4M1D36M	*	0	0	ATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCTGGATATTTCCCTTCTCAGATGCTGAGAACGGGGAACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000474	0	gi|9632547|ref|NC_002077.1|	2328	60	100M	*	0	0	CAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000475	0	gi|9632547|ref|NC_002077.1|	1189	70	100M	*	0	0	AGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000476	0	gi|9632547|ref|NC_002077.1|	3080	60	54M1D46M	*	0	0	CAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000477	16	gi|9632547|ref|NC_002077.1|	4490	70	100M	*	0	0	CCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAAAAGACTTACGTCATCGGGTTACCCCTAGTGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000478	0	gi|9632547|ref|NC_002077.1|	1718	60	100M	*	0	0	ACAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGNAGCCAACAAAAGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000479	16	gi|9632547|ref|NC_002077.1|	1803	60	100M	*	0	0	GAGCCAACAAAAGACCCGCCCCCGATGACGCGGATAAAAGCGAGCCCAAGCGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGTAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000480	0	gi|9632547|ref|NC_002077.1|	2104	50	100M	*	0	0	ACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGTGCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000481	0	gi|9632547|ref|NC_002077.1|	3854	50	8M1I91M	*	0	0	AAAAGAGANGCGCCGGAGCTTCAAACACTGCATTGGACAATGTCATGATTACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGTCCACCGAAAGATT	IIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000482	16	gi|9632547|ref|NC_002077.1|	2797	60	100M	*	0	0	CAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGACGACGGAGTGGGTAATGCCTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000483	0	gi|9632547|ref|NC_002077.1|	4207	60	100M	*	0	0	TTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000484	16	gi|9632547|ref|NC_002077.1|	3576	60	100M	*	0	0	CAGTCCGGAAGTGCCCAAAACCAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000485	16	gi|9632547|ref|NC_002077.1|	2353	50	100M	*	0	0	GTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000486	0	gi|9632547|ref|NC_002077.1|	271	70	100M	*	0	0	ATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000487	16	gi|9632547|ref|NC_002077.1|	3158	50	100M	*	0	0	CAACTTCAAANTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCG	IIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000488	16	gi|9632547|ref|NC_002077.1|	533	60	100M	*	0	0	TGGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTNGTGGAGACCACGGGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000489	0	gi|9632547|ref|NC_002077.1|	1708	60	94M1I5M	*	0	0	TGGCAAGGTGACAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGGAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000490	0	gi|9632547|ref|NC_002077.1|	537	60	58M1I41M	*	0	0	GCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTCNCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000491	16	gi|9632547|ref|NC_002077.1|	435	60	100M	*	0	0	AATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000492	16	gi|9632547|ref|NC_002077.1|	1027	60	8M1D92M	*	0	0	GGTGGACCGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000493	0	gi|9632547|ref|NC_002077.1|	2768	70	100M	*	0	0	CCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000494	0	gi|9632547|ref|NC_002077.1|	4161	30	85M1I14M	*	0	0	ATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTNAGCTACAAAGTTTGCTTCATTCATCACCCAATACTACCACATTACAAGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000495	0	gi|9632547|ref|NC_002077.1|	1960	60	100M	*	0	0	TCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGNGACGAGAGACTGTTCAGAGTGCTTCCCCGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000496	16	gi|9632547|ref|NC_002077.1|	1396	60	52M1D48M	*	0	0	CGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTTCAATGATTGCGTCGACAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCCAAGGTCGTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000497	0	gi|9632547|ref|NC_002077.1|	823	60	100M	*	0	0	CGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGTGCAGCACCTGACCCACGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000498	0	gi|9632547|ref|NC_002077.1|	4224	60	100M	*	0	0	GCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000499	0	gi|9632547|ref|NC_002077.1|	447	70	100M	*	0	0	CCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGTGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000500	0	gi|9632547|ref|NC_002077.1|	3888	70	100M	*	0	0	GACAATGTCATGATTACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000501	0	gi|9632547|ref|NC_002077.1|	3012	30	5M4I91M	*	0	0	TCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTTCAACAGATTCCACTGCCACTTTTCACCACGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000502	0	gi|9632547|ref|NC_002077.1|	4262	40	49M1I50M	*	0	0	TGTGGAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTTGAATGCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCAAACGTTGATTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000503	16	gi|9632547|ref|NC_002077.1|	2299	60	100M	*	0	0	AACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000504	0	gi|9632547|ref|NC_002077.1|	1403	50	100M	*	0	0	GTCAACTGGACCAATGAGAACTTTCCTTCCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCCAAGGTCGTGGAGTCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000505	16	gi|9632547|ref|NC_002077.1|	2589	70	100M	*	0	0	AAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000506	0	gi|9632547|ref|NC_002077.1|	934	70	100M	*	0	0	GGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000507	16	gi|9632547|ref|NC_002077.1|	2896	70	100M	*	0	0	CAGGAAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000508	16	gi|9632547|ref|NC_002077.1|	1217	60	100M	*	0	0	ACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCAGAACAGGTTCGGGAAGCGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000509	16	gi|9632547|ref|NC_002077.1|	2154	50	50M1D50M	*	0	0	CGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAAAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAAATTGGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000510	16	gi|9632547|ref|NC_002077.1|	947	60	100M	*	0	0	GAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGTTGGTGGACCGGGGCATCACCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000511	16	gi|9632547|ref|NC_002077.1|	334	70	100M	*	0	0	CATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000512	16	gi|9632547|ref|NC_002077.1|	2919	60	100M	*	0	0	ACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000513	0	gi|9632547|ref|NC_002077.1|	2261	70	100M	*	0	0	CAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000514	16	gi|9632547|ref|NC_002077.1|	2972	30	45M4I51M	*	0	0	CACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000515	16	gi|9632547|ref|NC_002077.1|	1547	50	100M	*	0	0	TGCAAGTCGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGATCACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000516	0	gi|9632547|ref|NC_002077.1|	710	70	100M	*	0	0	CCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000517	16	gi|9632547|ref|NC_002077.1|	1186	70	100M	*	0	0	GGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000518	0	gi|9632547|ref|NC_002077.1|	3711	60	100M	*	0	0	TACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000519	16	gi|9632547|ref|NC_002077.1|	18	3	100M	*	0	0	GCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTTTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGACGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:2	X1:i:0	XT:A:R	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4611,4711,-,2;
-adeno-reads100.fasta.000000520	0	gi|9632547|ref|NC_002077.1|	2092	50	100M	*	0	0	GACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAATGTGGACCTGGATGACTGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000521	0	gi|9632547|ref|NC_002077.1|	3104	50	100M	*	0	0	ACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTAAAGGAGGTCACGACGAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000522	16	gi|9632547|ref|NC_002077.1|	1919	70	100M	*	0	0	GACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000523	0	gi|9632547|ref|NC_002077.1|	2758	60	92M1I7M	*	0	0	CAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCCAATGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000524	0	gi|9632547|ref|NC_002077.1|	623	50	100M	*	0	0	ACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCCAGGCGACCCTGCCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000525	16	gi|9632547|ref|NC_002077.1|	3457	70	100M	*	0	0	TCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000526	0	gi|9632547|ref|NC_002077.1|	3928	60	100M	*	0	0	CTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAGCACAGACCCTGCGACCGGAGAGGTGCATGCTATGGGAGCATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000527	16	gi|9632547|ref|NC_002077.1|	909	70	100M	*	0	0	ACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000528	0	gi|9632547|ref|NC_002077.1|	2343	40	21M1D79M	*	0	0	GACGGCCGGGGTCTGGTGCTTCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000529	16	gi|9632547|ref|NC_002077.1|	2295	60	100M	*	0	0	TTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000530	0	gi|9632547|ref|NC_002077.1|	2083	40	100M	*	0	0	CAGAAAGAGGACGTATCGGAAACTCTGTGCCAATCATCATCTGGTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000531	0	gi|9632547|ref|NC_002077.1|	1197	60	100M	*	0	0	CTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTCCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000532	0	gi|9632547|ref|NC_002077.1|	951	60	100M	*	0	0	ATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCNGGGCATCACCTCCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000533	16	gi|9632547|ref|NC_002077.1|	628	70	100M	*	0	0	GGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000534	0	gi|9632547|ref|NC_002077.1|	568	60	100M	*	0	0	CTTTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGGGTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000535	16	gi|9632547|ref|NC_002077.1|	1564	60	100M	*	0	0	GATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000536	16	gi|9632547|ref|NC_002077.1|	3253	60	61M1D39M	*	0	0	TCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000537	0	gi|9632547|ref|NC_002077.1|	47	70	100M	*	0	0	GACCAAAGGTCCGCAGACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000538	0	gi|9632547|ref|NC_002077.1|	1003	60	83M1I16M	*	0	0	CTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACAGTCTCCTTCAACGCCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000539	0	gi|9632547|ref|NC_002077.1|	866	50	100M	*	0	0	GCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCAACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTAAACCCCAATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000540	0	gi|9632547|ref|NC_002077.1|	2621	30	31M1I68M	*	0	0	GGAAGGCGCTAAGACGGCTCCTGGAAAGAAANCGTCCGGAAGAGCAGTCGCCACAAGAGCCAGACTCCNGCTCGGGCATCGGCAAGACAGGCCAGCAGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000541	0	gi|9632547|ref|NC_002077.1|	611	60	100M	*	0	0	ATTCTGGTGGAGACGACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000542	0	gi|9632547|ref|NC_002077.1|	846	70	100M	*	0	0	ACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000543	0	gi|9632547|ref|NC_002077.1|	2499	70	100M	*	0	0	TATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000544	16	gi|9632547|ref|NC_002077.1|	1607	60	100M	*	0	0	TGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000545	16	gi|9632547|ref|NC_002077.1|	1381	40	3M1I96M	*	0	0	CCCACGTGCCCTTCTACGGCNGCGTCAACTGGACCAATGAGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGAT	IIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000546	0	gi|9632547|ref|NC_002077.1|	329	60	100M	*	0	0	GCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGNGTGGCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000547	0	gi|9632547|ref|NC_002077.1|	252	70	100M	*	0	0	CCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000548	0	gi|9632547|ref|NC_002077.1|	2380	30	100M	*	0	0	TAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTAAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAACCGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000549	16	gi|9632547|ref|NC_002077.1|	2340	30	83M1I16M	*	0	0	GACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACNCAGGCGGACGCAGCGTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000550	0	gi|9632547|ref|NC_002077.1|	3237	60	100M	*	0	0	AGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000551	0	gi|9632547|ref|NC_002077.1|	1552	50	100M	*	0	0	GTCGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACNTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000552	0	gi|9632547|ref|NC_002077.1|	2106	50	82M1D18M	*	0	0	TCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGATGTGTTTCTGAGCAATAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000553	0	gi|9632547|ref|NC_002077.1|	2716	60	100M	*	0	0	AGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGGCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000554	0	gi|9632547|ref|NC_002077.1|	4347	60	100M	*	0	0	GCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGCCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000555	0	gi|9632547|ref|NC_002077.1|	1020	70	100M	*	0	0	GGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000556	0	gi|9632547|ref|NC_002077.1|	120	70	100M	*	0	0	GGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCTGACGTAAATTACGTCATAGGGGAGTGGTCCTGTATTAGCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
+adeno-reads100.fasta.000000221	0	gi|9632547|ref|NC_002077.1|	33	60	100M	*	0	0	CGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGAGGGAGTGGCCAACTCCATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000222	16	gi|9632547|ref|NC_002077.1|	2282	60	100M	*	0	0	CGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000223	16	gi|9632547|ref|NC_002077.1|	3682	60	70M1D30M	*	0	0	AGCGCGTTTCTAAAACAAAAACAGACAACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACTCAATGGGCGTGAATCCATCATCAACCCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000224	16	gi|9632547|ref|NC_002077.1|	472	70	100M	*	0	0	TCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000225	16	gi|9632547|ref|NC_002077.1|	739	70	100M	*	0	0	CAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000226	0	gi|9632547|ref|NC_002077.1|	20	3	100M	*	0	0	GCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCACGCAGAGAGGGAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:2	X1:i:0	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4613,4713,+,1;
+adeno-reads100.fasta.000000227	16	gi|9632547|ref|NC_002077.1|	584	70	100M	*	0	0	AAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000228	16	gi|9632547|ref|NC_002077.1|	2130	60	100M	*	0	0	GGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000229	0	gi|9632547|ref|NC_002077.1|	741	70	100M	*	0	0	AGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000230	0	gi|9632547|ref|NC_002077.1|	2585	70	100M	*	0	0	CAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000231	0	gi|9632547|ref|NC_002077.1|	2118	60	100M	*	0	0	ATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000232	0	gi|9632547|ref|NC_002077.1|	1410	50	100M	*	0	0	GGACCAATGAGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGTCAAGGTCGTTGAGTCCGCCAAGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000233	0	gi|9632547|ref|NC_002077.1|	1811	60	15M1D85M	*	0	0	AAAAGACCCGCCCCCATGACGCGGATAAAAGCGAGCCCAAGCGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000234	16	gi|9632547|ref|NC_002077.1|	1853	70	100M	*	0	0	CGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000235	0	gi|9632547|ref|NC_002077.1|	1695	60	95M1I4M	*	0	0	TGGAGCATGACTTTGGCAAGGTGACAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACAGTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000236	0	gi|9632547|ref|NC_002077.1|	2007	40	100M	*	0	0	TCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAACGAGGNCGTATCGGANACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIII!III	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000237	0	gi|9632547|ref|NC_002077.1|	2436	60	100M	*	0	0	TCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000238	16	gi|9632547|ref|NC_002077.1|	1342	20	39M3D61M	*	0	0	CACCACGGGCAAGACCAACATCGCGGAAGCGATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTNCCCTTCAATGATTGCGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000239	16	gi|9632547|ref|NC_002077.1|	444	60	100M	*	0	0	TGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGAAGCGCGACTTCCTGGTCCAATGGCGCCGCGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000240	16	gi|9632547|ref|NC_002077.1|	3468	60	100M	*	0	0	TTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTNTATTACCTGAACAGAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000241	16	gi|9632547|ref|NC_002077.1|	3043	70	100M	*	0	0	TCGGCTACAGCACCCCCTGGGGGTATTTTGATTTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000242	16	gi|9632547|ref|NC_002077.1|	2421	50	84M1I15M	*	0	0	GCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACNCACGCCGACGCCGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000243	16	gi|9632547|ref|NC_002077.1|	2031	60	100M	*	0	0	CGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGTACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000244	0	gi|9632547|ref|NC_002077.1|	4281	70	100M	*	0	0	CTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000245	0	gi|9632547|ref|NC_002077.1|	4207	60	100M	*	0	0	TTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000246	0	gi|9632547|ref|NC_002077.1|	2574	60	100M	*	0	0	GTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTTGCCAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000247	0	gi|9632547|ref|NC_002077.1|	2933	20	84M4I12M	*	0	0	CAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCCCCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000248	16	gi|9632547|ref|NC_002077.1|	1170	70	100M	*	0	0	CCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000249	0	gi|9632547|ref|NC_002077.1|	4296	60	100M	*	0	0	AGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTAGACTGAGCCTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000250	0	gi|9632547|ref|NC_002077.1|	1932	70	100M	*	0	0	ACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000251	16	gi|9632547|ref|NC_002077.1|	2801	60	100M	*	0	0	AACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGACGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000252	0	gi|9632547|ref|NC_002077.1|	2904	70	100M	*	0	0	TGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000253	0	gi|9632547|ref|NC_002077.1|	2609	60	100M	*	0	0	CGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000254	16	gi|9632547|ref|NC_002077.1|	3191	40	64M1D36M	*	0	0	GGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCATGCCTTCCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000255	0	gi|9632547|ref|NC_002077.1|	4087	70	100M	*	0	0	TTCCTCACACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000256	16	gi|9632547|ref|NC_002077.1|	1328	30	32M1D20M3D48M	*	0	0	CTGTTTGGGCCGGCCACCACGGGCAAGACCAAATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000257	16	gi|9632547|ref|NC_002077.1|	1056	70	100M	*	0	0	AGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000258	0	gi|9632547|ref|NC_002077.1|	2040	60	100M	*	0	0	GTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000259	16	gi|9632547|ref|NC_002077.1|	1590	60	100M	*	0	0	CCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000260	16	gi|9632547|ref|NC_002077.1|	3439	70	100M	*	0	0	CGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000261	0	gi|9632547|ref|NC_002077.1|	972	70	100M	*	0	0	CGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000262	16	gi|9632547|ref|NC_002077.1|	4077	50	100M	*	0	0	TGGGCCAAACTTCCTCACACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCACCAAAAACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000263	0	gi|9632547|ref|NC_002077.1|	2982	20	35M4I13M1I47M	*	0	0	AACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000264	16	gi|9632547|ref|NC_002077.1|	204	70	100M	*	0	0	GGTCCTGTATTAGCTGTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000265	0	gi|9632547|ref|NC_002077.1|	3466	70	100M	*	0	0	CCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000266	16	gi|9632547|ref|NC_002077.1|	3804	70	100M	*	0	0	AAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGTGTCATGATTTTTGGAAAAGAGAGCGCCGGAGCTTCAAACACTGCATTGGACAATGTCATGATTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000267	0	gi|9632547|ref|NC_002077.1|	2937	30	80M4I16M	*	0	0	GTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000268	16	gi|9632547|ref|NC_002077.1|	305	70	100M	*	0	0	TTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000269	0	gi|9632547|ref|NC_002077.1|	1966	70	100M	*	0	0	GCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000270	16	gi|9632547|ref|NC_002077.1|	3413	50	58M1I41M	*	0	0	ATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGGAGGAAGTGCCTTTCCACAGCAGCCACGCGCACAGCCAGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000271	0	gi|9632547|ref|NC_002077.1|	2640	50	100M	*	0	0	CCTGGAAAGAAACGTCCGGTAGAGCAGTCGCNACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000272	16	gi|9632547|ref|NC_002077.1|	2150	70	100M	*	0	0	TGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000273	16	gi|9632547|ref|NC_002077.1|	3775	60	79M1D21M	*	0	0	TCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGTGTCATGATTTTTGGAAAGAGAGCGCCGGAGCTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000274	0	gi|9632547|ref|NC_002077.1|	1703	60	100M	*	0	0	GACTTTGGCAAGGTGACAAAGCAGGAAGTCAAAGAGTTCTTCCTCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000275	0	gi|9632547|ref|NC_002077.1|	716	70	100M	*	0	0	CTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000276	16	gi|9632547|ref|NC_002077.1|	2223	70	100M	*	0	0	ATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000277	0	gi|9632547|ref|NC_002077.1|	3084	60	100M	*	0	0	TTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACAGCCAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000278	0	gi|9632547|ref|NC_002077.1|	2384	50	100M	*	0	0	ACCCTTCAGCGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000279	0	gi|9632547|ref|NC_002077.1|	1973	50	91M1I8M	*	0	0	CCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGNGCTTCCCCGGCGTGTCCAGAATCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000280	0	gi|9632547|ref|NC_002077.1|	2659	60	100M	*	0	0	TAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000281	0	gi|9632547|ref|NC_002077.1|	443	50	62M1D38M	*	0	0	CTGCCCCCGGATTCTGACGTGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000282	0	gi|9632547|ref|NC_002077.1|	1141	60	100M	*	0	0	TGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCANCCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000283	0	gi|9632547|ref|NC_002077.1|	2482	70	100M	*	0	0	ACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000284	16	gi|9632547|ref|NC_002077.1|	1902	70	100M	*	0	0	CTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000285	0	gi|9632547|ref|NC_002077.1|	3473	60	100M	*	0	0	GGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGGATTACCTGAACAGAACTCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000286	16	gi|9632547|ref|NC_002077.1|	2483	70	100M	*	0	0	CAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000287	0	gi|9632547|ref|NC_002077.1|	1077	60	100M	*	0	0	CCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000288	0	gi|9632547|ref|NC_002077.1|	554	60	100M	*	0	0	CCGGAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCGACCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000289	16	gi|9632547|ref|NC_002077.1|	884	70	100M	*	0	0	GAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000290	16	gi|9632547|ref|NC_002077.1|	2662	60	100M	*	0	0	AGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000291	16	gi|9632547|ref|NC_002077.1|	4114	60	100M	*	0	0	CGTCTCCNCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGC	IIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000292	16	gi|9632547|ref|NC_002077.1|	2740	60	83M1I16M	*	0	0	TTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTAACTACAATGGCTTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000293	0	gi|9632547|ref|NC_002077.1|	3130	60	100M	*	0	0	ACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATGGCTAATAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000294	16	gi|9632547|ref|NC_002077.1|	426	50	100M	*	0	0	CCGAGAAGGAATGGGATCTGCGCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGACTTCCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000295	0	gi|9632547|ref|NC_002077.1|	2540	40	69M1I30M	*	0	0	AGATACGTCTCTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAAAAGCGGGTTCTCGAACCTCTGCGGTCTGGTTGAGGAAGGCGCTAAGACGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000296	16	gi|9632547|ref|NC_002077.1|	4086	60	100M	*	0	0	CTTCCTCACACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000297	16	gi|9632547|ref|NC_002077.1|	4311	50	45M1D55M	*	0	0	CCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGGCANCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!III	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000298	0	gi|9632547|ref|NC_002077.1|	3334	60	100M	*	0	0	TCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCAGGAATATTTCCCTTCTCAGATGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000299	0	gi|9632547|ref|NC_002077.1|	3904	60	100M	*	0	0	CNGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAGCACAGACCCTGCGACCGG	I!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000300	0	gi|9632547|ref|NC_002077.1|	731	50	95M1I4M	*	0	0	GCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGATGNTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!II	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000301	16	gi|9632547|ref|NC_002077.1|	3848	60	100M	*	0	0	TTTTGGAAAAGAGAGCGCCGGAGCTTCAAACACTGCATTGGACAATGTCATGATTACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCACCAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000302	16	gi|9632547|ref|NC_002077.1|	479	70	100M	*	0	0	GAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTGTTCAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000303	0	gi|9632547|ref|NC_002077.1|	925	70	100M	*	0	0	CCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000304	16	gi|9632547|ref|NC_002077.1|	3302	50	64M1D36M	*	0	0	GGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATATGGCTACCTGACGCTCACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000305	16	gi|9632547|ref|NC_002077.1|	2456	70	100M	*	0	0	CTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000306	16	gi|9632547|ref|NC_002077.1|	459	70	100M	*	0	0	ACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000307	16	gi|9632547|ref|NC_002077.1|	1863	70	100M	*	0	0	CCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000308	16	gi|9632547|ref|NC_002077.1|	2426	60	100M	*	0	0	GGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000309	0	gi|9632547|ref|NC_002077.1|	2586	70	100M	*	0	0	AAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000310	0	gi|9632547|ref|NC_002077.1|	3015	20	54M1I45M	*	0	0	TGGGGGGCCAGCAACGACAACCACTACTTCGGCTACNGCACCCCCTGGGGGTATCCTTGATTTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000311	0	gi|9632547|ref|NC_002077.1|	4161	60	100M	*	0	0	ATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000312	16	gi|9632547|ref|NC_002077.1|	3148	60	100M	*	0	0	CCAAGAGACTCAACTTCNAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCA	IIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000313	16	gi|9632547|ref|NC_002077.1|	2166	50	100M	*	0	0	TGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCAAGATTGGCTCGTGGACAACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000314	0	gi|9632547|ref|NC_002077.1|	1036	70	100M	*	0	0	GGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000315	16	gi|9632547|ref|NC_002077.1|	3320	60	100M	*	0	0	CCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATGTTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000316	0	gi|9632547|ref|NC_002077.1|	60	70	100M	*	0	0	CAGACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000317	16	gi|9632547|ref|NC_002077.1|	962	70	100M	*	0	0	AATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000318	16	gi|9632547|ref|NC_002077.1|	2057	60	100M	*	0	0	GGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000319	0	gi|9632547|ref|NC_002077.1|	1152	50	100M	*	0	0	TCATGGCCCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTATCGCATCCTGGAGCTGAACGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000320	0	gi|9632547|ref|NC_002077.1|	1091	70	100M	*	0	0	TTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000321	0	gi|9632547|ref|NC_002077.1|	2232	50	52M1D10M1I37M	*	0	0	GATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGGTGGTGGGACNTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000322	16	gi|9632547|ref|NC_002077.1|	1337	20	17M1D19M1D6M3D58M	*	0	0	CCGGCCACCACGGGCAAACCAACATCGCGGAAGCCACGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTTCAATGATTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000323	16	gi|9632547|ref|NC_002077.1|	488	60	100M	*	0	0	CCCCTGACCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTNTTCAGTTCGAGAAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000324	16	gi|9632547|ref|NC_002077.1|	4548	60	100M	*	0	0	TTCGCGATAAAACACTTACGTCATCGGGTTACCCCTAGTGATGGAGTTGCCCACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000325	16	gi|9632547|ref|NC_002077.1|	3124	60	100M	*	0	0	TCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000326	16	gi|9632547|ref|NC_002077.1|	1332	40	49M3D51M	*	0	0	TTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTTCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000327	16	gi|9632547|ref|NC_002077.1|	3464	60	54M1D46M	*	0	0	CACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000328	16	gi|9632547|ref|NC_002077.1|	2290	50	60M1D40M	*	0	0	GGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000329	0	gi|9632547|ref|NC_002077.1|	3426	60	100M	*	0	0	CAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCGGAGCCTGGACCGGCTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000330	0	gi|9632547|ref|NC_002077.1|	626	70	100M	*	0	0	ACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000331	0	gi|9632547|ref|NC_002077.1|	4300	70	100M	*	0	0	AGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000332	0	gi|9632547|ref|NC_002077.1|	163	70	100M	*	0	0	CTGCCGCGTCAGCGCTGACGTAAATTACGTCATAGGGGAGTGGTCCTGTATTAGCTGTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000333	16	gi|9632547|ref|NC_002077.1|	3170	50	100M	*	0	0	CTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCCCGGTTCAAGCCTTCTCGGACTCGGAGTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000334	0	gi|9632547|ref|NC_002077.1|	2928	30	89M4I7M	*	0	0	GGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000335	0	gi|9632547|ref|NC_002077.1|	1052	70	100M	*	0	0	AAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000336	16	gi|9632547|ref|NC_002077.1|	4422	60	100M	*	0	0	CGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTAGCGGTTACCATGGTTATAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000337	0	gi|9632547|ref|NC_002077.1|	4189	60	100M	*	0	0	CGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000338	16	gi|9632547|ref|NC_002077.1|	3330	60	66M1I33M	*	0	0	GTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCACTCCTTTTACTGCCTGGAATATTTCCCTTCTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000339	16	gi|9632547|ref|NC_002077.1|	4423	70	100M	*	0	0	GTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000340	16	gi|9632547|ref|NC_002077.1|	1276	70	100M	*	0	0	CGTCTTTCTCGGCTGGGCCCAGAAAAGGTTCGGGAAGCGCAACACCATCTGGCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000341	0	gi|9632547|ref|NC_002077.1|	173	60	100M	*	0	0	AGCGCTGACGTAAATTACGTCATAGGGGAGTGGTCCTGTATTAGCTGTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGTCATTTAGGGTAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000342	16	gi|9632547|ref|NC_002077.1|	4063	50	96M1D4M	*	0	0	TGCAGGGTCCCATTTGGGCCAAACTTCCTCACACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCGATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000343	0	gi|9632547|ref|NC_002077.1|	3866	70	100M	*	0	0	CGGAGCTTCAAACACTGCATTGGACAATGTCATGATTACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000344	0	gi|9632547|ref|NC_002077.1|	4365	70	100M	*	0	0	GTGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000345	16	gi|9632547|ref|NC_002077.1|	2087	50	100M	*	0	0	AAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCCACGTGGACCTGGATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000346	16	gi|9632547|ref|NC_002077.1|	1343	30	38M3D62M	*	0	0	ACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGGACTTTCCCTTCAATGATTGCGTCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000347	0	gi|9632547|ref|NC_002077.1|	1089	70	100M	*	0	0	CCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000348	16	gi|9632547|ref|NC_002077.1|	2130	50	51M1D49M	*	0	0	GGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000349	0	gi|9632547|ref|NC_002077.1|	3580	50	24M1I75M	*	0	0	CCGGAAGTGCCCAAAACAAGGACTNTGCTGTATAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGC	IIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000350	0	gi|9632547|ref|NC_002077.1|	1060	60	100M	*	0	0	GATCCAGGAGGACCAGGCCTCGTACATCTGCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000351	0	gi|9632547|ref|NC_002077.1|	1829	60	50M1I49M	*	0	0	GACGCGGATAAAAGCGAGCCCAAGCGGGCCTGCCCCTCAGTCGCGGATCCNATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000352	0	gi|9632547|ref|NC_002077.1|	4332	50	37M1D23M1I39M	*	0	0	AATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGCAACAATGGACTTTATACTGAGCACTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000353	0	gi|9632547|ref|NC_002077.1|	4126	60	100M	*	0	0	TGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGNGTTTTCAGCTACAAAGTTTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000354	16	gi|9632547|ref|NC_002077.1|	3342	60	100M	*	0	0	CCGCAATACGGCTACCTGACGCTCAACAATTGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000355	0	gi|9632547|ref|NC_002077.1|	2117	50	100M	*	0	0	CATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGNCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000356	0	gi|9632547|ref|NC_002077.1|	916	60	33M1I66M	*	0	0	CCACGTCAGCCAGACCCAGGAGCAGAACAAGGACGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000357	16	gi|9632547|ref|NC_002077.1|	2199	60	100M	*	0	0	AGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGCGGGACTTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000358	16	gi|9632547|ref|NC_002077.1|	3843	70	100M	*	0	0	ATGATTTTTGGAAAAGAGAGCGCCGGAGCTTCAAACACTGCATTGGACAATGTCATGATTACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000359	16	gi|9632547|ref|NC_002077.1|	3790	50	100M	*	0	0	CTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGAGTCATGATTTTTGGAAAAGAGAGCGCCGGAGCTTCAAACACTGGATTGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000360	16	gi|9632547|ref|NC_002077.1|	1880	60	2M1D98M	*	0	0	TCACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000361	0	gi|9632547|ref|NC_002077.1|	1187	60	100M	*	0	0	GTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000362	0	gi|9632547|ref|NC_002077.1|	659	70	100M	*	0	0	CTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000363	16	gi|9632547|ref|NC_002077.1|	4447	60	60M1D40M	*	0	0	AATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000364	16	gi|9632547|ref|NC_002077.1|	2194	60	60M1I39M	*	0	0	TTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCNTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000365	0	gi|9632547|ref|NC_002077.1|	3426	70	100M	*	0	0	CAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000366	16	gi|9632547|ref|NC_002077.1|	1728	70	100M	*	0	0	AAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGAGCCAACAAAAGACCCGCCCCCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000367	0	gi|9632547|ref|NC_002077.1|	4064	50	100M	*	0	0	GCAGGGTCCCATTTGGGCCAAACTTCCTCACACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCNTTGGACTCAAGAACCCGCCTCCTCAGATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000368	16	gi|9632547|ref|NC_002077.1|	2257	60	100M	*	0	0	AGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000369	16	gi|9632547|ref|NC_002077.1|	828	70	100M	*	0	0	TGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000370	0	gi|9632547|ref|NC_002077.1|	647	70	100M	*	0	0	CTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000371	16	gi|9632547|ref|NC_002077.1|	305	60	100M	*	0	0	TTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCGGGACGAGCACCTGCCGGGCATTTCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000372	0	gi|9632547|ref|NC_002077.1|	4280	60	94M1I5M	*	0	0	GCTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACNAATGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000373	0	gi|9632547|ref|NC_002077.1|	738	60	100M	*	0	0	CCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGACCGAGCTGCAGTGGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000374	16	gi|9632547|ref|NC_002077.1|	2019	70	100M	*	0	0	TCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000375	0	gi|9632547|ref|NC_002077.1|	875	70	100M	*	0	0	AACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000376	0	gi|9632547|ref|NC_002077.1|	436	50	100M	*	0	0	ATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGAGTTCCTGGTCCAATGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000377	0	gi|9632547|ref|NC_002077.1|	4283	60	100M	*	0	0	GCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGTACTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000378	0	gi|9632547|ref|NC_002077.1|	2402	50	100M	*	0	0	CAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGGCAATCCGTACCTGCGGTAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000379	16	gi|9632547|ref|NC_002077.1|	4266	50	100M	*	0	0	GAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTGGATTCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATNTTACTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000380	0	gi|9632547|ref|NC_002077.1|	2145	70	100M	*	0	0	TTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000381	0	gi|9632547|ref|NC_002077.1|	2638	50	65M1D35M	*	0	0	CTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000382	16	gi|9632547|ref|NC_002077.1|	4514	70	100M	*	0	0	GGTTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAAAAGACTTACGTCATCGGGTTACCCCTAGTGATGGAGTTGCCCACTCCCTCTCTGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000383	0	gi|9632547|ref|NC_002077.1|	579	60	100M	*	0	0	TCGNGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAA	III!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000384	16	gi|9632547|ref|NC_002077.1|	1046	60	84M1I15M	*	0	0	TCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCAGCTCTGGACAATGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000385	16	gi|9632547|ref|NC_002077.1|	4150	60	100M	*	0	0	CGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACCCCAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000386	0	gi|9632547|ref|NC_002077.1|	3419	60	100M	*	0	0	CCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGCAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000387	16	gi|9632547|ref|NC_002077.1|	2198	70	100M	*	0	0	GAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000388	0	gi|9632547|ref|NC_002077.1|	689	50	97M1D3M	*	0	0	ACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAAGGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000389	16	gi|9632547|ref|NC_002077.1|	2944	30	73M4I23M	*	0	0	CCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000390	0	gi|9632547|ref|NC_002077.1|	2121	60	100M	*	0	0	ATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000391	0	gi|9632547|ref|NC_002077.1|	2445	70	100M	*	0	0	CACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000392	0	gi|9632547|ref|NC_002077.1|	1024	70	100M	*	0	0	GCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000393	16	gi|9632547|ref|NC_002077.1|	1951	40	26M1I28M1D45M	*	0	0	GGGCATGCTTCAGATGCTGTTTCCCTCGCAAGACATGCGAGAGAATGAATCAGAATTCAAAATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000394	16	gi|9632547|ref|NC_002077.1|	20	3	100M	*	0	0	GCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTTTGCCGGCCCCACCGAGCGAGCGGGCGCGCAGAGAGGGAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:2	X1:i:0	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4613,4713,-,2;
+adeno-reads100.fasta.000000395	16	gi|9632547|ref|NC_002077.1|	3095	70	100M	*	0	0	CTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000396	16	gi|9632547|ref|NC_002077.1|	1554	60	100M	*	0	0	CGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000397	0	gi|9632547|ref|NC_002077.1|	4256	60	100M	*	0	0	AGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAACATCTGCCAACGTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000398	0	gi|9632547|ref|NC_002077.1|	648	60	33M1I66M	*	0	0	TGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCATGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000399	16	gi|9632547|ref|NC_002077.1|	3767	70	100M	*	0	0	ATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGTGTCATGATTTTTGGAAAAGAGAGCGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000400	16	gi|9632547|ref|NC_002077.1|	2913	50	100M	*	0	0	GATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTAGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCANTGCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000401	0	gi|9632547|ref|NC_002077.1|	76	60	1M1I98M	*	0	0	GCCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000402	16	gi|9632547|ref|NC_002077.1|	1257	50	50M1D44M1D6M	*	0	0	AACCTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCAGAAAAGGTTCGGAAGCGCAACACCATCTGGCTGTTTGGGCCGGCCACCACGGGCAGACCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000403	16	gi|9632547|ref|NC_002077.1|	4433	70	100M	*	0	0	ATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000404	16	gi|9632547|ref|NC_002077.1|	1570	60	100M	*	0	0	CCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000405	0	gi|9632547|ref|NC_002077.1|	4149	70	100M	*	0	0	CCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000406	0	gi|9632547|ref|NC_002077.1|	1675	70	100M	*	0	0	ATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000407	0	gi|9632547|ref|NC_002077.1|	1836	50	100M	*	0	0	ATAAAAGCGAGCCCAAGCGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCACCGGTGGACTTTGCCNACAGGTACCAAAACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000408	0	gi|9632547|ref|NC_002077.1|	4349	70	100M	*	0	0	CAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000409	16	gi|9632547|ref|NC_002077.1|	893	70	100M	*	0	0	CGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000410	16	gi|9632547|ref|NC_002077.1|	1142	50	10M1D90M	*	0	0	GCCGGCAAGACATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCGTCCTGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000411	0	gi|9632547|ref|NC_002077.1|	2866	50	100M	*	0	0	ACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTACGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000412	0	gi|9632547|ref|NC_002077.1|	767	50	23M1I16M1I59M	*	0	0	AACAAGGTGGTGGACGAGTGCTATCATCCCCAACTACCTCACTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000413	0	gi|9632547|ref|NC_002077.1|	1551	60	100M	*	0	0	AGTCGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000414	0	gi|9632547|ref|NC_002077.1|	766	50	100M	*	0	0	GAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGTCGTGGACTAACATGGAGGAGTATATAAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000415	16	gi|9632547|ref|NC_002077.1|	524	70	100M	*	0	0	CTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000416	0	gi|9632547|ref|NC_002077.1|	2180	60	100M	*	0	0	CTGAATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000417	16	gi|9632547|ref|NC_002077.1|	1985	50	100M	*	0	0	TGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGATTGTTCAGAGTGCTTCCCCGGCGGGTCAGAATCTCAACCGGTCGTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000418	16	gi|9632547|ref|NC_002077.1|	3451	70	100M	*	0	0	TTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000419	0	gi|9632547|ref|NC_002077.1|	4232	60	100M	*	0	0	CATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000420	0	gi|9632547|ref|NC_002077.1|	4116	50	11M1I88M	*	0	0	TCTCCTCTTATGGGGCCGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000421	0	gi|9632547|ref|NC_002077.1|	851	60	100M	*	0	0	GAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACNAGGAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000422	0	gi|9632547|ref|NC_002077.1|	2406	60	100M	*	0	0	GGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000423	0	gi|9632547|ref|NC_002077.1|	3430	60	100M	*	0	0	TGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTNTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000424	16	gi|9632547|ref|NC_002077.1|	279	70	100M	*	0	0	CCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000425	0	gi|9632547|ref|NC_002077.1|	1944	60	100M	*	0	0	GTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGTGAGACTGTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000426	0	gi|9632547|ref|NC_002077.1|	3696	70	100M	*	0	0	ACAAAAACAGACAACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000427	0	gi|9632547|ref|NC_002077.1|	2680	60	100M	*	0	0	CAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000428	16	gi|9632547|ref|NC_002077.1|	3460	70	100M	*	0	0	GCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000429	16	gi|9632547|ref|NC_002077.1|	3801	60	89M1D11M	*	0	0	CACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGTGTCATGATTTTTGGAAAAGAGAGCGCCGGAGCTTCAAACACTGCATTGGAAATGTCATGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000430	16	gi|9632547|ref|NC_002077.1|	1962	70	100M	*	0	0	AGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000431	0	gi|9632547|ref|NC_002077.1|	3003	30	14M4I82M	*	0	0	TCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTTCAACAGATTCCACTGCCACTTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000432	0	gi|9632547|ref|NC_002077.1|	3708	70	100M	*	0	0	AACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000433	16	gi|9632547|ref|NC_002077.1|	844	60	100M	*	0	0	TAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCACAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000434	16	gi|9632547|ref|NC_002077.1|	1545	60	100M	*	0	0	AGTGCAAGTCGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000435	16	gi|9632547|ref|NC_002077.1|	4096	70	100M	*	0	0	CAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000436	0	gi|9632547|ref|NC_002077.1|	4099	70	100M	*	0	0	ATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000437	0	gi|9632547|ref|NC_002077.1|	2186	70	100M	*	0	0	GACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000438	16	gi|9632547|ref|NC_002077.1|	2099	50	100M	*	0	0	CGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000439	16	gi|9632547|ref|NC_002077.1|	3142	70	100M	*	0	0	TCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000440	0	gi|9632547|ref|NC_002077.1|	2362	50	100M	*	0	0	TTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000441	16	gi|9632547|ref|NC_002077.1|	3610	40	11M1I88M	*	0	0	TTAGCCGTGGGTTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACGTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAANACAGACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000442	16	gi|9632547|ref|NC_002077.1|	1391	70	100M	*	0	0	TTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCCAAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000443	0	gi|9632547|ref|NC_002077.1|	1715	50	100M	*	0	0	GTGACAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGAGCCAACNAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!III	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000444	16	gi|9632547|ref|NC_002077.1|	3610	70	100M	*	0	0	TTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAAACAGACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000445	0	gi|9632547|ref|NC_002077.1|	2633	40	37M1D63M	*	0	0	GACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCTCGCTAAAAAGAGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000446	16	gi|9632547|ref|NC_002077.1|	3732	60	77M1I22M	*	0	0	ACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGATCGACGAAGACAAGTTCTTTCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000447	0	gi|9632547|ref|NC_002077.1|	2893	70	100M	*	0	0	CCTCAGGAAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000448	16	gi|9632547|ref|NC_002077.1|	2287	50	100M	*	0	0	GGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGCCTGGTGCTTCCTGGCTACAAGTACCTAGGACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000449	0	gi|9632547|ref|NC_002077.1|	3538	70	100M	*	0	0	TCGACCAATACCTGTATTACCTGAACAGAACTCAAAATCAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000450	16	gi|9632547|ref|NC_002077.1|	1027	60	100M	*	0	0	GGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCCGATCAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000451	16	gi|9632547|ref|NC_002077.1|	4589	60	100M	*	0	0	TGGAGTTGCCCACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTTTGCCGGCCCCACCGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000452	16	gi|9632547|ref|NC_002077.1|	3726	60	100M	*	0	0	ACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCAGCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000453	0	gi|9632547|ref|NC_002077.1|	2882	60	18M1D82M	*	0	0	AGTGGGTAATGCCTCAGGAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000454	16	gi|9632547|ref|NC_002077.1|	2930	30	87M4I9M	*	0	0	CGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000455	16	gi|9632547|ref|NC_002077.1|	4432	70	100M	*	0	0	AATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000456	16	gi|9632547|ref|NC_002077.1|	4516	70	100M	*	0	0	TTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAAAAGACTTACGTCATCGGGTTACCCCTAGTGATGGAGTTGCCCACTCCCTCTCTGCGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000457	0	gi|9632547|ref|NC_002077.1|	3628	70	100M	*	0	0	CTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAAACAGACAACAACAACAGCAATTTTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000458	16	gi|9632547|ref|NC_002077.1|	2234	50	22M1I77M	*	0	0	TGGTTATCTTCCAGATTGGCTCAGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAATCCAACCAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000459	16	gi|9632547|ref|NC_002077.1|	833	60	100M	*	0	0	TGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCAGCTGACCCACGTCAGCCAGACCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000460	16	gi|9632547|ref|NC_002077.1|	2871	60	100M	*	0	0	GGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000461	0	gi|9632547|ref|NC_002077.1|	2443	70	100M	*	0	0	AGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000462	0	gi|9632547|ref|NC_002077.1|	2045	50	100M	*	0	0	GAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCATCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000463	0	gi|9632547|ref|NC_002077.1|	3057	70	100M	*	0	0	CCCTGGGGGTATTTTGATTTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000464	0	gi|9632547|ref|NC_002077.1|	4096	70	100M	*	0	0	CAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000465	16	gi|9632547|ref|NC_002077.1|	1725	70	100M	*	0	0	AGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGAGCCAACAAAAGACCCGCCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000466	16	gi|9632547|ref|NC_002077.1|	1749	70	100M	*	0	0	GGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGAGCCAACAAAAGACCCGCCCCCGATGACGCGGATAAAAGCGAGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000467	0	gi|9632547|ref|NC_002077.1|	2867	70	100M	*	0	0	CGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000468	16	gi|9632547|ref|NC_002077.1|	3503	70	100M	*	0	0	CAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACAGAACTCAAAATCAGTCCGGAAGTGCCCAAAACAAGGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000469	16	gi|9632547|ref|NC_002077.1|	2402	50	100M	*	0	0	CAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGATCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000470	16	gi|9632547|ref|NC_002077.1|	2425	60	100M	*	0	0	CGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000471	0	gi|9632547|ref|NC_002077.1|	3293	70	100M	*	0	0	TGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000472	0	gi|9632547|ref|NC_002077.1|	458	70	100M	*	0	0	GACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000473	0	gi|9632547|ref|NC_002077.1|	3347	40	60M1D4M1D36M	*	0	0	ATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCTGGATATTTCCCTTCTCAGATGCTGAGAACGGGGAACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000474	0	gi|9632547|ref|NC_002077.1|	2328	60	100M	*	0	0	CAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000475	0	gi|9632547|ref|NC_002077.1|	1189	70	100M	*	0	0	AGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000476	0	gi|9632547|ref|NC_002077.1|	3080	60	54M1D46M	*	0	0	CAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000477	16	gi|9632547|ref|NC_002077.1|	4490	70	100M	*	0	0	CCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAAAAGACTTACGTCATCGGGTTACCCCTAGTGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000478	0	gi|9632547|ref|NC_002077.1|	1718	60	100M	*	0	0	ACAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGNAGCCAACAAAAGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000479	16	gi|9632547|ref|NC_002077.1|	1803	60	100M	*	0	0	GAGCCAACAAAAGACCCGCCCCCGATGACGCGGATAAAAGCGAGCCCAAGCGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGTAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000480	0	gi|9632547|ref|NC_002077.1|	2104	50	100M	*	0	0	ACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGTGCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000481	0	gi|9632547|ref|NC_002077.1|	3854	50	8M1I91M	*	0	0	AAAAGAGANGCGCCGGAGCTTCAAACACTGCATTGGACAATGTCATGATTACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGTCCACCGAAAGATT	IIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000482	16	gi|9632547|ref|NC_002077.1|	2797	60	100M	*	0	0	CAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGACGACGGAGTGGGTAATGCCTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000483	0	gi|9632547|ref|NC_002077.1|	4207	60	100M	*	0	0	TTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000484	16	gi|9632547|ref|NC_002077.1|	3576	60	100M	*	0	0	CAGTCCGGAAGTGCCCAAAACCAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000485	16	gi|9632547|ref|NC_002077.1|	2353	50	100M	*	0	0	GTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000486	0	gi|9632547|ref|NC_002077.1|	271	70	100M	*	0	0	ATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000487	16	gi|9632547|ref|NC_002077.1|	3158	50	100M	*	0	0	CAACTTCAAANTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCG	IIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000488	16	gi|9632547|ref|NC_002077.1|	533	60	100M	*	0	0	TGGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTNGTGGAGACCACGGGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000489	0	gi|9632547|ref|NC_002077.1|	1708	60	94M1I5M	*	0	0	TGGCAAGGTGACAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGGAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000490	0	gi|9632547|ref|NC_002077.1|	537	60	58M1I41M	*	0	0	GCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTCNCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000491	16	gi|9632547|ref|NC_002077.1|	435	60	100M	*	0	0	AATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000492	16	gi|9632547|ref|NC_002077.1|	1027	60	8M1D92M	*	0	0	GGTGGACCGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000493	0	gi|9632547|ref|NC_002077.1|	2768	70	100M	*	0	0	CCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000494	0	gi|9632547|ref|NC_002077.1|	4161	30	85M1I14M	*	0	0	ATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTNAGCTACAAAGTTTGCTTCATTCATCACCCAATACTACCACATTACAAGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000495	0	gi|9632547|ref|NC_002077.1|	1960	60	100M	*	0	0	TCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGNGACGAGAGACTGTTCAGAGTGCTTCCCCGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000496	16	gi|9632547|ref|NC_002077.1|	1396	60	52M1D48M	*	0	0	CGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTTCAATGATTGCGTCGACAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCCAAGGTCGTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000497	0	gi|9632547|ref|NC_002077.1|	823	60	100M	*	0	0	CGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGTGCAGCACCTGACCCACGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000498	0	gi|9632547|ref|NC_002077.1|	4224	60	100M	*	0	0	GCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000499	0	gi|9632547|ref|NC_002077.1|	447	70	100M	*	0	0	CCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGTGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000500	0	gi|9632547|ref|NC_002077.1|	3888	70	100M	*	0	0	GACAATGTCATGATTACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000501	0	gi|9632547|ref|NC_002077.1|	3012	30	5M4I91M	*	0	0	TCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTTCAACAGATTCCACTGCCACTTTTCACCACGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000502	0	gi|9632547|ref|NC_002077.1|	4262	40	49M1I50M	*	0	0	TGTGGAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTTGAATGCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCAAACGTTGATTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000503	16	gi|9632547|ref|NC_002077.1|	2299	60	100M	*	0	0	AACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000504	0	gi|9632547|ref|NC_002077.1|	1403	50	100M	*	0	0	GTCAACTGGACCAATGAGAACTTTCCTTCCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCCAAGGTCGTGGAGTCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000505	16	gi|9632547|ref|NC_002077.1|	2589	70	100M	*	0	0	AAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000506	0	gi|9632547|ref|NC_002077.1|	934	70	100M	*	0	0	GGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000507	16	gi|9632547|ref|NC_002077.1|	2896	70	100M	*	0	0	CAGGAAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000508	16	gi|9632547|ref|NC_002077.1|	1217	60	100M	*	0	0	ACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCAGAACAGGTTCGGGAAGCGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000509	16	gi|9632547|ref|NC_002077.1|	2154	50	50M1D50M	*	0	0	CGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAAAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAAATTGGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000510	16	gi|9632547|ref|NC_002077.1|	947	60	100M	*	0	0	GAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGTTGGTGGACCGGGGCATCACCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000511	16	gi|9632547|ref|NC_002077.1|	334	70	100M	*	0	0	CATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000512	16	gi|9632547|ref|NC_002077.1|	2919	60	100M	*	0	0	ACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000513	0	gi|9632547|ref|NC_002077.1|	2261	70	100M	*	0	0	CAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000514	16	gi|9632547|ref|NC_002077.1|	2972	30	45M4I51M	*	0	0	CACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000515	16	gi|9632547|ref|NC_002077.1|	1547	50	100M	*	0	0	TGCAAGTCGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGATCACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000516	0	gi|9632547|ref|NC_002077.1|	710	70	100M	*	0	0	CCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000517	16	gi|9632547|ref|NC_002077.1|	1186	70	100M	*	0	0	GGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000518	0	gi|9632547|ref|NC_002077.1|	3711	60	100M	*	0	0	TACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000519	16	gi|9632547|ref|NC_002077.1|	18	3	100M	*	0	0	GCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTTTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGACGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:2	X1:i:0	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4611,4711,-,2;
+adeno-reads100.fasta.000000520	0	gi|9632547|ref|NC_002077.1|	2092	50	100M	*	0	0	GACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAATGTGGACCTGGATGACTGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000521	0	gi|9632547|ref|NC_002077.1|	3104	50	100M	*	0	0	ACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTAAAGGAGGTCACGACGAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000522	16	gi|9632547|ref|NC_002077.1|	1919	70	100M	*	0	0	GACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000523	0	gi|9632547|ref|NC_002077.1|	2758	60	92M1I7M	*	0	0	CAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCCAATGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000524	0	gi|9632547|ref|NC_002077.1|	623	50	100M	*	0	0	ACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCCAGGCGACCCTGCCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000525	16	gi|9632547|ref|NC_002077.1|	3457	70	100M	*	0	0	TCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000526	0	gi|9632547|ref|NC_002077.1|	3928	60	100M	*	0	0	CTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAGCACAGACCCTGCGACCGGAGAGGTGCATGCTATGGGAGCATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000527	16	gi|9632547|ref|NC_002077.1|	909	70	100M	*	0	0	ACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000528	0	gi|9632547|ref|NC_002077.1|	2343	40	21M1D79M	*	0	0	GACGGCCGGGGTCTGGTGCTTCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000529	16	gi|9632547|ref|NC_002077.1|	2295	60	100M	*	0	0	TTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000530	0	gi|9632547|ref|NC_002077.1|	2083	40	100M	*	0	0	CAGAAAGAGGACGTATCGGAAACTCTGTGCCAATCATCATCTGGTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000531	0	gi|9632547|ref|NC_002077.1|	1197	60	100M	*	0	0	CTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTCCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000532	0	gi|9632547|ref|NC_002077.1|	951	60	100M	*	0	0	ATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCNGGGCATCACCTCCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000533	16	gi|9632547|ref|NC_002077.1|	628	70	100M	*	0	0	GGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000534	0	gi|9632547|ref|NC_002077.1|	568	60	100M	*	0	0	CTTTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGGGTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000535	16	gi|9632547|ref|NC_002077.1|	1564	60	100M	*	0	0	GATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000536	16	gi|9632547|ref|NC_002077.1|	3253	60	61M1D39M	*	0	0	TCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000537	0	gi|9632547|ref|NC_002077.1|	47	70	100M	*	0	0	GACCAAAGGTCCGCAGACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000538	0	gi|9632547|ref|NC_002077.1|	1003	60	83M1I16M	*	0	0	CTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACAGTCTCCTTCAACGCCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000539	0	gi|9632547|ref|NC_002077.1|	866	50	100M	*	0	0	GCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCAACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTAAACCCCAATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000540	0	gi|9632547|ref|NC_002077.1|	2621	30	31M1I68M	*	0	0	GGAAGGCGCTAAGACGGCTCCTGGAAAGAAANCGTCCGGAAGAGCAGTCGCCACAAGAGCCAGACTCCNGCTCGGGCATCGGCAAGACAGGCCAGCAGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000541	0	gi|9632547|ref|NC_002077.1|	611	60	100M	*	0	0	ATTCTGGTGGAGACGACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000542	0	gi|9632547|ref|NC_002077.1|	846	70	100M	*	0	0	ACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000543	0	gi|9632547|ref|NC_002077.1|	2499	70	100M	*	0	0	TATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000544	16	gi|9632547|ref|NC_002077.1|	1607	60	100M	*	0	0	TGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000545	16	gi|9632547|ref|NC_002077.1|	1381	40	3M1I96M	*	0	0	CCCACGTGCCCTTCTACGGCNGCGTCAACTGGACCAATGAGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGAT	IIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000546	0	gi|9632547|ref|NC_002077.1|	329	60	100M	*	0	0	GCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGNGTGGCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000547	0	gi|9632547|ref|NC_002077.1|	252	70	100M	*	0	0	CCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000548	0	gi|9632547|ref|NC_002077.1|	2380	30	100M	*	0	0	TAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTAAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAACCGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000549	16	gi|9632547|ref|NC_002077.1|	2340	30	83M1I16M	*	0	0	GACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACNCAGGCGGACGCAGCGTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000550	0	gi|9632547|ref|NC_002077.1|	3237	60	100M	*	0	0	AGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000551	0	gi|9632547|ref|NC_002077.1|	1552	50	100M	*	0	0	GTCGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACNTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000552	0	gi|9632547|ref|NC_002077.1|	2106	50	82M1D18M	*	0	0	TCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGATGTGTTTCTGAGCAATAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000553	0	gi|9632547|ref|NC_002077.1|	2716	60	100M	*	0	0	AGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGGCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000554	0	gi|9632547|ref|NC_002077.1|	4347	60	100M	*	0	0	GCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGCCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000555	0	gi|9632547|ref|NC_002077.1|	1020	70	100M	*	0	0	GGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000556	0	gi|9632547|ref|NC_002077.1|	120	70	100M	*	0	0	GGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCTGACGTAAATTACGTCATAGGGGAGTGGTCCTGTATTAGCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
 adeno-reads100.fasta.000000557	4	*	0	0	*	*	0	0	TGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACNACAACACTACTTCGGCTNCAGCANCCCCCTGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIII!IIIII!IIIIIIIII	RG:Z:none
-adeno-reads100.fasta.000000558	0	gi|9632547|ref|NC_002077.1|	720	60	32M1D68M	*	0	0	CCAACTGGTTCGCGGTGACCAAGACGCGTAATGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000559	16	gi|9632547|ref|NC_002077.1|	3324	70	100M	*	0	0	GCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000560	16	gi|9632547|ref|NC_002077.1|	4400	70	100M	*	0	0	CATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000561	0	gi|9632547|ref|NC_002077.1|	3576	60	100M	*	0	0	CAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGNTATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000562	0	gi|9632547|ref|NC_002077.1|	3559	60	7M1I92M	*	0	0	TGAACAGAAACTCAAAATCAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000563	0	gi|9632547|ref|NC_002077.1|	2755	70	100M	*	0	0	ACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000564	0	gi|9632547|ref|NC_002077.1|	224	60	34M1I65M	*	0	0	GTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000565	0	gi|9632547|ref|NC_002077.1|	2415	40	48M1I51M	*	0	0	GTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACACAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAGCCACGCCGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000566	16	gi|9632547|ref|NC_002077.1|	1110	70	100M	*	0	0	CGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000567	16	gi|9632547|ref|NC_002077.1|	698	60	100M	*	0	0	CGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACTAGTGCTACATCCCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000568	16	gi|9632547|ref|NC_002077.1|	2376	50	100M	*	0	0	TACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000569	0	gi|9632547|ref|NC_002077.1|	3322	70	100M	*	0	0	CGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000570	16	gi|9632547|ref|NC_002077.1|	3787	70	100M	*	0	0	CTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGTGTCATGATTTTTGGAAAAGAGAGCGCCGGAGCTTCAAACACTGCATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000571	16	gi|9632547|ref|NC_002077.1|	2866	70	100M	*	0	0	ACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000572	16	gi|9632547|ref|NC_002077.1|	2409	60	100M	*	0	0	GAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000573	16	gi|9632547|ref|NC_002077.1|	2171	70	100M	*	0	0	AACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000574	0	gi|9632547|ref|NC_002077.1|	3551	60	100M	*	0	0	GTATTACCTGAACAGAACTCAAAATCAGGCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000575	0	gi|9632547|ref|NC_002077.1|	3210	40	100M	*	0	0	GTCACAACCATCGCTAATAACCTTACCAGCNCGGTTCAACCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000576	16	gi|9632547|ref|NC_002077.1|	2135	60	100M	*	0	0	ACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000577	0	gi|9632547|ref|NC_002077.1|	4222	50	100M	*	0	0	TTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAATCAGCAAGCGCTGGAATCCCGAAGTGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000578	16	gi|9632547|ref|NC_002077.1|	3732	50	2M1D98M	*	0	0	ACGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCAN	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000579	0	gi|9632547|ref|NC_002077.1|	104	70	100M	*	0	0	CGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCTGACGTAAATTACGTCATAGGGGAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000580	0	gi|9632547|ref|NC_002077.1|	2693	70	100M	*	0	0	GGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000581	16	gi|9632547|ref|NC_002077.1|	3147	50	36M1D64M	*	0	0	CCCAAGAGACTCAACTTCAAACTCTTCAACATCTAATCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000582	0	gi|9632547|ref|NC_002077.1|	13	3	100M	*	0	0	TCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:2	X1:i:0	XT:A:R	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4606,4706,+,0;
-adeno-reads100.fasta.000000583	16	gi|9632547|ref|NC_002077.1|	2526	70	100M	*	0	0	GAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000584	16	gi|9632547|ref|NC_002077.1|	3077	60	100M	*	0	0	CAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCGTCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000585	16	gi|9632547|ref|NC_002077.1|	2040	60	100M	*	0	0	GTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000586	16	gi|9632547|ref|NC_002077.1|	4278	60	100M	*	0	0	GAGCTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTNCCAACGTTGATTTTACTGTGGACAACAATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000587	16	gi|9632547|ref|NC_002077.1|	831	70	100M	*	0	0	AGTGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000588	0	gi|9632547|ref|NC_002077.1|	2117	60	100M	*	0	0	CATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000589	16	gi|9632547|ref|NC_002077.1|	19	3	100M	*	0	0	CGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTTTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGATGGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:2	X1:i:0	XT:A:R	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4612,4712,-,2;
-adeno-reads100.fasta.000000590	16	gi|9632547|ref|NC_002077.1|	607	70	100M	*	0	0	CCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000591	0	gi|9632547|ref|NC_002077.1|	3193	50	54M1D46M	*	0	0	TCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000592	0	gi|9632547|ref|NC_002077.1|	301	60	100M	*	0	0	CATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACATGGACGAGCACCTGCCGGGCATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000593	0	gi|9632547|ref|NC_002077.1|	1945	60	89M1D11M	*	0	0	TCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAAGACTGTTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000594	16	gi|9632547|ref|NC_002077.1|	3562	70	100M	*	0	0	ACAGAACTCAAAATCAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000595	16	gi|9632547|ref|NC_002077.1|	15	3	100M	*	0	0	TCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCACTCGGCAGAGCTCTGCTTTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:2	X1:i:0	XT:A:R	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4608,4708,-,3;
-adeno-reads100.fasta.000000596	0	gi|9632547|ref|NC_002077.1|	1066	60	13M1I86M	*	0	0	GGAGGACCAGGCCNTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGAC	IIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000597	0	gi|9632547|ref|NC_002077.1|	127	70	100M	*	0	0	TCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCTGACGTAAATTACGTCATAGGGGAGTGGTCCTGTATTAGCTGTCACGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000598	0	gi|9632547|ref|NC_002077.1|	261	70	100M	*	0	0	CATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000599	16	gi|9632547|ref|NC_002077.1|	4	3	100M	*	0	0	CCCACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTTTGCCGGNCCCACCGAGCGAGCGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIII	NM:i:2	X0:i:2	X1:i:0	XT:A:R	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4597,4697,-,2;
-adeno-reads100.fasta.000000600	16	gi|9632547|ref|NC_002077.1|	4366	70	100M	*	0	0	TGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000601	16	gi|9632547|ref|NC_002077.1|	3609	60	100M	*	0	0	TTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAACCAGACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000602	0	gi|9632547|ref|NC_002077.1|	2975	20	12M1D29M4I55M	*	0	0	CTACAATAACCACTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000603	0	gi|9632547|ref|NC_002077.1|	2317	60	100M	*	0	0	CCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000604	16	gi|9632547|ref|NC_002077.1|	3344	70	100M	*	0	0	GCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000605	0	gi|9632547|ref|NC_002077.1|	650	70	100M	*	0	0	GGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000606	0	gi|9632547|ref|NC_002077.1|	4321	60	100M	*	0	0	AGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGGCACCGGTTACCTTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000607	16	gi|9632547|ref|NC_002077.1|	2789	70	100M	*	0	0	AGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000608	16	gi|9632547|ref|NC_002077.1|	2941	30	76M4I20M	*	0	0	TCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000609	0	gi|9632547|ref|NC_002077.1|	2620	50	11M1D89M	*	0	0	AGGAAGGCGCTAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000610	0	gi|9632547|ref|NC_002077.1|	569	70	100M	*	0	0	TTTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000611	16	gi|9632547|ref|NC_002077.1|	4052	60	100M	*	0	0	AGACGTGTACCTGCAGGGTCCCATTTGGGCCAAACTTCCTCACACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000612	16	gi|9632547|ref|NC_002077.1|	395	40	100M	*	0	0	GGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAGGAATGGGATCTGCCCCCGGATTCTGACATGGATATGAATCTGATTGAGCACGCACCCCTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000613	16	gi|9632547|ref|NC_002077.1|	1198	60	100M	*	0	0	TCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000614	0	gi|9632547|ref|NC_002077.1|	130	70	100M	*	0	0	ATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCTGACGTAAATTACGTCATAGGGGAGTGGTCCTGTATTAGCTGTCACGTGAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000615	16	gi|9632547|ref|NC_002077.1|	4412	60	100M	*	0	0	TTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGNTTACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000616	16	gi|9632547|ref|NC_002077.1|	2216	50	44M1D56M	*	0	0	ACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGCAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGATGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000617	16	gi|9632547|ref|NC_002077.1|	1414	70	100M	*	0	0	CAATGAGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCCAAGGTCGTGGAGTCCGCCAAGGCCATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000618	16	gi|9632547|ref|NC_002077.1|	2	3	49M1I50M	*	0	0	TGCCCACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCGTGCGGACCNAAAGGTCCGCAGACGGCAGAGCTCTGCTTTGCCGGCCCCACCGAGCGAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:2	X1:i:0	XT:A:R	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4595,4694,-,3;
-adeno-reads100.fasta.000000619	16	gi|9632547|ref|NC_002077.1|	2244	70	100M	*	0	0	CCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000620	16	gi|9632547|ref|NC_002077.1|	2987	30	30M4I66M	*	0	0	CCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTTCAACAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000621	0	gi|9632547|ref|NC_002077.1|	3260	60	100M	*	0	0	CTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACGAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000622	0	gi|9632547|ref|NC_002077.1|	2975	30	42M4I54M	*	0	0	CTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000623	16	gi|9632547|ref|NC_002077.1|	324	70	100M	*	0	0	GAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000624	0	gi|9632547|ref|NC_002077.1|	1587	50	95M1D5M	*	0	0	TCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAATCACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000625	16	gi|9632547|ref|NC_002077.1|	4414	70	100M	*	0	0	ACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTACCAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000626	16	gi|9632547|ref|NC_002077.1|	3897	70	100M	*	0	0	ATGATTACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAGCACAGACCCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000627	16	gi|9632547|ref|NC_002077.1|	1324	20	57M3D15M1D23M1D5M	*	0	0	CTGGCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGTGCGTCAACTGGACCAATGAGAATTTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000628	16	gi|9632547|ref|NC_002077.1|	769	70	100M	*	0	0	CAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAGCGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000629	0	gi|9632547|ref|NC_002077.1|	7	3	100M	*	0	0	ACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAATGTCCGCAGACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:2	X1:i:0	XT:A:R	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4600,4700,+,1;
-adeno-reads100.fasta.000000630	0	gi|9632547|ref|NC_002077.1|	2084	60	100M	*	0	0	AGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000631	0	gi|9632547|ref|NC_002077.1|	3491	70	100M	*	0	0	CAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACAGAACTCAAAATCAGTCCGGAAGTGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000632	16	gi|9632547|ref|NC_002077.1|	1855	70	100M	*	0	0	GGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000633	0	gi|9632547|ref|NC_002077.1|	3101	70	100M	*	0	0	ACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000634	0	gi|9632547|ref|NC_002077.1|	2671	60	100M	*	0	0	CACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000635	16	gi|9632547|ref|NC_002077.1|	3076	60	100M	*	0	0	TCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTGTTCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000636	16	gi|9632547|ref|NC_002077.1|	2643	60	100M	*	0	0	GGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000637	16	gi|9632547|ref|NC_002077.1|	2845	60	46M1I53M	*	0	0	GCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAAGTGCCTCAGGAAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000638	16	gi|9632547|ref|NC_002077.1|	3355	70	100M	*	0	0	ACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000639	16	gi|9632547|ref|NC_002077.1|	3333	70	100M	*	0	0	TTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000640	0	gi|9632547|ref|NC_002077.1|	2073	60	100M	*	0	0	AACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000641	16	gi|9632547|ref|NC_002077.1|	1310	20	71M3D29M	*	0	0	AAGCGCAACACCATCTGGCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTCAGGCTGCGTCAACTGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000642	0	gi|9632547|ref|NC_002077.1|	3588	50	100M	*	0	0	GCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCCCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCNTGTTATCGGCAGCAGCGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000643	16	gi|9632547|ref|NC_002077.1|	3623	60	100M	*	0	0	TCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAAACAGACAACAACAACATCAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000644	0	gi|9632547|ref|NC_002077.1|	1165	70	100M	*	0	0	CAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000645	16	gi|9632547|ref|NC_002077.1|	3858	70	100M	*	0	0	GAGAGCGCCGGAGCTTCAAACACTGCATTGGACAATGTCATGATTACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCACCGAAAGATTTGGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000646	0	gi|9632547|ref|NC_002077.1|	2923	50	95M2I3M	*	0	0	GGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000647	16	gi|9632547|ref|NC_002077.1|	1878	70	100M	*	0	0	CATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000648	0	gi|9632547|ref|NC_002077.1|	242	70	100M	*	0	0	TTTTGCGACACCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000649	0	gi|9632547|ref|NC_002077.1|	4081	50	100M	*	0	0	CCAAACTTCCTCACAAAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000650	0	gi|9632547|ref|NC_002077.1|	3248	50	100M	*	0	0	AGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCNCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!III	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000651	0	gi|9632547|ref|NC_002077.1|	1719	70	100M	*	0	0	CAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGAGCCAACAAAAGACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000652	0	gi|9632547|ref|NC_002077.1|	1831	70	100M	*	0	0	CGCGGATAAAAGCGAGCCCAAGCGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000653	0	gi|9632547|ref|NC_002077.1|	4220	60	100M	*	0	0	GTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000654	16	gi|9632547|ref|NC_002077.1|	3579	70	100M	*	0	0	TCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000655	16	gi|9632547|ref|NC_002077.1|	557	60	100M	*	0	0	GAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000656	0	gi|9632547|ref|NC_002077.1|	4143	50	100M	*	0	0	AAGAACCTGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCNGCTACAAAGTTTGCTTCATTCATCACCCAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000657	0	gi|9632547|ref|NC_002077.1|	4183	40	54M1D46M	*	0	0	TTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTANAAAGTTTGCTTCATTCATCACCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000658	0	gi|9632547|ref|NC_002077.1|	2758	60	100M	*	0	0	CAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCATCAGGCGGTGGCGCACCAATGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000659	0	gi|9632547|ref|NC_002077.1|	639	70	100M	*	0	0	CCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000660	16	gi|9632547|ref|NC_002077.1|	3380	70	100M	*	0	0	AGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000661	16	gi|9632547|ref|NC_002077.1|	2577	70	100M	*	0	0	TTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000662	16	gi|9632547|ref|NC_002077.1|	2949	20	6M1I62M4I27M	*	0	0	AGCACCGCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000663	16	gi|9632547|ref|NC_002077.1|	3652	70	100M	*	0	0	ACTGGCTACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAAACAGACAACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000664	16	gi|9632547|ref|NC_002077.1|	669	60	92M1D8M	*	0	0	TTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000665	16	gi|9632547|ref|NC_002077.1|	859	70	100M	*	0	0	TATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000666	0	gi|9632547|ref|NC_002077.1|	80	60	22M1I77M	*	0	0	TGCCGGCCCCACCGAGCGAGCGNAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCT	IIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000667	16	gi|9632547|ref|NC_002077.1|	4177	50	100M	*	0	0	CGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTTTGGAAATTGAATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000668	0	gi|9632547|ref|NC_002077.1|	1629	60	100M	*	0	0	GCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAAAGCAGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000669	0	gi|9632547|ref|NC_002077.1|	1563	50	100M	*	0	0	AGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCCTTGCAGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000670	0	gi|9632547|ref|NC_002077.1|	570	60	100M	*	0	0	TTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCCAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000671	16	gi|9632547|ref|NC_002077.1|	4536	60	2M1D98M	*	0	0	GCTGGTTGCGCTTCGCGATAAAAGACTTACGTCATCGGGTTACCCCTAGTGATGGAGTTGCCCACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000672	16	gi|9632547|ref|NC_002077.1|	4298	70	100M	*	0	0	CAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000673	0	gi|9632547|ref|NC_002077.1|	1167	70	100M	*	0	0	AATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000674	0	gi|9632547|ref|NC_002077.1|	2513	60	100M	*	0	0	CGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAACCGGGTTCTCGAACCTCTCGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000675	16	gi|9632547|ref|NC_002077.1|	4458	70	100M	*	0	0	TGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000676	0	gi|9632547|ref|NC_002077.1|	2822	70	100M	*	0	0	TACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000677	0	gi|9632547|ref|NC_002077.1|	1078	70	100M	*	0	0	CTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000678	0	gi|9632547|ref|NC_002077.1|	2032	70	100M	*	0	0	GAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000679	0	gi|9632547|ref|NC_002077.1|	1162	60	100M	*	0	0	GACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGANCCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!III	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000680	0	gi|9632547|ref|NC_002077.1|	4375	70	100M	*	0	0	ATGGACTTTATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000681	0	gi|9632547|ref|NC_002077.1|	3075	70	100M	*	0	0	TTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000682	16	gi|9632547|ref|NC_002077.1|	1924	60	42M1D58M	*	0	0	GTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000683	16	gi|9632547|ref|NC_002077.1|	2091	60	100M	*	0	0	GGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000684	16	gi|9632547|ref|NC_002077.1|	3170	60	100M	*	0	0	CTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000685	0	gi|9632547|ref|NC_002077.1|	2904	60	100M	*	0	0	TGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACTACCTCTACAAGCAAATCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000686	16	gi|9632547|ref|NC_002077.1|	304	60	100M	*	0	0	TTTGACCGCGAAATTTGAACGAGCAGCAGCCATTCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000687	0	gi|9632547|ref|NC_002077.1|	335	70	100M	*	0	0	ATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000688	0	gi|9632547|ref|NC_002077.1|	1834	60	5M1I94M	*	0	0	GGATACAAAGCGAGCCCAAGCGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000689	16	gi|9632547|ref|NC_002077.1|	683	70	100M	*	0	0	GTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000690	16	gi|9632547|ref|NC_002077.1|	1855	70	100M	*	0	0	GGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000691	16	gi|9632547|ref|NC_002077.1|	2633	40	40M1I59M	*	0	0	GACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCANCAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGCCCAGCAGCCCGCTAAAAAGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000692	0	gi|9632547|ref|NC_002077.1|	749	30	25M1I71M3I	*	0	0	AATGGCGCCGGAGGGGGGAACAAGGNTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTGGACTNNG	IIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!!I	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000693	0	gi|9632547|ref|NC_002077.1|	3480	40	18M1D82M	*	0	0	CCTTTCCACAGTAGCTACCGCACAGCCAGACCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACAGAACTCAAAATCAGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000694	0	gi|9632547|ref|NC_002077.1|	2600	60	100M	*	0	0	CGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000695	0	gi|9632547|ref|NC_002077.1|	673	70	100M	*	0	0	GGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000696	16	gi|9632547|ref|NC_002077.1|	4267	50	65M1D35M	*	0	0	AAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCATTATGNAAAATCTGCCAACGTTGATTTTACTGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000697	16	gi|9632547|ref|NC_002077.1|	733	40	34M1I65M	*	0	0	CGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGATGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000698	0	gi|9632547|ref|NC_002077.1|	420	60	100M	*	0	0	GGGTGGCCGAGAAGGAATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000699	16	gi|9632547|ref|NC_002077.1|	2000	70	100M	*	0	0	CAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000700	16	gi|9632547|ref|NC_002077.1|	1302	30	79M3D21M	*	0	0	GGTTCGGGAAGCGGAACACCATCTGGCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000701	0	gi|9632547|ref|NC_002077.1|	1674	70	100M	*	0	0	AATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000702	16	gi|9632547|ref|NC_002077.1|	1551	40	2M1I97M	*	0	0	AGTTCGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCCACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000703	16	gi|9632547|ref|NC_002077.1|	2377	50	100M	*	0	0	ACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000704	16	gi|9632547|ref|NC_002077.1|	4407	60	100M	*	0	0	ACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000705	0	gi|9632547|ref|NC_002077.1|	3092	60	100M	*	0	0	CCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTNTTCAACATCCAAGTCAAGGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000706	0	gi|9632547|ref|NC_002077.1|	3226	50	33M1I66M	*	0	0	ATAACCTTACCAGCACGGTTCAAGCCTTCTCGGCACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000707	16	gi|9632547|ref|NC_002077.1|	838	40	100M	*	0	0	GTGGACTAACATGTAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCGACGTCAGCCAGGCCCAGGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000708	0	gi|9632547|ref|NC_002077.1|	2209	70	100M	*	0	0	GACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000709	16	gi|9632547|ref|NC_002077.1|	2573	70	100M	*	0	0	AGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000710	0	gi|9632547|ref|NC_002077.1|	4149	50	6M1D94M	*	0	0	CCGCCTCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATAGTCCAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000711	0	gi|9632547|ref|NC_002077.1|	3556	50	62M1I37M	*	0	0	ACCTGAACAGAACTCAAAATCAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTNGGGTCTCCAGCTGGCATGTCTGTTCAGCGCAAAAACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000712	16	gi|9632547|ref|NC_002077.1|	4509	60	10M1D90M	*	0	0	ACCATGGTTAAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAAAAGACTTACGTCATCGGGTTACCCCTAGTGATGGAGTTGCCCACTCCCTCTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000713	16	gi|9632547|ref|NC_002077.1|	551	50	100M	*	0	0	GCCCCGGAGGCCCTCTTCTTTGTTTAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGGCAAATCCATGGTGCTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000714	16	gi|9632547|ref|NC_002077.1|	1222	70	100M	*	0	0	CCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCAGAAAAGGTTCGGGAAGCGCAACACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000715	0	gi|9632547|ref|NC_002077.1|	1687	70	100M	*	0	0	CCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000716	0	gi|9632547|ref|NC_002077.1|	3596	40	100M	*	0	0	CAAGGACTTGCTGTTTCGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTCTCGGCAGCAGCGCGTTTCTCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000717	0	gi|9632547|ref|NC_002077.1|	988	70	100M	*	0	0	AAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000718	16	gi|9632547|ref|NC_002077.1|	3372	60	42M1D58M	*	0	0	GGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAAATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000719	0	gi|9632547|ref|NC_002077.1|	77	60	11M1I88M	*	0	0	CTCTGCCGGCCNCCACCGAGCGAGCGAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGC	IIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000720	0	gi|9632547|ref|NC_002077.1|	1719	70	100M	*	0	0	CAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGAGCCAACAAAAGACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000721	16	gi|9632547|ref|NC_002077.1|	2469	70	100M	*	0	0	CTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000722	0	gi|9632547|ref|NC_002077.1|	3155	60	100M	*	0	0	ACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000723	0	gi|9632547|ref|NC_002077.1|	218	70	100M	*	0	0	TGTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000724	0	gi|9632547|ref|NC_002077.1|	2128	60	100M	*	0	0	GGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000725	16	gi|9632547|ref|NC_002077.1|	1760	70	100M	*	0	0	CACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGAGCCAACAAAAGACCCGCCCCCGATGACGCGGATAAAAGCGAGCCCAAGCGGGCCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000726	0	gi|9632547|ref|NC_002077.1|	3050	70	100M	*	0	0	CAGCACCCCCTGGGGGTATTTTGATTTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000727	16	gi|9632547|ref|NC_002077.1|	896	70	100M	*	0	0	CTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000728	16	gi|9632547|ref|NC_002077.1|	4317	50	49M1D51M	*	0	0	GTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTCGCACCCGTTACCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000729	0	gi|9632547|ref|NC_002077.1|	1942	60	100M	*	0	0	TCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCCGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000730	16	gi|9632547|ref|NC_002077.1|	1124	70	100M	*	0	0	AAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000731	0	gi|9632547|ref|NC_002077.1|	3072	70	100M	*	0	0	GATTTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000732	0	gi|9632547|ref|NC_002077.1|	3390	60	100M	*	0	0	CGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTATCCACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000733	0	gi|9632547|ref|NC_002077.1|	2322	60	100M	*	0	0	GCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000734	16	gi|9632547|ref|NC_002077.1|	1247	50	100M	*	0	0	AACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCAGAAAAGGTTCGGGAAGCGCAACACCATCTGGCTGTTTGGNCCGGCCCCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000735	0	gi|9632547|ref|NC_002077.1|	3425	70	100M	*	0	0	TCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000736	0	gi|9632547|ref|NC_002077.1|	4143	70	100M	*	0	0	AAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000737	0	gi|9632547|ref|NC_002077.1|	4353	70	100M	*	0	0	GTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000738	0	gi|9632547|ref|NC_002077.1|	762	60	56M1D44M	*	0	0	GGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTAGCCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000739	0	gi|9632547|ref|NC_002077.1|	2798	60	100M	*	0	0	AGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAATGGGTAATGCCTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000740	16	gi|9632547|ref|NC_002077.1|	2817	60	100M	*	0	0	GGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGGAATTGGCATTGCGATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000741	16	gi|9632547|ref|NC_002077.1|	3457	70	100M	*	0	0	TCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000742	16	gi|9632547|ref|NC_002077.1|	3764	70	100M	*	0	0	TGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGTGTCATGATTTTTGGAAAAGAGAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000743	16	gi|9632547|ref|NC_002077.1|	717	70	100M	*	0	0	TGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000744	16	gi|9632547|ref|NC_002077.1|	3127	70	100M	*	0	0	ACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000745	16	gi|9632547|ref|NC_002077.1|	3886	50	100M	*	0	0	TGGACAATGTCATGATNACAGACGAAGAGGAAATTAAAGCCACCAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAG	IIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000746	16	gi|9632547|ref|NC_002077.1|	2434	50	100M	*	0	0	CGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGNAGCGTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000747	16	gi|9632547|ref|NC_002077.1|	4562	70	100M	*	0	0	CTTACGTCATCGGGTTACCCCTAGTGATGGAGTTGCCCACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000748	16	gi|9632547|ref|NC_002077.1|	1940	70	100M	*	0	0	TCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000749	16	gi|9632547|ref|NC_002077.1|	845	70	100M	*	0	0	AACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
+adeno-reads100.fasta.000000558	0	gi|9632547|ref|NC_002077.1|	720	60	32M1D68M	*	0	0	CCAACTGGTTCGCGGTGACCAAGACGCGTAATGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000559	16	gi|9632547|ref|NC_002077.1|	3324	70	100M	*	0	0	GCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000560	16	gi|9632547|ref|NC_002077.1|	4400	70	100M	*	0	0	CATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000561	0	gi|9632547|ref|NC_002077.1|	3576	60	100M	*	0	0	CAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGNTATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000562	0	gi|9632547|ref|NC_002077.1|	3559	60	7M1I92M	*	0	0	TGAACAGAAACTCAAAATCAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000563	0	gi|9632547|ref|NC_002077.1|	2755	70	100M	*	0	0	ACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000564	0	gi|9632547|ref|NC_002077.1|	224	60	34M1I65M	*	0	0	GTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000565	0	gi|9632547|ref|NC_002077.1|	2415	40	48M1I51M	*	0	0	GTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACACAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAGCCACGCCGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000566	16	gi|9632547|ref|NC_002077.1|	1110	70	100M	*	0	0	CGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000567	16	gi|9632547|ref|NC_002077.1|	698	60	100M	*	0	0	CGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACTAGTGCTACATCCCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000568	16	gi|9632547|ref|NC_002077.1|	2376	50	100M	*	0	0	TACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000569	0	gi|9632547|ref|NC_002077.1|	3322	70	100M	*	0	0	CGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000570	16	gi|9632547|ref|NC_002077.1|	3787	70	100M	*	0	0	CTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGTGTCATGATTTTTGGAAAAGAGAGCGCCGGAGCTTCAAACACTGCATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000571	16	gi|9632547|ref|NC_002077.1|	2866	70	100M	*	0	0	ACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000572	16	gi|9632547|ref|NC_002077.1|	2409	60	100M	*	0	0	GAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000573	16	gi|9632547|ref|NC_002077.1|	2171	70	100M	*	0	0	AACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000574	0	gi|9632547|ref|NC_002077.1|	3551	60	100M	*	0	0	GTATTACCTGAACAGAACTCAAAATCAGGCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000575	0	gi|9632547|ref|NC_002077.1|	3210	40	100M	*	0	0	GTCACAACCATCGCTAATAACCTTACCAGCNCGGTTCAACCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000576	16	gi|9632547|ref|NC_002077.1|	2135	60	100M	*	0	0	ACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000577	0	gi|9632547|ref|NC_002077.1|	4222	50	100M	*	0	0	TTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAATCAGCAAGCGCTGGAATCCCGAAGTGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000578	16	gi|9632547|ref|NC_002077.1|	3732	50	2M1D98M	*	0	0	ACGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCAN	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000579	0	gi|9632547|ref|NC_002077.1|	104	70	100M	*	0	0	CGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCTGACGTAAATTACGTCATAGGGGAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000580	0	gi|9632547|ref|NC_002077.1|	2693	70	100M	*	0	0	GGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000581	16	gi|9632547|ref|NC_002077.1|	3147	50	36M1D64M	*	0	0	CCCAAGAGACTCAACTTCAAACTCTTCAACATCTAATCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000582	0	gi|9632547|ref|NC_002077.1|	13	3	100M	*	0	0	TCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:2	X1:i:0	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4606,4706,+,0;
+adeno-reads100.fasta.000000583	16	gi|9632547|ref|NC_002077.1|	2526	70	100M	*	0	0	GAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000584	16	gi|9632547|ref|NC_002077.1|	3077	60	100M	*	0	0	CAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCGTCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000585	16	gi|9632547|ref|NC_002077.1|	2040	60	100M	*	0	0	GTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000586	16	gi|9632547|ref|NC_002077.1|	4278	60	100M	*	0	0	GAGCTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTNCCAACGTTGATTTTACTGTGGACAACAATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000587	16	gi|9632547|ref|NC_002077.1|	831	70	100M	*	0	0	AGTGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000588	0	gi|9632547|ref|NC_002077.1|	2117	60	100M	*	0	0	CATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000589	16	gi|9632547|ref|NC_002077.1|	19	3	100M	*	0	0	CGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTTTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGATGGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:2	X1:i:0	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4612,4712,-,2;
+adeno-reads100.fasta.000000590	16	gi|9632547|ref|NC_002077.1|	607	70	100M	*	0	0	CCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000591	0	gi|9632547|ref|NC_002077.1|	3193	50	54M1D46M	*	0	0	TCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000592	0	gi|9632547|ref|NC_002077.1|	301	60	100M	*	0	0	CATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACATGGACGAGCACCTGCCGGGCATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000593	0	gi|9632547|ref|NC_002077.1|	1945	60	89M1D11M	*	0	0	TCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAAGACTGTTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000594	16	gi|9632547|ref|NC_002077.1|	3562	70	100M	*	0	0	ACAGAACTCAAAATCAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000595	16	gi|9632547|ref|NC_002077.1|	15	3	100M	*	0	0	TCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCACTCGGCAGAGCTCTGCTTTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:2	X1:i:0	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4608,4708,-,3;
+adeno-reads100.fasta.000000596	0	gi|9632547|ref|NC_002077.1|	1066	60	13M1I86M	*	0	0	GGAGGACCAGGCCNTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGAC	IIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000597	0	gi|9632547|ref|NC_002077.1|	127	70	100M	*	0	0	TCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCTGACGTAAATTACGTCATAGGGGAGTGGTCCTGTATTAGCTGTCACGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000598	0	gi|9632547|ref|NC_002077.1|	261	70	100M	*	0	0	CATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000599	16	gi|9632547|ref|NC_002077.1|	4	3	100M	*	0	0	CCCACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTTTGCCGGNCCCACCGAGCGAGCGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIII	NM:i:2	X0:i:2	X1:i:0	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4597,4697,-,2;
+adeno-reads100.fasta.000000600	16	gi|9632547|ref|NC_002077.1|	4366	70	100M	*	0	0	TGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000601	16	gi|9632547|ref|NC_002077.1|	3609	60	100M	*	0	0	TTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAACCAGACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000602	0	gi|9632547|ref|NC_002077.1|	2975	20	12M1D29M4I55M	*	0	0	CTACAATAACCACTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000603	0	gi|9632547|ref|NC_002077.1|	2317	60	100M	*	0	0	CCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000604	16	gi|9632547|ref|NC_002077.1|	3344	70	100M	*	0	0	GCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000605	0	gi|9632547|ref|NC_002077.1|	650	70	100M	*	0	0	GGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000606	0	gi|9632547|ref|NC_002077.1|	4321	60	100M	*	0	0	AGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGGCACCGGTTACCTTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000607	16	gi|9632547|ref|NC_002077.1|	2789	70	100M	*	0	0	AGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000608	16	gi|9632547|ref|NC_002077.1|	2941	30	76M4I20M	*	0	0	TCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000609	0	gi|9632547|ref|NC_002077.1|	2620	50	11M1D89M	*	0	0	AGGAAGGCGCTAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000610	0	gi|9632547|ref|NC_002077.1|	569	70	100M	*	0	0	TTTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000611	16	gi|9632547|ref|NC_002077.1|	4052	60	100M	*	0	0	AGACGTGTACCTGCAGGGTCCCATTTGGGCCAAACTTCCTCACACAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000612	16	gi|9632547|ref|NC_002077.1|	395	40	100M	*	0	0	GGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAGGAATGGGATCTGCCCCCGGATTCTGACATGGATATGAATCTGATTGAGCACGCACCCCTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000613	16	gi|9632547|ref|NC_002077.1|	1198	60	100M	*	0	0	TCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000614	0	gi|9632547|ref|NC_002077.1|	130	70	100M	*	0	0	ATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCTGACGTAAATTACGTCATAGGGGAGTGGTCCTGTATTAGCTGTCACGTGAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000615	16	gi|9632547|ref|NC_002077.1|	4412	60	100M	*	0	0	TTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGNTTACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000616	16	gi|9632547|ref|NC_002077.1|	2216	50	44M1D56M	*	0	0	ACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGCAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGATGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000617	16	gi|9632547|ref|NC_002077.1|	1414	70	100M	*	0	0	CAATGAGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCCAAGGTCGTGGAGTCCGCCAAGGCCATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000618	16	gi|9632547|ref|NC_002077.1|	2	3	49M1I50M	*	0	0	TGCCCACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCGTGCGGACCNAAAGGTCCGCAGACGGCAGAGCTCTGCTTTGCCGGCCCCACCGAGCGAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:2	X1:i:0	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4595,4694,-,3;
+adeno-reads100.fasta.000000619	16	gi|9632547|ref|NC_002077.1|	2244	70	100M	*	0	0	CCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000620	16	gi|9632547|ref|NC_002077.1|	2987	30	30M4I66M	*	0	0	CCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTTCAACAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000621	0	gi|9632547|ref|NC_002077.1|	3260	60	100M	*	0	0	CTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACGAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000622	0	gi|9632547|ref|NC_002077.1|	2975	30	42M4I54M	*	0	0	CTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000623	16	gi|9632547|ref|NC_002077.1|	324	70	100M	*	0	0	GAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000624	0	gi|9632547|ref|NC_002077.1|	1587	50	95M1D5M	*	0	0	TCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAATCACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000625	16	gi|9632547|ref|NC_002077.1|	4414	70	100M	*	0	0	ACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTACCAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000626	16	gi|9632547|ref|NC_002077.1|	3897	70	100M	*	0	0	ATGATTACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAGCACAGACCCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000627	16	gi|9632547|ref|NC_002077.1|	1324	20	57M3D15M1D23M1D5M	*	0	0	CTGGCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGTGCGTCAACTGGACCAATGAGAATTTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000628	16	gi|9632547|ref|NC_002077.1|	769	70	100M	*	0	0	CAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAGCGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000629	0	gi|9632547|ref|NC_002077.1|	7	3	100M	*	0	0	ACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAATGTCCGCAGACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:2	X1:i:0	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4600,4700,+,1;
+adeno-reads100.fasta.000000630	0	gi|9632547|ref|NC_002077.1|	2084	60	100M	*	0	0	AGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000631	0	gi|9632547|ref|NC_002077.1|	3491	70	100M	*	0	0	CAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACAGAACTCAAAATCAGTCCGGAAGTGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000632	16	gi|9632547|ref|NC_002077.1|	1855	70	100M	*	0	0	GGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000633	0	gi|9632547|ref|NC_002077.1|	3101	70	100M	*	0	0	ACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000634	0	gi|9632547|ref|NC_002077.1|	2671	60	100M	*	0	0	CACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000635	16	gi|9632547|ref|NC_002077.1|	3076	60	100M	*	0	0	TCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTGTTCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000636	16	gi|9632547|ref|NC_002077.1|	2643	60	100M	*	0	0	GGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000637	16	gi|9632547|ref|NC_002077.1|	2845	60	46M1I53M	*	0	0	GCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAAGTGCCTCAGGAAATTGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000638	16	gi|9632547|ref|NC_002077.1|	3355	70	100M	*	0	0	ACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000639	16	gi|9632547|ref|NC_002077.1|	3333	70	100M	*	0	0	TTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000640	0	gi|9632547|ref|NC_002077.1|	2073	60	100M	*	0	0	AACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000641	16	gi|9632547|ref|NC_002077.1|	1310	20	71M3D29M	*	0	0	AAGCGCAACACCATCTGGCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTCAGGCTGCGTCAACTGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000642	0	gi|9632547|ref|NC_002077.1|	3588	50	100M	*	0	0	GCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCCCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCNTGTTATCGGCAGCAGCGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000643	16	gi|9632547|ref|NC_002077.1|	3623	60	100M	*	0	0	TCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAAACAGACAACAACAACATCAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000644	0	gi|9632547|ref|NC_002077.1|	1165	70	100M	*	0	0	CAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000645	16	gi|9632547|ref|NC_002077.1|	3858	70	100M	*	0	0	GAGAGCGCCGGAGCTTCAAACACTGCATTGGACAATGTCATGATTACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCACCGAAAGATTTGGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000646	0	gi|9632547|ref|NC_002077.1|	2923	50	95M2I3M	*	0	0	GGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000647	16	gi|9632547|ref|NC_002077.1|	1878	70	100M	*	0	0	CATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000648	0	gi|9632547|ref|NC_002077.1|	242	70	100M	*	0	0	TTTTGCGACACCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000649	0	gi|9632547|ref|NC_002077.1|	4081	50	100M	*	0	0	CCAAACTTCCTCACAAAGATGGACACTTTCACCCGTCTCCTCTTATGGGCGGCTTTGGACTCAAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000650	0	gi|9632547|ref|NC_002077.1|	3248	50	100M	*	0	0	AGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCNCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!III	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000651	0	gi|9632547|ref|NC_002077.1|	1719	70	100M	*	0	0	CAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGAGCCAACAAAAGACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000652	0	gi|9632547|ref|NC_002077.1|	1831	70	100M	*	0	0	CGCGGATAAAAGCGAGCCCAAGCGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000653	0	gi|9632547|ref|NC_002077.1|	4220	60	100M	*	0	0	GTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000654	16	gi|9632547|ref|NC_002077.1|	3579	70	100M	*	0	0	TCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000655	16	gi|9632547|ref|NC_002077.1|	557	60	100M	*	0	0	GAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000656	0	gi|9632547|ref|NC_002077.1|	4143	50	100M	*	0	0	AAGAACCTGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCNGCTACAAAGTTTGCTTCATTCATCACCCAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000657	0	gi|9632547|ref|NC_002077.1|	4183	40	54M1D46M	*	0	0	TTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTANAAAGTTTGCTTCATTCATCACCAATACTCCACAGTACAAGTGAGTGTGGAAATTGAATGGGAGCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000658	0	gi|9632547|ref|NC_002077.1|	2758	60	100M	*	0	0	CAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCATCAGGCGGTGGCGCACCAATGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000659	0	gi|9632547|ref|NC_002077.1|	639	70	100M	*	0	0	CCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000660	16	gi|9632547|ref|NC_002077.1|	3380	70	100M	*	0	0	AGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000661	16	gi|9632547|ref|NC_002077.1|	2577	70	100M	*	0	0	TTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000662	16	gi|9632547|ref|NC_002077.1|	2949	20	6M1I62M4I27M	*	0	0	AGCACCGCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000663	16	gi|9632547|ref|NC_002077.1|	3652	70	100M	*	0	0	ACTGGCTACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAAACAGACAACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000664	16	gi|9632547|ref|NC_002077.1|	669	60	92M1D8M	*	0	0	TTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000665	16	gi|9632547|ref|NC_002077.1|	859	70	100M	*	0	0	TATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000666	0	gi|9632547|ref|NC_002077.1|	80	60	22M1I77M	*	0	0	TGCCGGCCCCACCGAGCGAGCGNAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCT	IIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000667	16	gi|9632547|ref|NC_002077.1|	4177	50	100M	*	0	0	CGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTTTGGAAATTGAATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000668	0	gi|9632547|ref|NC_002077.1|	1629	60	100M	*	0	0	GCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAAAGCAGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000669	0	gi|9632547|ref|NC_002077.1|	1563	50	100M	*	0	0	AGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCCTTGCAGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000670	0	gi|9632547|ref|NC_002077.1|	570	60	100M	*	0	0	TTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCCAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000671	16	gi|9632547|ref|NC_002077.1|	4536	60	2M1D98M	*	0	0	GCTGGTTGCGCTTCGCGATAAAAGACTTACGTCATCGGGTTACCCCTAGTGATGGAGTTGCCCACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000672	16	gi|9632547|ref|NC_002077.1|	4298	70	100M	*	0	0	CAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000673	0	gi|9632547|ref|NC_002077.1|	1167	70	100M	*	0	0	AATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000674	0	gi|9632547|ref|NC_002077.1|	2513	60	100M	*	0	0	CGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAACCGGGTTCTCGAACCTCTCGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000675	16	gi|9632547|ref|NC_002077.1|	4458	70	100M	*	0	0	TGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000676	0	gi|9632547|ref|NC_002077.1|	2822	70	100M	*	0	0	TACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000677	0	gi|9632547|ref|NC_002077.1|	1078	70	100M	*	0	0	CTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000678	0	gi|9632547|ref|NC_002077.1|	2032	70	100M	*	0	0	GAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000679	0	gi|9632547|ref|NC_002077.1|	1162	60	100M	*	0	0	GACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGANCCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!III	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000680	0	gi|9632547|ref|NC_002077.1|	4375	70	100M	*	0	0	ATGGACTTTATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000681	0	gi|9632547|ref|NC_002077.1|	3075	70	100M	*	0	0	TTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000682	16	gi|9632547|ref|NC_002077.1|	1924	60	42M1D58M	*	0	0	GTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000683	16	gi|9632547|ref|NC_002077.1|	2091	60	100M	*	0	0	GGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000684	16	gi|9632547|ref|NC_002077.1|	3170	60	100M	*	0	0	CTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000685	0	gi|9632547|ref|NC_002077.1|	2904	60	100M	*	0	0	TGGCATTGCGATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACTACCTCTACAAGCAAATCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000686	16	gi|9632547|ref|NC_002077.1|	304	60	100M	*	0	0	TTTGACCGCGAAATTTGAACGAGCAGCAGCCATTCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000687	0	gi|9632547|ref|NC_002077.1|	335	70	100M	*	0	0	ATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000688	0	gi|9632547|ref|NC_002077.1|	1834	60	5M1I94M	*	0	0	GGATACAAAGCGAGCCCAAGCGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000689	16	gi|9632547|ref|NC_002077.1|	683	70	100M	*	0	0	GTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000690	16	gi|9632547|ref|NC_002077.1|	1855	70	100M	*	0	0	GGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000691	16	gi|9632547|ref|NC_002077.1|	2633	40	40M1I59M	*	0	0	GACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCANCAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGACAGCCCAGCAGCCCGCTAAAAAGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000692	0	gi|9632547|ref|NC_002077.1|	749	30	25M1I71M3I	*	0	0	AATGGCGCCGGAGGGGGGAACAAGGNTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTGGACTNNG	IIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!!I	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000693	0	gi|9632547|ref|NC_002077.1|	3480	40	18M1D82M	*	0	0	CCTTTCCACAGTAGCTACCGCACAGCCAGACCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACAGAACTCAAAATCAGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000694	0	gi|9632547|ref|NC_002077.1|	2600	60	100M	*	0	0	CGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000695	0	gi|9632547|ref|NC_002077.1|	673	70	100M	*	0	0	GGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000696	16	gi|9632547|ref|NC_002077.1|	4267	50	65M1D35M	*	0	0	AAATTGAATGGGAGCTGCAGAAAGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCATTATGNAAAATCTGCCAACGTTGATTTTACTGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000697	16	gi|9632547|ref|NC_002077.1|	733	40	34M1I65M	*	0	0	CGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGATGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000698	0	gi|9632547|ref|NC_002077.1|	420	60	100M	*	0	0	GGGTGGCCGAGAAGGAATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTGCAGCGCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000699	16	gi|9632547|ref|NC_002077.1|	2000	70	100M	*	0	0	CAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000700	16	gi|9632547|ref|NC_002077.1|	1302	30	79M3D21M	*	0	0	GGTTCGGGAAGCGGAACACCATCTGGCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000701	0	gi|9632547|ref|NC_002077.1|	1674	70	100M	*	0	0	AATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000702	16	gi|9632547|ref|NC_002077.1|	1551	40	2M1I97M	*	0	0	AGTTCGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCCACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000703	16	gi|9632547|ref|NC_002077.1|	2377	50	100M	*	0	0	ACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000704	16	gi|9632547|ref|NC_002077.1|	4407	60	100M	*	0	0	ACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000705	0	gi|9632547|ref|NC_002077.1|	3092	60	100M	*	0	0	CCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTNTTCAACATCCAAGTCAAGGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000706	0	gi|9632547|ref|NC_002077.1|	3226	50	33M1I66M	*	0	0	ATAACCTTACCAGCACGGTTCAAGCCTTCTCGGCACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000707	16	gi|9632547|ref|NC_002077.1|	838	40	100M	*	0	0	GTGGACTAACATGTAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCGACGTCAGCCAGGCCCAGGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000708	0	gi|9632547|ref|NC_002077.1|	2209	70	100M	*	0	0	GACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000709	16	gi|9632547|ref|NC_002077.1|	2573	70	100M	*	0	0	AGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000710	0	gi|9632547|ref|NC_002077.1|	4149	50	6M1D94M	*	0	0	CCGCCTCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATAGTCCAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000711	0	gi|9632547|ref|NC_002077.1|	3556	50	62M1I37M	*	0	0	ACCTGAACAGAACTCAAAATCAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTNGGGTCTCCAGCTGGCATGTCTGTTCAGCGCAAAAACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000712	16	gi|9632547|ref|NC_002077.1|	4509	60	10M1D90M	*	0	0	ACCATGGTTAAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAAAAGACTTACGTCATCGGGTTACCCCTAGTGATGGAGTTGCCCACTCCCTCTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000713	16	gi|9632547|ref|NC_002077.1|	551	50	100M	*	0	0	GCCCCGGAGGCCCTCTTCTTTGTTTAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGGCAAATCCATGGTGCTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000714	16	gi|9632547|ref|NC_002077.1|	1222	70	100M	*	0	0	CCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCAGAAAAGGTTCGGGAAGCGCAACACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000715	0	gi|9632547|ref|NC_002077.1|	1687	70	100M	*	0	0	CCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000716	0	gi|9632547|ref|NC_002077.1|	3596	40	100M	*	0	0	CAAGGACTTGCTGTTTCGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTCTCGGCAGCAGCGCGTTTCTCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000717	0	gi|9632547|ref|NC_002077.1|	988	70	100M	*	0	0	AAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000718	16	gi|9632547|ref|NC_002077.1|	3372	60	42M1D58M	*	0	0	GGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAAATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000719	0	gi|9632547|ref|NC_002077.1|	77	60	11M1I88M	*	0	0	CTCTGCCGGCCNCCACCGAGCGAGCGAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGC	IIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000720	0	gi|9632547|ref|NC_002077.1|	1719	70	100M	*	0	0	CAAAGCAGGAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGAGCCAACAAAAGACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000721	16	gi|9632547|ref|NC_002077.1|	2469	70	100M	*	0	0	CTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000722	0	gi|9632547|ref|NC_002077.1|	3155	60	100M	*	0	0	ACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000723	0	gi|9632547|ref|NC_002077.1|	218	70	100M	*	0	0	TGTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000724	0	gi|9632547|ref|NC_002077.1|	2128	60	100M	*	0	0	GGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000725	16	gi|9632547|ref|NC_002077.1|	1760	70	100M	*	0	0	CACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGAGCCAACAAAAGACCCGCCCCCGATGACGCGGATAAAAGCGAGCCCAAGCGGGCCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000726	0	gi|9632547|ref|NC_002077.1|	3050	70	100M	*	0	0	CAGCACCCCCTGGGGGTATTTTGATTTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000727	16	gi|9632547|ref|NC_002077.1|	896	70	100M	*	0	0	CTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000728	16	gi|9632547|ref|NC_002077.1|	4317	50	49M1D51M	*	0	0	GTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTCGCACCCGTTACCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000729	0	gi|9632547|ref|NC_002077.1|	1942	60	100M	*	0	0	TCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCCGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000730	16	gi|9632547|ref|NC_002077.1|	1124	70	100M	*	0	0	AAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTAGGCCCCGCTCCGCCCGCGGACATTAAAACCAACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000731	0	gi|9632547|ref|NC_002077.1|	3072	70	100M	*	0	0	GATTTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000732	0	gi|9632547|ref|NC_002077.1|	3390	60	100M	*	0	0	CGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTATCCACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000733	0	gi|9632547|ref|NC_002077.1|	2322	60	100M	*	0	0	GCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000734	16	gi|9632547|ref|NC_002077.1|	1247	50	100M	*	0	0	AACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCAGAAAAGGTTCGGGAAGCGCAACACCATCTGGCTGTTTGGNCCGGCCCCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000735	0	gi|9632547|ref|NC_002077.1|	3425	70	100M	*	0	0	TCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000736	0	gi|9632547|ref|NC_002077.1|	4143	70	100M	*	0	0	AAGAACCCGCCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000737	0	gi|9632547|ref|NC_002077.1|	4353	70	100M	*	0	0	GTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000738	0	gi|9632547|ref|NC_002077.1|	762	60	56M1D44M	*	0	0	GGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTAGCCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000739	0	gi|9632547|ref|NC_002077.1|	2798	60	100M	*	0	0	AGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAATGGGTAATGCCTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000740	16	gi|9632547|ref|NC_002077.1|	2817	60	100M	*	0	0	GGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGGAATTGGCATTGCGATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000741	16	gi|9632547|ref|NC_002077.1|	3457	70	100M	*	0	0	TCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000742	16	gi|9632547|ref|NC_002077.1|	3764	70	100M	*	0	0	TGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGTGTCATGATTTTTGGAAAAGAGAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000743	16	gi|9632547|ref|NC_002077.1|	717	70	100M	*	0	0	TGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000744	16	gi|9632547|ref|NC_002077.1|	3127	70	100M	*	0	0	ACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000745	16	gi|9632547|ref|NC_002077.1|	3886	50	100M	*	0	0	TGGACAATGTCATGATNACAGACGAAGAGGAAATTAAAGCCACCAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAG	IIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000746	16	gi|9632547|ref|NC_002077.1|	2434	50	100M	*	0	0	CGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGNAGCGTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000747	16	gi|9632547|ref|NC_002077.1|	4562	70	100M	*	0	0	CTTACGTCATCGGGTTACCCCTAGTGATGGAGTTGCCCACTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGCGGACCAAAGGTCCGCAGACGGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000748	16	gi|9632547|ref|NC_002077.1|	1940	70	100M	*	0	0	TCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000749	16	gi|9632547|ref|NC_002077.1|	845	70	100M	*	0	0	AACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
 adeno-reads100.fasta.000000750	4	*	0	0	*	*	0	0	CTCCCCCCAGATCACCATCTTCCGACGCAATCATTGAAGGGAAAGTTCTCATTGGTCCAGTTGACGCAGCCGTAGAAGGNCACGTGGGCGATGGCTTCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIII	RG:Z:none
-adeno-reads100.fasta.000000751	16	gi|9632547|ref|NC_002077.1|	1890	70	100M	*	0	0	ACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000752	16	gi|9632547|ref|NC_002077.1|	3387	60	100M	*	0	0	GGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACNTTCAGCTACACCTTTGAGGAAGTGCCTTTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000753	16	gi|9632547|ref|NC_002077.1|	2731	70	100M	*	0	0	GACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000754	0	gi|9632547|ref|NC_002077.1|	534	50	30M1I69M	*	0	0	GGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGGCCACGGGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000755	0	gi|9632547|ref|NC_002077.1|	666	70	100M	*	0	0	AGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000756	16	gi|9632547|ref|NC_002077.1|	1968	60	100M	*	0	0	TGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000757	0	gi|9632547|ref|NC_002077.1|	4174	60	100M	*	0	0	ACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000758	0	gi|9632547|ref|NC_002077.1|	1542	60	100M	*	0	0	AAAAGTGCAAGTCGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000759	0	gi|9632547|ref|NC_002077.1|	2316	60	100M	*	0	0	CCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000760	16	gi|9632547|ref|NC_002077.1|	3298	70	100M	*	0	0	ACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000761	0	gi|9632547|ref|NC_002077.1|	3508	50	100M	*	0	0	AGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACCGAACTCAAAATCAGTCCGGAAATGCCCAAAACAAGGACTTGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000762	0	gi|9632547|ref|NC_002077.1|	2732	70	100M	*	0	0	ACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000763	0	gi|9632547|ref|NC_002077.1|	899	70	100M	*	0	0	GTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000764	0	gi|9632547|ref|NC_002077.1|	2431	60	100M	*	0	0	CAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000765	16	gi|9632547|ref|NC_002077.1|	2139	70	100M	*	0	0	CCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000766	16	gi|9632547|ref|NC_002077.1|	2019	60	44M1D56M	*	0	0	TCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000767	0	gi|9632547|ref|NC_002077.1|	2564	70	100M	*	0	0	CGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000768	16	gi|9632547|ref|NC_002077.1|	3170	60	100M	*	0	0	CTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000769	16	gi|9632547|ref|NC_002077.1|	3771	60	100M	*	0	0	ATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGTGTCATGATTTTGGGAAAAGAGAGCGCCGGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000770	0	gi|9632547|ref|NC_002077.1|	2914	70	100M	*	0	0	ATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000771	0	gi|9632547|ref|NC_002077.1|	935	70	100M	*	0	0	GAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000772	0	gi|9632547|ref|NC_002077.1|	2438	70	100M	*	0	0	CCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000773	16	gi|9632547|ref|NC_002077.1|	1004	70	100M	*	0	0	TACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000774	16	gi|9632547|ref|NC_002077.1|	392	60	100M	*	0	0	CCGGGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAGGAATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000775	16	gi|9632547|ref|NC_002077.1|	2242	60	100M	*	0	0	TTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGAACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000776	0	gi|9632547|ref|NC_002077.1|	2820	60	100M	*	0	0	CCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGTTTCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000777	16	gi|9632547|ref|NC_002077.1|	210	50	100M	*	0	0	GTATTAGCTGTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCCATTTAGGGTATATANGGCCGAGTGAGCGAGCAGGATCTCCCTTTTGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000778	0	gi|9632547|ref|NC_002077.1|	1937	60	100M	*	0	0	TGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGANTCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000779	0	gi|9632547|ref|NC_002077.1|	1623	60	100M	*	0	0	GGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000780	16	gi|9632547|ref|NC_002077.1|	1327	40	54M3D46M	*	0	0	GCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000781	0	gi|9632547|ref|NC_002077.1|	711	60	6M1D94M	*	0	0	CGACCCGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000782	16	gi|9632547|ref|NC_002077.1|	1391	70	100M	*	0	0	TTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCCAAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000783	16	gi|9632547|ref|NC_002077.1|	1778	60	100M	*	0	0	CATGAGTTCTACGTCACAAAGGGTGGAGCCAACAAAAGACCCGCCCCCGATGACGCGGATAAAAGCGAGCCCAAGCGGGCCTGCCCCTCAGTCGCGGATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000784	0	gi|9632547|ref|NC_002077.1|	382	60	100M	*	0	0	CGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAGGAATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000785	16	gi|9632547|ref|NC_002077.1|	3207	60	100M	*	0	0	GGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000786	16	gi|9632547|ref|NC_002077.1|	924	60	87M1I12M	*	0	0	GCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGNAGCTGGTCGGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000787	16	gi|9632547|ref|NC_002077.1|	2983	30	34M4I62M	*	0	0	ACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000788	16	gi|9632547|ref|NC_002077.1|	3066	60	100M	*	0	0	TATTTTGATTTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGGCTCAACTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000789	16	gi|9632547|ref|NC_002077.1|	2235	60	100M	*	0	0	GGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTAAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000790	16	gi|9632547|ref|NC_002077.1|	630	60	17M1I82M	*	0	0	GGGTCAAATCCATGGTGCCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000791	16	gi|9632547|ref|NC_002077.1|	1964	60	100M	*	0	0	ATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGANTGTTCAGAGTGCTTCCCCGGCGTGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000792	0	gi|9632547|ref|NC_002077.1|	4374	60	67M1D33M	*	0	0	AATGGACTTTATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTAATCAATAAACCGGTTGATTCGTTTCAGTTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000793	16	gi|9632547|ref|NC_002077.1|	2780	70	100M	*	0	0	ACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000794	16	gi|9632547|ref|NC_002077.1|	375	40	100M	*	0	0	ACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAGGAATGGNATCTGCCCCCGGATTCNGACATGGATCTGAATCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000795	16	gi|9632547|ref|NC_002077.1|	1545	50	100M	*	0	0	AGTGCAAGTCGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGNACAGCACCACCTGCGAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000796	16	gi|9632547|ref|NC_002077.1|	662	60	94M1D6M	*	0	0	AGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCGGAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000797	16	gi|9632547|ref|NC_002077.1|	2503	70	100M	*	0	0	ACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000798	16	gi|9632547|ref|NC_002077.1|	616	70	100M	*	0	0	GGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000799	16	gi|9632547|ref|NC_002077.1|	2923	40	95M2I3M	*	0	0	GGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGN	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000800	0	gi|9632547|ref|NC_002077.1|	2451	60	100M	*	0	0	AAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGGCGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000801	16	gi|9632547|ref|NC_002077.1|	2954	30	63M4I33M	*	0	0	CCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000802	0	gi|9632547|ref|NC_002077.1|	3121	60	100M	*	0	0	TCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACGACCAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000803	0	gi|9632547|ref|NC_002077.1|	3169	40	97M1D3M	*	0	0	TGTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGATAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000804	16	gi|9632547|ref|NC_002077.1|	3774	70	100M	*	0	0	ATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGTGTCATGATTTTTGGAAAAGAGAGCGCCGGAGCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000805	16	gi|9632547|ref|NC_002077.1|	2551	70	100M	*	0	0	TTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000806	0	gi|9632547|ref|NC_002077.1|	3641	50	38M1D62M	*	0	0	TCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCGCAGCACGTTTCTAAAACAAAAACAGACAACAACAACAGCAATTTTACCTGGACTGGTGCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000807	16	gi|9632547|ref|NC_002077.1|	4481	70	100M	*	0	0	GTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAAAAGACTTACGTCATCGGGTTACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000808	16	gi|9632547|ref|NC_002077.1|	2119	60	100M	*	0	0	TCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000809	0	gi|9632547|ref|NC_002077.1|	2530	70	100M	*	0	0	GTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000810	0	gi|9632547|ref|NC_002077.1|	3292	70	100M	*	0	0	CTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000811	0	gi|9632547|ref|NC_002077.1|	3434	60	100M	*	0	0	GAGAACGNGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCT	IIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000812	16	gi|9632547|ref|NC_002077.1|	2928	30	89M4I7M	*	0	0	GGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000813	0	gi|9632547|ref|NC_002077.1|	2700	70	100M	*	0	0	GGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000814	16	gi|9632547|ref|NC_002077.1|	2803	60	100M	*	0	0	CCCCCGCGGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000815	0	gi|9632547|ref|NC_002077.1|	1819	60	100M	*	0	0	CCCCCCCGATGACGCGGATAAAAGCGAGCCCAAGCGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000816	0	gi|9632547|ref|NC_002077.1|	1208	70	100M	*	0	0	GACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCAGAAAAGGTTCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000817	0	gi|9632547|ref|NC_002077.1|	3601	40	100M	*	0	0	ACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACCGGCTACCTGGACCCTGTTATCGGCAGCANCGCGTATCTAAAACAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000818	0	gi|9632547|ref|NC_002077.1|	298	60	100M	*	0	0	NTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGC	!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000819	16	gi|9632547|ref|NC_002077.1|	1863	60	100M	*	0	0	CCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGNCATGCTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000820	16	gi|9632547|ref|NC_002077.1|	1076	50	100M	*	0	0	GCCTCGTACATCTCCTTCAACGCCNCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGNGCTGACCAAATCCGCGC	IIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000821	0	gi|9632547|ref|NC_002077.1|	4152	70	100M	*	0	0	CCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000822	16	gi|9632547|ref|NC_002077.1|	1321	40	60M3D40M	*	0	0	CATCTGGCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000823	0	gi|9632547|ref|NC_002077.1|	3693	60	100M	*	0	0	AAAACAAAAACAGACAACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAACCCATCATCAACCCTGGCACTGCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000824	0	gi|9632547|ref|NC_002077.1|	976	70	100M	*	0	0	TGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000825	16	gi|9632547|ref|NC_002077.1|	1246	70	100M	*	0	0	GAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCAGAAAAGGTTCGGGAAGCGCAACACCATCTGGCTGTTTGGGCCGGCCACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000826	0	gi|9632547|ref|NC_002077.1|	2173	70	100M	*	0	0	CGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000827	0	gi|9632547|ref|NC_002077.1|	1071	70	100M	*	0	0	ACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000828	0	gi|9632547|ref|NC_002077.1|	3310	60	100M	*	0	0	TCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000829	0	gi|9632547|ref|NC_002077.1|	2996	30	21M4I75M	*	0	0	GCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTTCAACAGATTCCACTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000830	16	gi|9632547|ref|NC_002077.1|	881	70	100M	*	0	0	GCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000831	0	gi|9632547|ref|NC_002077.1|	2272	70	100M	*	0	0	AGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000832	16	gi|9632547|ref|NC_002077.1|	2958	30	59M4I37M	*	0	0	ACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000833	16	gi|9632547|ref|NC_002077.1|	1036	50	100M	*	0	0	GGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCGCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000834	0	gi|9632547|ref|NC_002077.1|	3480	60	100M	*	0	0	CCTTTCCACAGCAGCTACGCGCTCAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACAGAACTCAAAATCAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000835	0	gi|9632547|ref|NC_002077.1|	1625	60	100M	*	0	0	AACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAAAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000836	16	gi|9632547|ref|NC_002077.1|	2389	40	13M1D87M	*	0	0	TCAACGGACTCGAAAGGGGGAGCCCCTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000837	16	gi|9632547|ref|NC_002077.1|	632	60	100M	*	0	0	GTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAACTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000838	0	gi|9632547|ref|NC_002077.1|	3921	70	100M	*	0	0	AAAGCCACTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAGCACAGACCCTGCGACCGGAGATGTGCATGCTATGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000839	16	gi|9632547|ref|NC_002077.1|	961	60	100M	*	0	0	CAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGAACGGGGCATCACCTCCGAGAAGCAGTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000840	16	gi|9632547|ref|NC_002077.1|	3421	60	52M1D48M	*	0	0	CTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000841	16	gi|9632547|ref|NC_002077.1|	2836	60	100M	*	0	0	CAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACCTGGCTGGGCGACAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000842	16	gi|9632547|ref|NC_002077.1|	998	70	100M	*	0	0	GCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000843	16	gi|9632547|ref|NC_002077.1|	4528	60	82M1D18M	*	0	0	CATTAACTGCTTGGTTGCGCTTCGCGATAAAAGACTTACGTCATCGGGTTACCCCTAGTGATGGAGTTGCCCACTCCCTCTCGCGCGCTCGCTCGCTCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000844	16	gi|9632547|ref|NC_002077.1|	3335	70	100M	*	0	0	CATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000845	0	gi|9632547|ref|NC_002077.1|	2822	70	100M	*	0	0	TACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000846	16	gi|9632547|ref|NC_002077.1|	2046	60	100M	*	0	0	AGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000847	16	gi|9632547|ref|NC_002077.1|	1117	50	100M	*	0	0	CCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTATGCCCCGCTCCGCCCGCGCACATTAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000848	16	gi|9632547|ref|NC_002077.1|	3292	60	100M	*	0	0	CTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGTAGCCAAGCCGTGGGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000849	16	gi|9632547|ref|NC_002077.1|	2618	50	89M1D11M	*	0	0	TGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGAAGGCCAGCAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000850	0	gi|9632547|ref|NC_002077.1|	404	60	100M	*	0	0	GACTCGTTTGTGAGCTGGGTGGCCGAGAAGGAATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000851	0	gi|9632547|ref|NC_002077.1|	866	70	100M	*	0	0	GCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000852	16	gi|9632547|ref|NC_002077.1|	4289	60	60M1I39M	*	0	0	AGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCTCAACGTTGATTTTACTGTGGACAACAATGGACTTTATAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000853	16	gi|9632547|ref|NC_002077.1|	412	60	100M	*	0	0	TGTGAGCTGGGTGGCCGAGAAGGAATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000854	0	gi|9632547|ref|NC_002077.1|	2566	70	100M	*	0	0	GGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000855	0	gi|9632547|ref|NC_002077.1|	2399	60	100M	*	0	0	CGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000856	0	gi|9632547|ref|NC_002077.1|	260	60	57M1D43M	*	0	0	CCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000857	0	gi|9632547|ref|NC_002077.1|	2930	30	87M4I9M	*	0	0	CGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000858	0	gi|9632547|ref|NC_002077.1|	1385	50	43M1I54M1I1M	*	0	0	GTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCGCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000859	16	gi|9632547|ref|NC_002077.1|	3184	60	100M	*	0	0	TCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000860	0	gi|9632547|ref|NC_002077.1|	2447	70	100M	*	0	0	CGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000861	16	gi|9632547|ref|NC_002077.1|	4158	60	100M	*	0	0	CAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000862	16	gi|9632547|ref|NC_002077.1|	2568	60	100M	*	0	0	CGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTGAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000863	16	gi|9632547|ref|NC_002077.1|	2010	60	92M1D8M	*	0	0	ACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAACTCTGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000864	0	gi|9632547|ref|NC_002077.1|	143	70	100M	*	0	0	ATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCTGACGTAAATTACGTCATAGGGGAGTGGTCCTGTATTAGCTGTCACGTGAGTGCTTTTGCGACAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000865	16	gi|9632547|ref|NC_002077.1|	1025	70	100M	*	0	0	CTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000866	0	gi|9632547|ref|NC_002077.1|	908	50	60M1D40M	*	0	0	CACCTGACCCACGTCACCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000867	16	gi|9632547|ref|NC_002077.1|	3328	40	100M	*	0	0	ACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTAGGACGTTCATCCTCTTACTACCTGGAATATTTCCCTTCTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000868	0	gi|9632547|ref|NC_002077.1|	4336	50	60M1I39M	*	0	0	ATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCNGCCCCATTGGCACCCGTTACCTTACGCGTCCCCTGTAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000869	0	gi|9632547|ref|NC_002077.1|	3143	70	100M	*	0	0	CCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000870	16	gi|9632547|ref|NC_002077.1|	2012	50	45M1D55M	*	0	0	ATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGCGTGTCTGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000871	0	gi|9632547|ref|NC_002077.1|	2586	70	100M	*	0	0	AAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000872	16	gi|9632547|ref|NC_002077.1|	2782	60	5M1I94M	*	0	0	CTCTCGGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000873	16	gi|9632547|ref|NC_002077.1|	1059	70	100M	*	0	0	GGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000874	16	gi|9632547|ref|NC_002077.1|	4384	70	100M	*	0	0	ATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000875	16	gi|9632547|ref|NC_002077.1|	1011	60	100M	*	0	0	AGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCTCTTCCAACTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000876	0	gi|9632547|ref|NC_002077.1|	2167	50	100M	*	0	0	GGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTCGCTCAAGGACAACCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000877	0	gi|9632547|ref|NC_002077.1|	743	60	100M	*	0	0	ACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTNGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!II	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000878	16	gi|9632547|ref|NC_002077.1|	3299	40	100M	*	0	0	CCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCAGCAATACGGCTACCTGACGCTTAACAATGGCAGCCAAGCCGTGGGGCGTTCATCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000879	0	gi|9632547|ref|NC_002077.1|	1913	70	100M	*	0	0	TTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000880	0	gi|9632547|ref|NC_002077.1|	2297	60	100M	*	0	0	GAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000881	16	gi|9632547|ref|NC_002077.1|	2656	40	43M1D7M1I49M	*	0	0	CGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATGGCAAGACCAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000882	16	gi|9632547|ref|NC_002077.1|	3217	60	100M	*	0	0	CCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000883	0	gi|9632547|ref|NC_002077.1|	2498	70	100M	*	0	0	GTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000884	16	gi|9632547|ref|NC_002077.1|	2364	50	100M	*	0	0	CCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000885	0	gi|9632547|ref|NC_002077.1|	2287	50	100M	*	0	0	GGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGGCGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000886	0	gi|9632547|ref|NC_002077.1|	1632	60	100M	*	0	0	CCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAAAGCAGGAAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000887	0	gi|9632547|ref|NC_002077.1|	2000	60	100M	*	0	0	CAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAACAGGACGTATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000888	0	gi|9632547|ref|NC_002077.1|	2508	70	100M	*	0	0	GCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000889	0	gi|9632547|ref|NC_002077.1|	3129	70	100M	*	0	0	AACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000890	16	gi|9632547|ref|NC_002077.1|	3557	70	100M	*	0	0	CCTGAACAGAACTCAAAATCAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000891	0	gi|9632547|ref|NC_002077.1|	1022	70	100M	*	0	0	TGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000892	0	gi|9632547|ref|NC_002077.1|	1620	60	100M	*	0	0	ACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000893	16	gi|9632547|ref|NC_002077.1|	3284	70	100M	*	0	0	CCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000894	0	gi|9632547|ref|NC_002077.1|	1597	60	100M	*	0	0	CACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000895	0	gi|9632547|ref|NC_002077.1|	3867	70	100M	*	0	0	GGAGCTTCAAACACTGCATTGGACAATGTCATGATTACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000896	16	gi|9632547|ref|NC_002077.1|	1922	70	100M	*	0	0	AGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000897	16	gi|9632547|ref|NC_002077.1|	3847	60	100M	*	0	0	TTTTTGGAAAAGAGAGCGCCGGAGCTTCAAACACTGCATTGGACAATGTCATGATTACAGACGAAGAGGAAATTAAAGCCACTGACCCTGTGGCCACCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000898	0	gi|9632547|ref|NC_002077.1|	3048	60	100M	*	0	0	TACAGCACCCCCTGGGGGTATTTTGATTTCAACAGATTCCTCTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000899	16	gi|9632547|ref|NC_002077.1|	1986	70	100M	*	0	0	GCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000900	16	gi|9632547|ref|NC_002077.1|	1349	30	32M3D68M	*	0	0	GGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTACCTTCAATGATTGCGTCGACAAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000901	16	gi|9632547|ref|NC_002077.1|	862	70	100M	*	0	0	AAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000902	0	gi|9632547|ref|NC_002077.1|	972	70	100M	*	0	0	CGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000903	0	gi|9632547|ref|NC_002077.1|	646	60	100M	*	0	0	GCTGGGCCGCTTCCTGAGTCAGATAAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000904	16	gi|9632547|ref|NC_002077.1|	1199	70	100M	*	0	0	CCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000905	0	gi|9632547|ref|NC_002077.1|	2494	60	94M1D6M	*	0	0	TGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAAAGCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000906	16	gi|9632547|ref|NC_002077.1|	3393	70	100M	*	0	0	TCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000907	0	gi|9632547|ref|NC_002077.1|	2001	60	100M	*	0	0	AGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGNTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000908	16	gi|9632547|ref|NC_002077.1|	2836	60	97M1I2M	*	0	0	CAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACATGGCTGGGCGATCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000909	16	gi|9632547|ref|NC_002077.1|	280	70	100M	*	0	0	CGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000910	0	gi|9632547|ref|NC_002077.1|	602	40	12M1I87M	*	0	0	CACCTCCATATTACTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGAGACAAGCTGGTGCAGACCATCTACAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000911	0	gi|9632547|ref|NC_002077.1|	499	70	100M	*	0	0	GGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTCCTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000912	16	gi|9632547|ref|NC_002077.1|	3271	60	100M	*	0	0	AGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACAGCTACCTGACGCTCAACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000913	16	gi|9632547|ref|NC_002077.1|	4429	70	100M	*	0	0	TGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000914	16	gi|9632547|ref|NC_002077.1|	3213	40	14M1I85M	*	0	0	ACAACCATCGCTAATTAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000915	0	gi|9632547|ref|NC_002077.1|	254	60	72M1I27M	*	0	0	ACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGGCAGCAGCCATGCCGGGCTTCTACGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000916	0	gi|9632547|ref|NC_002077.1|	3280	70	100M	*	0	0	ACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000917	16	gi|9632547|ref|NC_002077.1|	193	60	100M	*	0	0	CATAGGGGAGTGGTCCTGTATTAGCTGTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCCATTTAGGGTATATATGGCCGAGTTAGCGAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000918	0	gi|9632547|ref|NC_002077.1|	1401	60	18M1D82M	*	0	0	GCGTCAACTGGACCAATGGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCCAAGGTCGTGGAGTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000919	16	gi|9632547|ref|NC_002077.1|	4332	70	100M	*	0	0	AATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000920	16	gi|9632547|ref|NC_002077.1|	3529	60	46M1D54M	*	0	0	ATCCTCTCATCGACCAATACCTGTATTACCTGAACAGAACTCAAAACAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000921	0	gi|9632547|ref|NC_002077.1|	4163	60	100M	*	0	0	CCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000922	0	gi|9632547|ref|NC_002077.1|	3408	70	100M	*	0	0	CTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000923	16	gi|9632547|ref|NC_002077.1|	3247	60	100M	*	0	0	AAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000924	16	gi|9632547|ref|NC_002077.1|	638	60	100M	*	0	0	TCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTTCCCAACTGGTTCGCGGTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000925	16	gi|9632547|ref|NC_002077.1|	1030	70	100M	*	0	0	GGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000926	16	gi|9632547|ref|NC_002077.1|	4459	50	100M	*	0	0	GATTCGTTTCAGTTGAACTTTTGTCTGCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000927	0	gi|9632547|ref|NC_002077.1|	1190	60	100M	*	0	0	GGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGNT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!I	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000928	0	gi|9632547|ref|NC_002077.1|	2929	30	88M4I8M	*	0	0	GCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000929	16	gi|9632547|ref|NC_002077.1|	927	50	100M	*	0	0	AGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTAGTCGGGTGNCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!II	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000930	16	gi|9632547|ref|NC_002077.1|	3361	70	100M	*	0	0	CGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000931	16	gi|9632547|ref|NC_002077.1|	210	70	100M	*	0	0	GTATTAGCTGTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000932	0	gi|9632547|ref|NC_002077.1|	667	60	100M	*	0	0	GATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCTAGACGCGTAATGGCGCCGGAGGGGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000933	16	gi|9632547|ref|NC_002077.1|	1311	20	2M1I14M1I54M3D28M	*	0	0	AGACGCAACACCATCTGNGCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGG	IIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000934	16	gi|9632547|ref|NC_002077.1|	2691	60	9M1D91M	*	0	0	TCGGGCATCGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000935	16	gi|9632547|ref|NC_002077.1|	2156	50	100M	*	0	0	GCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAACAATAAATGACTTAACCCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000936	0	gi|9632547|ref|NC_002077.1|	1022	70	100M	*	0	0	TGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000937	16	gi|9632547|ref|NC_002077.1|	1993	60	100M	*	0	0	AATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000938	0	gi|9632547|ref|NC_002077.1|	1727	70	100M	*	0	0	GAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGAGCCAACAAAAGACCCGCCCCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000939	0	gi|9632547|ref|NC_002077.1|	71	70	100M	*	0	0	GCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000940	16	gi|9632547|ref|NC_002077.1|	3714	70	100M	*	0	0	AACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000941	0	gi|9632547|ref|NC_002077.1|	1908	60	100M	*	0	0	TGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGTATGAATCAGAATTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000942	16	gi|9632547|ref|NC_002077.1|	3631	70	100M	*	0	0	GCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAAACAGACAACAACAACAGCAATTTTACCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000943	0	gi|9632547|ref|NC_002077.1|	2847	60	100M	*	0	0	GCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATCGCGATTCCACATGGCTGGGCGACAGAGTCATCACCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000944	0	gi|9632547|ref|NC_002077.1|	702	50	17M1D20M1D63M	*	0	0	GGATCGAGCCGACCCTGCCAACTGGTTCGCGGTGACCAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000945	0	gi|9632547|ref|NC_002077.1|	359	60	100M	*	0	0	ATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAGGAATGGGATCTGCCCCCGGATTCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000946	16	gi|9632547|ref|NC_002077.1|	3185	60	100M	*	0	0	CAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000947	0	gi|9632547|ref|NC_002077.1|	494	70	100M	*	0	0	ACCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000948	0	gi|9632547|ref|NC_002077.1|	825	60	100M	*	0	0	AGCTGCAGTGGGCGTGGACTAACATGGAGGTGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000949	0	gi|9632547|ref|NC_002077.1|	4298	70	100M	*	0	0	CAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000950	16	gi|9632547|ref|NC_002077.1|	3687	70	100M	*	0	0	GTTTCTAAAACAAAAACAGACAACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000951	0	gi|9632547|ref|NC_002077.1|	3331	70	100M	*	0	0	TGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000952	0	gi|9632547|ref|NC_002077.1|	765	70	100M	*	0	0	GGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000953	0	gi|9632547|ref|NC_002077.1|	2223	60	100M	*	0	0	ATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000954	0	gi|9632547|ref|NC_002077.1|	1852	70	100M	*	0	0	GCGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000955	0	gi|9632547|ref|NC_002077.1|	2556	50	100M	*	0	0	GGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGAGCCAAGACGGCTCCTGGAAAGAAACGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000956	16	gi|9632547|ref|NC_002077.1|	2734	70	100M	*	0	0	TCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000957	0	gi|9632547|ref|NC_002077.1|	2023	70	100M	*	0	0	GCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000958	0	gi|9632547|ref|NC_002077.1|	1174	50	16M1I83M	*	0	0	GCCTGACTACCTGGTAGGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000959	0	gi|9632547|ref|NC_002077.1|	1553	60	100M	*	0	0	TCGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000960	16	gi|9632547|ref|NC_002077.1|	3717	70	100M	*	0	0	AGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000961	0	gi|9632547|ref|NC_002077.1|	213	60	100M	*	0	0	TTAGCTGTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000962	16	gi|9632547|ref|NC_002077.1|	3627	70	100M	*	0	0	GCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAAACAGACAACAACAACAGCAATTTTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000963	16	gi|9632547|ref|NC_002077.1|	1054	70	100M	*	0	0	GCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000964	0	gi|9632547|ref|NC_002077.1|	2194	70	100M	*	0	0	TTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000965	16	gi|9632547|ref|NC_002077.1|	802	70	100M	*	0	0	CCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000966	16	gi|9632547|ref|NC_002077.1|	2763	70	100M	*	0	0	TCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000967	16	gi|9632547|ref|NC_002077.1|	872	70	100M	*	0	0	TTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000968	0	gi|9632547|ref|NC_002077.1|	3421	70	100M	*	0	0	CTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000969	16	gi|9632547|ref|NC_002077.1|	4453	70	100M	*	0	0	CCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000970	16	gi|9632547|ref|NC_002077.1|	3846	70	100M	*	0	0	ATTTTTGGAAAAGAGAGCGCCGGAGCTTCAAACACTGCATTGGACAATGTCATGATTACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCACCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000971	0	gi|9632547|ref|NC_002077.1|	3494	70	100M	*	0	0	CTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACAGAACTCAAAATCAGTCCGGAAGTGCCCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000972	0	gi|9632547|ref|NC_002077.1|	833	70	100M	*	0	0	TGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000973	16	gi|9632547|ref|NC_002077.1|	2098	50	97M1I2M	*	0	0	TCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000974	16	gi|9632547|ref|NC_002077.1|	2560	70	100M	*	0	0	ACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000975	0	gi|9632547|ref|NC_002077.1|	102	70	100M	*	0	0	AGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCTGACGTAAATTACGTCATAGGGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000976	0	gi|9632547|ref|NC_002077.1|	2779	60	100M	*	0	0	AACCTCTCGGAGAACCTCCAGCCACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000977	16	gi|9632547|ref|NC_002077.1|	2256	70	100M	*	0	0	GAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000978	0	gi|9632547|ref|NC_002077.1|	1910	50	49M1I50M	*	0	0	GACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCNTTCAGATGCTGTTTCCCTGCAAGACATGCGAAAGAATGAATCAGAATTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000979	0	gi|9632547|ref|NC_002077.1|	2257	70	100M	*	0	0	AGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000980	16	gi|9632547|ref|NC_002077.1|	2415	60	100M	*	0	0	GTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000981	0	gi|9632547|ref|NC_002077.1|	821	70	100M	*	0	0	CCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000982	0	gi|9632547|ref|NC_002077.1|	4297	70	100M	*	0	0	GCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000983	16	gi|9632547|ref|NC_002077.1|	2397	50	100M	*	0	0	CTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGTGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000984	16	gi|9632547|ref|NC_002077.1|	3363	70	100M	*	0	0	CTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000985	0	gi|9632547|ref|NC_002077.1|	3497	50	68M1D32M	*	0	0	CGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTTTTACCTGAACAAACTCAAAATCAGTCCGGAAGTGCCCAAAACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000986	16	gi|9632547|ref|NC_002077.1|	3373	60	14M1I85M	*	0	0	GCAGCCAAGCCGTGNGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTG	IIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000987	16	gi|9632547|ref|NC_002077.1|	3210	60	100M	*	0	0	GTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000988	16	gi|9632547|ref|NC_002077.1|	844	70	100M	*	0	0	TAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000989	16	gi|9632547|ref|NC_002077.1|	8	3	37M1D63M	*	0	0	CTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTTTGCCGGCCCCACTGAGCGAGCGAGCGCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:2	X1:i:0	XT:A:R	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4601,4702,-,3;
-adeno-reads100.fasta.000000990	16	gi|9632547|ref|NC_002077.1|	573	70	100M	*	0	0	TTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000991	0	gi|9632547|ref|NC_002077.1|	874	60	100M	*	0	0	GAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGNACCCCAATTCTGACGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000992	0	gi|9632547|ref|NC_002077.1|	4392	70	100M	*	0	0	CCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000993	0	gi|9632547|ref|NC_002077.1|	2478	50	100M	*	0	0	GGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCATTTGGGGCCAACCTCGGGCGAGCAGTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000994	0	gi|9632547|ref|NC_002077.1|	3654	50	17M1D59M1I23M	*	0	0	TGGCTACCTGGACCCTGTATCGGCAGCAGCGCGTTTCTAAAACAAAAACAGACAACAACAACAGCAATTTTACCTGAGACTGGTGCTTCAAAATATAACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000995	0	gi|9632547|ref|NC_002077.1|	49	70	100M	*	0	0	CCAAAGGTCCGCAGACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000996	16	gi|9632547|ref|NC_002077.1|	592	60	84M1I15M	*	0	0	GTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGATCAAGCTGGTGCAGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000997	16	gi|9632547|ref|NC_002077.1|	2292	60	100M	*	0	0	GACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000998	0	gi|9632547|ref|NC_002077.1|	2702	70	100M	*	0	0	CAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
-adeno-reads100.fasta.000000999	0	gi|9632547|ref|NC_002077.1|	348	40	100M	*	0	0	ACGAGATCGTGATTAAGGTGTCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAGGAATGGGATCTGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	XT:A:U	RG:Z:none
+adeno-reads100.fasta.000000751	16	gi|9632547|ref|NC_002077.1|	1890	70	100M	*	0	0	ACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000752	16	gi|9632547|ref|NC_002077.1|	3387	60	100M	*	0	0	GGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACNTTCAGCTACACCTTTGAGGAAGTGCCTTTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000753	16	gi|9632547|ref|NC_002077.1|	2731	70	100M	*	0	0	GACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000754	0	gi|9632547|ref|NC_002077.1|	534	50	30M1I69M	*	0	0	GGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGGCCACGGGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000755	0	gi|9632547|ref|NC_002077.1|	666	70	100M	*	0	0	AGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000756	16	gi|9632547|ref|NC_002077.1|	1968	60	100M	*	0	0	TGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000757	0	gi|9632547|ref|NC_002077.1|	4174	60	100M	*	0	0	ACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGTGTGGAAATTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000758	0	gi|9632547|ref|NC_002077.1|	1542	60	100M	*	0	0	AAAAGTGCAAGTCGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000759	0	gi|9632547|ref|NC_002077.1|	2316	60	100M	*	0	0	CCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000760	16	gi|9632547|ref|NC_002077.1|	3298	70	100M	*	0	0	ACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000761	0	gi|9632547|ref|NC_002077.1|	3508	50	100M	*	0	0	AGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACCGAACTCAAAATCAGTCCGGAAATGCCCAAAACAAGGACTTGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000762	0	gi|9632547|ref|NC_002077.1|	2732	70	100M	*	0	0	ACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000763	0	gi|9632547|ref|NC_002077.1|	899	70	100M	*	0	0	GTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000764	0	gi|9632547|ref|NC_002077.1|	2431	60	100M	*	0	0	CAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000765	16	gi|9632547|ref|NC_002077.1|	2139	70	100M	*	0	0	CCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000766	16	gi|9632547|ref|NC_002077.1|	2019	60	44M1D56M	*	0	0	TCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000767	0	gi|9632547|ref|NC_002077.1|	2564	70	100M	*	0	0	CGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000768	16	gi|9632547|ref|NC_002077.1|	3170	60	100M	*	0	0	CTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000769	16	gi|9632547|ref|NC_002077.1|	3771	60	100M	*	0	0	ATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGTGTCATGATTTTGGGAAAAGAGAGCGCCGGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000770	0	gi|9632547|ref|NC_002077.1|	2914	70	100M	*	0	0	ATTCCACATGGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000771	0	gi|9632547|ref|NC_002077.1|	935	70	100M	*	0	0	GAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000772	0	gi|9632547|ref|NC_002077.1|	2438	70	100M	*	0	0	CCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000773	16	gi|9632547|ref|NC_002077.1|	1004	70	100M	*	0	0	TACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000774	16	gi|9632547|ref|NC_002077.1|	392	60	100M	*	0	0	CCGGGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAGGAATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000775	16	gi|9632547|ref|NC_002077.1|	2242	60	100M	*	0	0	TTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGAACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000776	0	gi|9632547|ref|NC_002077.1|	2820	60	100M	*	0	0	CCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGTTTCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000777	16	gi|9632547|ref|NC_002077.1|	210	50	100M	*	0	0	GTATTAGCTGTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCCATTTAGGGTATATANGGCCGAGTGAGCGAGCAGGATCTCCCTTTTGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000778	0	gi|9632547|ref|NC_002077.1|	1937	60	100M	*	0	0	TGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGANTCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000779	0	gi|9632547|ref|NC_002077.1|	1623	60	100M	*	0	0	GGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000780	16	gi|9632547|ref|NC_002077.1|	1327	40	54M3D46M	*	0	0	GCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000781	0	gi|9632547|ref|NC_002077.1|	711	60	6M1D94M	*	0	0	CGACCCGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000782	16	gi|9632547|ref|NC_002077.1|	1391	70	100M	*	0	0	TTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCCAAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000783	16	gi|9632547|ref|NC_002077.1|	1778	60	100M	*	0	0	CATGAGTTCTACGTCACAAAGGGTGGAGCCAACAAAAGACCCGCCCCCGATGACGCGGATAAAAGCGAGCCCAAGCGGGCCTGCCCCTCAGTCGCGGATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000784	0	gi|9632547|ref|NC_002077.1|	382	60	100M	*	0	0	CGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAGGAATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000785	16	gi|9632547|ref|NC_002077.1|	3207	60	100M	*	0	0	GGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000786	16	gi|9632547|ref|NC_002077.1|	924	60	87M1I12M	*	0	0	GCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGNAGCTGGTCGGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000787	16	gi|9632547|ref|NC_002077.1|	2983	30	34M4I62M	*	0	0	ACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000788	16	gi|9632547|ref|NC_002077.1|	3066	60	100M	*	0	0	TATTTTGATTTCAACAGATTCCACTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGCCCAAGAGGCTCAACTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000789	16	gi|9632547|ref|NC_002077.1|	2235	60	100M	*	0	0	GGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTAAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000790	16	gi|9632547|ref|NC_002077.1|	630	60	17M1I82M	*	0	0	GGGTCAAATCCATGGTGCCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000791	16	gi|9632547|ref|NC_002077.1|	1964	60	100M	*	0	0	ATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGANTGTTCAGAGTGCTTCCCCGGCGTGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000792	0	gi|9632547|ref|NC_002077.1|	4374	60	67M1D33M	*	0	0	AATGGACTTTATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTAATCAATAAACCGGTTGATTCGTTTCAGTTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000793	16	gi|9632547|ref|NC_002077.1|	2780	70	100M	*	0	0	ACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000794	16	gi|9632547|ref|NC_002077.1|	375	40	100M	*	0	0	ACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAGGAATGGNATCTGCCCCCGGATTCNGACATGGATCTGAATCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000795	16	gi|9632547|ref|NC_002077.1|	1545	50	100M	*	0	0	AGTGCAAGTCGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGNACAGCACCACCTGCGAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000796	16	gi|9632547|ref|NC_002077.1|	662	60	94M1D6M	*	0	0	AGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACGCGTAATGGCGCGGAGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000797	16	gi|9632547|ref|NC_002077.1|	2503	70	100M	*	0	0	ACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000798	16	gi|9632547|ref|NC_002077.1|	616	70	100M	*	0	0	GGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000799	16	gi|9632547|ref|NC_002077.1|	2923	40	95M2I3M	*	0	0	GGCTGGGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGN	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000800	0	gi|9632547|ref|NC_002077.1|	2451	60	100M	*	0	0	AAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGGCGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000801	16	gi|9632547|ref|NC_002077.1|	2954	30	63M4I33M	*	0	0	CCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000802	0	gi|9632547|ref|NC_002077.1|	3121	60	100M	*	0	0	TCATCAACAACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACGACCAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000803	0	gi|9632547|ref|NC_002077.1|	3169	40	97M1D3M	*	0	0	TGTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGATAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000804	16	gi|9632547|ref|NC_002077.1|	3774	70	100M	*	0	0	ATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAGACAAGTTCTTTCCCATGAGCGGTGTCATGATTTTTGGAAAAGAGAGCGCCGGAGCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000805	16	gi|9632547|ref|NC_002077.1|	2551	70	100M	*	0	0	TTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000806	0	gi|9632547|ref|NC_002077.1|	3641	50	38M1D62M	*	0	0	TCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCGCAGCACGTTTCTAAAACAAAAACAGACAACAACAACAGCAATTTTACCTGGACTGGTGCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000807	16	gi|9632547|ref|NC_002077.1|	4481	70	100M	*	0	0	GTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAAAAGACTTACGTCATCGGGTTACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000808	16	gi|9632547|ref|NC_002077.1|	2119	60	100M	*	0	0	TCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000809	0	gi|9632547|ref|NC_002077.1|	2530	70	100M	*	0	0	GTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000810	0	gi|9632547|ref|NC_002077.1|	3292	70	100M	*	0	0	CTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000811	0	gi|9632547|ref|NC_002077.1|	3434	60	100M	*	0	0	GAGAACGNGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCT	IIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000812	16	gi|9632547|ref|NC_002077.1|	2928	30	89M4I7M	*	0	0	GGCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000813	0	gi|9632547|ref|NC_002077.1|	2700	70	100M	*	0	0	GGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000814	16	gi|9632547|ref|NC_002077.1|	2803	60	100M	*	0	0	CCCCCGCGGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000815	0	gi|9632547|ref|NC_002077.1|	1819	60	100M	*	0	0	CCCCCCCGATGACGCGGATAAAAGCGAGCCCAAGCGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000816	0	gi|9632547|ref|NC_002077.1|	1208	70	100M	*	0	0	GACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCAGAAAAGGTTCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000817	0	gi|9632547|ref|NC_002077.1|	3601	40	100M	*	0	0	ACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACCGGCTACCTGGACCCTGTTATCGGCAGCANCGCGTATCTAAAACAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000818	0	gi|9632547|ref|NC_002077.1|	298	60	100M	*	0	0	NTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGC	!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000819	16	gi|9632547|ref|NC_002077.1|	1863	60	100M	*	0	0	CCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGNCATGCTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000820	16	gi|9632547|ref|NC_002077.1|	1076	50	100M	*	0	0	GCCTCGTACATCTCCTTCAACGCCNCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGNGCTGACCAAATCCGCGC	IIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000821	0	gi|9632547|ref|NC_002077.1|	4152	70	100M	*	0	0	CCTCCTCAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000822	16	gi|9632547|ref|NC_002077.1|	1321	40	60M3D40M	*	0	0	CATCTGGCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000823	0	gi|9632547|ref|NC_002077.1|	3693	60	100M	*	0	0	AAAACAAAAACAGACAACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAACCCATCATCAACCCTGGCACTGCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000824	0	gi|9632547|ref|NC_002077.1|	976	70	100M	*	0	0	TGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000825	16	gi|9632547|ref|NC_002077.1|	1246	70	100M	*	0	0	GAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCAGAAAAGGTTCGGGAAGCGCAACACCATCTGGCTGTTTGGGCCGGCCACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000826	0	gi|9632547|ref|NC_002077.1|	2173	70	100M	*	0	0	CGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000827	0	gi|9632547|ref|NC_002077.1|	1071	70	100M	*	0	0	ACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000828	0	gi|9632547|ref|NC_002077.1|	3310	60	100M	*	0	0	TCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000829	0	gi|9632547|ref|NC_002077.1|	2996	30	21M4I75M	*	0	0	GCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGCACCCCCTGGGGGTATTTTGATTTCAACAGATTCCACTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000830	16	gi|9632547|ref|NC_002077.1|	881	70	100M	*	0	0	GCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000831	0	gi|9632547|ref|NC_002077.1|	2272	70	100M	*	0	0	AGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000832	16	gi|9632547|ref|NC_002077.1|	2958	30	59M4I37M	*	0	0	ACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAGCAACGACAACCACTACTTCGGCTACAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000833	16	gi|9632547|ref|NC_002077.1|	1036	50	100M	*	0	0	GGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCGCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000834	0	gi|9632547|ref|NC_002077.1|	3480	60	100M	*	0	0	CCTTTCCACAGCAGCTACGCGCTCAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACAGAACTCAAAATCAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000835	0	gi|9632547|ref|NC_002077.1|	1625	60	100M	*	0	0	AACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAAAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000836	16	gi|9632547|ref|NC_002077.1|	2389	40	13M1D87M	*	0	0	TCAACGGACTCGAAAGGGGGAGCCCCTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000837	16	gi|9632547|ref|NC_002077.1|	632	60	100M	*	0	0	GTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAACTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000838	0	gi|9632547|ref|NC_002077.1|	3921	70	100M	*	0	0	AAAGCCACTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAGTCAATTTCCAGAGCAGCAGCACAGACCCTGCGACCGGAGATGTGCATGCTATGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000839	16	gi|9632547|ref|NC_002077.1|	961	60	100M	*	0	0	CAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGAACGGGGCATCACCTCCGAGAAGCAGTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000840	16	gi|9632547|ref|NC_002077.1|	3421	60	52M1D48M	*	0	0	CTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000841	16	gi|9632547|ref|NC_002077.1|	2836	60	100M	*	0	0	CAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACCTGGCTGGGCGACAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000842	16	gi|9632547|ref|NC_002077.1|	998	70	100M	*	0	0	GCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000843	16	gi|9632547|ref|NC_002077.1|	4528	60	82M1D18M	*	0	0	CATTAACTGCTTGGTTGCGCTTCGCGATAAAAGACTTACGTCATCGGGTTACCCCTAGTGATGGAGTTGCCCACTCCCTCTCGCGCGCTCGCTCGCTCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000844	16	gi|9632547|ref|NC_002077.1|	3335	70	100M	*	0	0	CATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000845	0	gi|9632547|ref|NC_002077.1|	2822	70	100M	*	0	0	TACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000846	16	gi|9632547|ref|NC_002077.1|	2046	60	100M	*	0	0	AGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000847	16	gi|9632547|ref|NC_002077.1|	1117	50	100M	*	0	0	CCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGCGCTGACCAAATCCGCGCCCGACTACCTGGTATGCCCCGCTCCGCCCGCGCACATTAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000848	16	gi|9632547|ref|NC_002077.1|	3292	60	100M	*	0	0	CTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGTAGCCAAGCCGTGGGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000849	16	gi|9632547|ref|NC_002077.1|	2618	50	89M1D11M	*	0	0	TGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATCGGCAAGAAGGCCAGCAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000850	0	gi|9632547|ref|NC_002077.1|	404	60	100M	*	0	0	GACTCGTTTGTGAGCTGGGTGGCCGAGAAGGAATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000851	0	gi|9632547|ref|NC_002077.1|	866	70	100M	*	0	0	GCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000852	16	gi|9632547|ref|NC_002077.1|	4289	60	60M1I39M	*	0	0	AGAAAACAGCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCTCAACGTTGATTTTACTGTGGACAACAATGGACTTTATAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000853	16	gi|9632547|ref|NC_002077.1|	412	60	100M	*	0	0	TGTGAGCTGGGTGGCCGAGAAGGAATGGGATCTGCCCCCGGATTCTGACATGGATCTGAATCTGATTGAGCAGGCACCCCTGACCGTGGCCGAGAAGCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000854	0	gi|9632547|ref|NC_002077.1|	2566	70	100M	*	0	0	GGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000855	0	gi|9632547|ref|NC_002077.1|	2399	60	100M	*	0	0	CGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000856	0	gi|9632547|ref|NC_002077.1|	260	60	57M1D43M	*	0	0	CCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000857	0	gi|9632547|ref|NC_002077.1|	2930	30	87M4I9M	*	0	0	CGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000858	0	gi|9632547|ref|NC_002077.1|	1385	50	43M1I54M1I1M	*	0	0	GTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTCGCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000859	16	gi|9632547|ref|NC_002077.1|	3184	60	100M	*	0	0	TCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000860	0	gi|9632547|ref|NC_002077.1|	2447	70	100M	*	0	0	CGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000861	16	gi|9632547|ref|NC_002077.1|	4158	60	100M	*	0	0	CAGATCCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000862	16	gi|9632547|ref|NC_002077.1|	2568	60	100M	*	0	0	CGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTGAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000863	16	gi|9632547|ref|NC_002077.1|	2010	60	92M1D8M	*	0	0	ACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAACTCTGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000864	0	gi|9632547|ref|NC_002077.1|	143	70	100M	*	0	0	ATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCTGACGTAAATTACGTCATAGGGGAGTGGTCCTGTATTAGCTGTCACGTGAGTGCTTTTGCGACAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000865	16	gi|9632547|ref|NC_002077.1|	1025	70	100M	*	0	0	CTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000866	0	gi|9632547|ref|NC_002077.1|	908	50	60M1D40M	*	0	0	CACCTGACCCACGTCACCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000867	16	gi|9632547|ref|NC_002077.1|	3328	40	100M	*	0	0	ACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTAGGACGTTCATCCTCTTACTACCTGGAATATTTCCCTTCTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000868	0	gi|9632547|ref|NC_002077.1|	4336	50	60M1I39M	*	0	0	ATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCNGCCCCATTGGCACCCGTTACCTTACGCGTCCCCTGTAAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000869	0	gi|9632547|ref|NC_002077.1|	3143	70	100M	*	0	0	CCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000870	16	gi|9632547|ref|NC_002077.1|	2012	50	45M1D55M	*	0	0	ATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGCGTGTCTGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000871	0	gi|9632547|ref|NC_002077.1|	2586	70	100M	*	0	0	AAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGTAGAGCAGTCGCCACAAGAGCCAGACT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000872	16	gi|9632547|ref|NC_002077.1|	2782	60	5M1I94M	*	0	0	CTCTCGGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000873	16	gi|9632547|ref|NC_002077.1|	1059	70	100M	*	0	0	GGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATCATGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000874	16	gi|9632547|ref|NC_002077.1|	4384	70	100M	*	0	0	ATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000875	16	gi|9632547|ref|NC_002077.1|	1011	60	100M	*	0	0	AGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCTCTTCCAACTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000876	0	gi|9632547|ref|NC_002077.1|	2167	50	100M	*	0	0	GGTCAACGTGGACCTGGATGACTGTGTTTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTCGCTCAAGGACAACCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000877	0	gi|9632547|ref|NC_002077.1|	743	60	100M	*	0	0	ACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTNGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!II	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000878	16	gi|9632547|ref|NC_002077.1|	3299	40	100M	*	0	0	CCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCAGCAATACGGCTACCTGACGCTTAACAATGGCAGCCAAGCCGTGGGGCGTTCATCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000879	0	gi|9632547|ref|NC_002077.1|	1913	70	100M	*	0	0	TTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000880	0	gi|9632547|ref|NC_002077.1|	2297	60	100M	*	0	0	GAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCAACGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000881	16	gi|9632547|ref|NC_002077.1|	2656	40	43M1D7M1I49M	*	0	0	CGGTAGAGCAGTCGCCACAAGAGCCAGACTCCTGCTCGGGCATGGCAAGACCAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000882	16	gi|9632547|ref|NC_002077.1|	3217	60	100M	*	0	0	CCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000883	0	gi|9632547|ref|NC_002077.1|	2498	70	100M	*	0	0	GTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000884	16	gi|9632547|ref|NC_002077.1|	2364	50	100M	*	0	0	CCTGGCTACAAGTACCTAGGACCCTTCAACGGACTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000885	0	gi|9632547|ref|NC_002077.1|	2287	50	100M	*	0	0	GGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGGCGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000886	0	gi|9632547|ref|NC_002077.1|	1632	60	100M	*	0	0	CCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGACAAAGCAGGAAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000887	0	gi|9632547|ref|NC_002077.1|	2000	60	100M	*	0	0	CAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAACAGGACGTATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000888	0	gi|9632547|ref|NC_002077.1|	2508	70	100M	*	0	0	GCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000889	0	gi|9632547|ref|NC_002077.1|	3129	70	100M	*	0	0	AACAATTGGGGATTCCGGCCCAAGAGACTCAACTTCAAACTCTTCAACATCCAAGTCAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000890	16	gi|9632547|ref|NC_002077.1|	3557	70	100M	*	0	0	CCTGAACAGAACTCAAAATCAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCTGGCATGTCTGTTCAGCCCAAAAACTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000891	0	gi|9632547|ref|NC_002077.1|	1022	70	100M	*	0	0	TGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000892	0	gi|9632547|ref|NC_002077.1|	1620	60	100M	*	0	0	ACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTGGAGCATGACTTTGGCAAGGTGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000893	16	gi|9632547|ref|NC_002077.1|	3284	70	100M	*	0	0	CCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000894	0	gi|9632547|ref|NC_002077.1|	1597	60	100M	*	0	0	CACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGCCGTTGCAGGACCGGATGTTCAAATTTGAACTCACCCGCCGTCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000895	0	gi|9632547|ref|NC_002077.1|	3867	70	100M	*	0	0	GGAGCTTCAAACACTGCATTGGACAATGTCATGATTACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCACCGAAAGATTTGGGACCGTGGCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000896	16	gi|9632547|ref|NC_002077.1|	1922	70	100M	*	0	0	AGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGAATGAATCAGAATTTCAACATTTGCTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000897	16	gi|9632547|ref|NC_002077.1|	3847	60	100M	*	0	0	TTTTTGGAAAAGAGAGCGCCGGAGCTTCAAACACTGCATTGGACAATGTCATGATTACAGACGAAGAGGAAATTAAAGCCACTGACCCTGTGGCCACCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000898	0	gi|9632547|ref|NC_002077.1|	3048	60	100M	*	0	0	TACAGCACCCCCTGGGGGTATTTTGATTTCAACAGATTCCTCTGCCACTTTTCACCACGTGACTGGCAGCGACTCATCAACAACAATTGGGGATTCCGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000899	16	gi|9632547|ref|NC_002077.1|	1986	70	100M	*	0	0	GCGAGAGAATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000900	16	gi|9632547|ref|NC_002077.1|	1349	30	32M3D68M	*	0	0	GGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGGACCAATGAGAACTTTACCTTCAATGATTGCGTCGACAAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000901	16	gi|9632547|ref|NC_002077.1|	862	70	100M	*	0	0	AAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000902	0	gi|9632547|ref|NC_002077.1|	972	70	100M	*	0	0	CGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTGGTCGGGTGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000903	0	gi|9632547|ref|NC_002077.1|	646	60	100M	*	0	0	GCTGGGCCGCTTCCTGAGTCAGATAAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCAAGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000904	16	gi|9632547|ref|NC_002077.1|	1199	70	100M	*	0	0	CCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGCTGGGCCCAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000905	0	gi|9632547|ref|NC_002077.1|	2494	60	94M1D6M	*	0	0	TGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCTTTTGGGGGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAAAGCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000906	16	gi|9632547|ref|NC_002077.1|	3393	70	100M	*	0	0	TCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000907	0	gi|9632547|ref|NC_002077.1|	2001	60	100M	*	0	0	AGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGNTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000908	16	gi|9632547|ref|NC_002077.1|	2836	60	97M1I2M	*	0	0	CAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATTGCGATTCCACATGGCTGGGCGATCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000909	16	gi|9632547|ref|NC_002077.1|	280	70	100M	*	0	0	CGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGCAGCAGCCATGCCGGGCTTCTACGAGATCGTGATCAAGGTGCCGAGCGACCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000910	0	gi|9632547|ref|NC_002077.1|	602	40	12M1I87M	*	0	0	CACCTCCATATTACTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGAGACAAGCTGGTGCAGACCATCTACAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000911	0	gi|9632547|ref|NC_002077.1|	499	70	100M	*	0	0	GGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGTCCTAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000912	16	gi|9632547|ref|NC_002077.1|	3271	60	100M	*	0	0	AGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACAGCTACCTGACGCTCAACAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000913	16	gi|9632547|ref|NC_002077.1|	4429	70	100M	*	0	0	TGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000914	16	gi|9632547|ref|NC_002077.1|	3213	40	14M1I85M	*	0	0	ACAACCATCGCTAATTAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000915	0	gi|9632547|ref|NC_002077.1|	254	60	72M1I27M	*	0	0	ACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACCGCGAAATTTGAACGAGGCAGCAGCCATGCCGGGCTTCTACGAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000916	0	gi|9632547|ref|NC_002077.1|	3280	70	100M	*	0	0	ACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000917	16	gi|9632547|ref|NC_002077.1|	193	60	100M	*	0	0	CATAGGGGAGTGGTCCTGTATTAGCTGTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCCATTTAGGGTATATATGGCCGAGTTAGCGAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000918	0	gi|9632547|ref|NC_002077.1|	1401	60	18M1D82M	*	0	0	GCGTCAACTGGACCAATGGAACTTTCCCTTCAATGATTGCGTCGACAAGATGGTGATCTGGTGGGAGGAGGGCAAGATGACGGCCAAGGTCGTGGAGTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000919	16	gi|9632547|ref|NC_002077.1|	4332	70	100M	*	0	0	AATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000920	16	gi|9632547|ref|NC_002077.1|	3529	60	46M1D54M	*	0	0	ATCCTCTCATCGACCAATACCTGTATTACCTGAACAGAACTCAAAACAGTCCGGAAGTGCCCAAAACAAGGACTTGCTGTTTAGCCGTGGGTCTCCAGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000921	0	gi|9632547|ref|NC_002077.1|	4163	60	100M	*	0	0	CCTCATCAAAAACACGCCTGTTCCTGCGAATCCTCCGGCGGAGTTTTCAGCTACAAAGTTTGCTTCATTCATCACCCAATACTCCACAGTACAAGTGAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000922	0	gi|9632547|ref|NC_002077.1|	3408	70	100M	*	0	0	CTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000923	16	gi|9632547|ref|NC_002077.1|	3247	60	100M	*	0	0	AAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCCTCCCTCCGTTCCCGGCGGACGTGTTCATGATTCCGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000924	16	gi|9632547|ref|NC_002077.1|	638	60	100M	*	0	0	TCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTTCCCAACTGGTTCGCGGTGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000925	16	gi|9632547|ref|NC_002077.1|	1030	70	100M	*	0	0	GGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000926	16	gi|9632547|ref|NC_002077.1|	4459	50	100M	*	0	0	GATTCGTTTCAGTTGAACTTTTGTCTGCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGCGATAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000927	0	gi|9632547|ref|NC_002077.1|	1190	60	100M	*	0	0	GGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGGCTCCGTCTTTCTCGGNT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!I	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000928	0	gi|9632547|ref|NC_002077.1|	2929	30	88M4I8M	*	0	0	GCGACAGAGTCATCACCACCAGCACCCGCACCTGGGCCTTGCCCACCTACAATAACCACCTCTACAAGCAAATCTCCAGTGCTTCAACGCTGGGGGGCCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:4	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000929	16	gi|9632547|ref|NC_002077.1|	927	50	100M	*	0	0	AGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACGCGCCTGTCATCCGGTCAAAAACCTCCGCGCGCTACATGGAGCTAGTCGGGTGNCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!II	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000930	16	gi|9632547|ref|NC_002077.1|	3361	70	100M	*	0	0	CGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000931	16	gi|9632547|ref|NC_002077.1|	210	70	100M	*	0	0	GTATTAGCTGTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000932	0	gi|9632547|ref|NC_002077.1|	667	60	100M	*	0	0	GATTAGGGACAAGCTGGTGCAGACCATCTACCGCGGGATCGAGCCGACCCTGCCCAACTGGTTCGCGGTGACCTAGACGCGTAATGGCGCCGGAGGGGGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000933	16	gi|9632547|ref|NC_002077.1|	1311	20	2M1I14M1I54M3D28M	*	0	0	AGACGCAACACCATCTGNGCTGTTTGGGCCGGCCACCACGGGCAAGACCAACATCGCGGAAGCCATCGCCCACGTGCCCTTCTACGGCTGCGTCAACTGG	IIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:5	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000934	16	gi|9632547|ref|NC_002077.1|	2691	60	9M1D91M	*	0	0	TCGGGCATCGCAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000935	16	gi|9632547|ref|NC_002077.1|	2156	50	100M	*	0	0	GCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTTCTGAACAATAAATGACTTAACCCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000936	0	gi|9632547|ref|NC_002077.1|	1022	70	100M	*	0	0	TGGCTGGTGGACCGGGGCATCACCTCCGAGAAGCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000937	16	gi|9632547|ref|NC_002077.1|	1993	60	100M	*	0	0	AATGAATCAGAATTTCAACATTTGCTTCACGCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGTGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000938	0	gi|9632547|ref|NC_002077.1|	1727	70	100M	*	0	0	GAAGTCAAAGAGTTCTTCCGCTGGGCGCAGGATCACGTGACCGAGGTGGCGCATGAGTTCTACGTCAGAAAGGGTGGAGCCAACAAAAGACCCGCCCCCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000939	0	gi|9632547|ref|NC_002077.1|	71	70	100M	*	0	0	GCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000940	16	gi|9632547|ref|NC_002077.1|	3714	70	100M	*	0	0	AACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000941	0	gi|9632547|ref|NC_002077.1|	1908	60	100M	*	0	0	TGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCTTCAGATGCTGTTTCCCTGCAAGACATGCGAGAGTATGAATCAGAATTT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000942	16	gi|9632547|ref|NC_002077.1|	3631	70	100M	*	0	0	GCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAAACAGACAACAACAACAGCAATTTTACCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000943	0	gi|9632547|ref|NC_002077.1|	2847	60	100M	*	0	0	GCACCAATGGCAGACAATAACGAAGGCGCCGACGGAGTGGGTAATGCCTCAGGAAATTGGCATCGCGATTCCACATGGCTGGGCGACAGAGTCATCACCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000944	0	gi|9632547|ref|NC_002077.1|	702	50	17M1D20M1D63M	*	0	0	GGATCGAGCCGACCCTGCCAACTGGTTCGCGGTGACCAGACGCGTAATGGCGCCGGAGGGGGGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000945	0	gi|9632547|ref|NC_002077.1|	359	60	100M	*	0	0	ATCAAGGTGCCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAGGAATGGGATCTGCCCCCGGATTCTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000946	16	gi|9632547|ref|NC_002077.1|	3185	60	100M	*	0	0	CAAGGAGGTCACGACGAATGATGGCGTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000947	0	gi|9632547|ref|NC_002077.1|	494	70	100M	*	0	0	ACCGTGGCCGAGAAGCTGCAGCGCGACTTCCTGGTCCAATGGCGCCGCGTGAGTAAGGCCCCGGAGGCCCTCTTCTTTGTTCAGTTCGAGAAGGGCGAGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000948	0	gi|9632547|ref|NC_002077.1|	825	60	100M	*	0	0	AGCTGCAGTGGGCGTGGACTAACATGGAGGTGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000949	0	gi|9632547|ref|NC_002077.1|	4298	70	100M	*	0	0	CAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000950	16	gi|9632547|ref|NC_002077.1|	3687	70	100M	*	0	0	GTTTCTAAAACAAAAACAGACAACAACAACAGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000951	0	gi|9632547|ref|NC_002077.1|	3331	70	100M	*	0	0	TGTTCATGATTCCGCAATACGGCTACCTGACGCTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000952	0	gi|9632547|ref|NC_002077.1|	765	70	100M	*	0	0	GGAACAAGGTGGTGGACGAGTGCTACATCCCCAACTACCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000953	0	gi|9632547|ref|NC_002077.1|	2223	60	100M	*	0	0	ATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000954	0	gi|9632547|ref|NC_002077.1|	1852	70	100M	*	0	0	GCGGGCCTGCCCCTCAGTCGCGGATCCATCGACGTCAGACGCGGAAGGAGCTCCGGTGGACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000955	0	gi|9632547|ref|NC_002077.1|	2556	50	100M	*	0	0	GGCAACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGAGCCAAGACGGCTCCTGGAAAGAAACGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000956	16	gi|9632547|ref|NC_002077.1|	2734	70	100M	*	0	0	TCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000957	0	gi|9632547|ref|NC_002077.1|	2023	70	100M	*	0	0	GCACGGGACGAGAGACTGTTCAGAGTGCTTCCCCGGCGTGTCAGAATCTCAACCGGTCGTCAGAAAGAGGACGTATCGGAAACTCTGTGCCATTCATCAT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000958	0	gi|9632547|ref|NC_002077.1|	1174	50	16M1I83M	*	0	0	GCCTGACTACCTGGTAGGGCCCCGCTCCGCCCGCGGACATTAAAACCAACCGCATCTACCGCATCCTGGAGCTGAACGGCTACGAACCTGCCTACGCCGG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000959	0	gi|9632547|ref|NC_002077.1|	1553	60	100M	*	0	0	TCGTCCGCCCAGATCGACCCCACCCCCGTGATCGTCACCTCCAACACCAACATGTGCGCCGTGATTGACGGGAACAGCACCACCTGCGAGCACCAGCAGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000960	16	gi|9632547|ref|NC_002077.1|	3717	70	100M	*	0	0	AGCAATTTTACCTGGACTGGTGCTTCAAAATATAACCTCAATGGGCGTGAATCCATCATCAACCCTGGCACTGCTATGGCCTCACACAAAGACGACGAAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000961	0	gi|9632547|ref|NC_002077.1|	213	60	100M	*	0	0	TTAGCTGTCACGTGAGTGCTTTTGCGACATTTTGCGACACCACGTGGCCATTTAGGGTATATATGGCCGAGTGAGCGAGCAGGATCTCCATTTTGACGGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000962	16	gi|9632547|ref|NC_002077.1|	3627	70	100M	*	0	0	GCTGGCATGTCTGTTCAGCCCAAAAACTGGCTACCTGGACCCTGTTATCGGCAGCAGCGCGTTTCTAAAACAAAAACAGACAACAACAACAGCAATTTTA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000963	16	gi|9632547|ref|NC_002077.1|	1054	70	100M	*	0	0	GCAGTGGATCCAGGAGGACCAGGCCTCGTACATCTCCTTCAACGCCGCTTCCAACTCGCGGTCCCAGATCAAGGCCGCTCTGGACAATGCCGGCAAGATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000964	0	gi|9632547|ref|NC_002077.1|	2194	70	100M	*	0	0	TTCTGAGCAATAAATGACTTAAACCAGGTATGGCTGCCGATGGTTATCTTCCAGATTGGCTCGAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000965	16	gi|9632547|ref|NC_002077.1|	802	70	100M	*	0	0	CCTCCTGCCCAAGACTCAGCCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000966	16	gi|9632547|ref|NC_002077.1|	2763	70	100M	*	0	0	TCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCAACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000967	16	gi|9632547|ref|NC_002077.1|	872	70	100M	*	0	0	TTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGAACCCCAATTCTGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000968	0	gi|9632547|ref|NC_002077.1|	3421	70	100M	*	0	0	CTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTGAGGAAGTGCCTTTCCACAGCAGCTACGCGCACAGCCAGAGCCTGGACCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000969	16	gi|9632547|ref|NC_002077.1|	4453	70	100M	*	0	0	CCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTACCATGGTTATAGCTTACACATTAACTGCTTGGTTGCGCTTCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000970	16	gi|9632547|ref|NC_002077.1|	3846	70	100M	*	0	0	ATTTTTGGAAAAGAGAGCGCCGGAGCTTCAAACACTGCATTGGACAATGTCATGATTACAGACGAAGAGGAAATTAAAGCCACTAACCCTGTGGCCACCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000971	0	gi|9632547|ref|NC_002077.1|	3494	70	100M	*	0	0	CTACGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTATTACCTGAACAGAACTCAAAATCAGTCCGGAAGTGCCCAA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000972	0	gi|9632547|ref|NC_002077.1|	833	70	100M	*	0	0	TGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000973	16	gi|9632547|ref|NC_002077.1|	2098	50	97M1I2M	*	0	0	TCGGAAACTCTGTGCCATTCATCATCTGCTGGGGCGGACTCCCGAGATTGCTTGCTCGGCCTGCGATCTGGTCAACGTGGACCTGGATGACTGTGTTATC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000974	16	gi|9632547|ref|NC_002077.1|	2560	70	100M	*	0	0	ACCTCGGGCGAGCAGTCTTCCAGGCCAAGAAGCGGGTTCTCGAACCTCTCGGTCTGGTTGAGGAAGGCGCTAAGACGGCTCCTGGAAAGAAACGTCCGGT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000975	0	gi|9632547|ref|NC_002077.1|	102	70	100M	*	0	0	AGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCGAAGCGCCTCCCACGCTGCCGCGTCAGCGCTGACGTAAATTACGTCATAGGGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000976	0	gi|9632547|ref|NC_002077.1|	2779	60	100M	*	0	0	AACCTCTCGGAGAACCTCCAGCCACCCCCGCTGCTGTGGGACCTACTACAATGGCTTCAGGCGGTGGCGCACCAATGGCAGACAATAACGAAGGCGCCGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000977	16	gi|9632547|ref|NC_002077.1|	2256	70	100M	*	0	0	GAGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000978	0	gi|9632547|ref|NC_002077.1|	1910	50	49M1I50M	*	0	0	GACTTTGCCGACAGGTACCAAAACAAATGTTCTCGTCACGCGGGCATGCNTTCAGATGCTGTTTCCCTGCAAGACATGCGAAAGAATGAATCAGAATTTC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000979	0	gi|9632547|ref|NC_002077.1|	2257	70	100M	*	0	0	AGGACAACCTCTCTGAGGGCATTCGCGAGTGGTGGGACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000980	16	gi|9632547|ref|NC_002077.1|	2415	60	100M	*	0	0	GTCAACGCGGCGGACGCAGCGTCCCTCGAGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGCGGTATAACCACGCCGACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000981	0	gi|9632547|ref|NC_002077.1|	821	70	100M	*	0	0	CCCGAGCTGCAGTGGGCGTGGACTAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000982	0	gi|9632547|ref|NC_002077.1|	4297	70	100M	*	0	0	GCAAGCGCTGGAATCCCGAAGTGCAGTACACATCCAATTATGCAAAATCTGCCAACGTTGATTTTACTGTGGACAACAATGGACTTTATACTGAGCCTCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000983	16	gi|9632547|ref|NC_002077.1|	2397	50	100M	*	0	0	CTCGACAAGGGGGAGCCCGTCAACGCGGCGGACGCAGCGTCCCTCGTGCACGACAAGGCCTACGACCAGCAGCTCAAAGCGGGTGACAATCCGTACCTGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000984	16	gi|9632547|ref|NC_002077.1|	3363	70	100M	*	0	0	CTCAACAATGGCAGCCAAGCCGTGGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000985	0	gi|9632547|ref|NC_002077.1|	3497	50	68M1D32M	*	0	0	CGCGCACAGCCAGAGCCTGGACCGGCTGATGAATCCTCTCATCGACCAATACCTGTTTTACCTGAACAAACTCAAAATCAGTCCGGAAGTGCCCAAAACA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000986	16	gi|9632547|ref|NC_002077.1|	3373	60	14M1I85M	*	0	0	GCAGCCAAGCCGTGNGGACGTTCATCCTTTTACTGCCTGGAATATTTCCCTTCTCAGATGCTGAGAACGGGCAACAACTTTACCTTCAGCTACACCTTTG	IIIIIIIIIIIIII!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000987	16	gi|9632547|ref|NC_002077.1|	3210	60	100M	*	0	0	GTCACAACCATCGCTAATAACCTTACCAGCACGGTTCAAGCCTTCTCGGACTCGGAGTACCAGCTTCCGTACGTCCTCGGCTCTGCGCACCAGGGCTGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000988	16	gi|9632547|ref|NC_002077.1|	844	70	100M	*	0	0	TAACATGGAGGAGTATATAAGCGCCTGTTTGAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000989	16	gi|9632547|ref|NC_002077.1|	8	3	37M1D63M	*	0	0	CTCCCTCTCTGCGCGCTCGCTCGCTCGGTGGGGCCTGGGACCAAAGGTCCGCAGACGGCAGAGCTCTGCTTTGCCGGCCCCACTGAGCGAGCGAGCGCGC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:2	X1:i:0	RG:Z:none	XA:Z:gi|9632547|ref|NC_002077.1|,4601,4702,-,3;
+adeno-reads100.fasta.000000990	16	gi|9632547|ref|NC_002077.1|	573	70	100M	*	0	0	TTCAGTTCGAGAAGGGCGAGTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000991	0	gi|9632547|ref|NC_002077.1|	874	60	100M	*	0	0	GAACCTGGCCGAGCGCAAACGGCTCGTGGCGCAGCACCTGACCCACGTCAGCCAGACCCAGGAGCAGAACAAGGAGAATCTGNACCCCAATTCTGACGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!IIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000992	0	gi|9632547|ref|NC_002077.1|	4392	70	100M	*	0	0	CCTCGCCCCATTGGCACCCGTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000993	0	gi|9632547|ref|NC_002077.1|	2478	50	100M	*	0	0	GGTGACAATCCGTACCTGCGGTATAACCACGCCGACGCCGAGTTTCAGGAGCGTCTGCAAGAAGATACGTCATTTGGGGCCAACCTCGGGCGAGCAGTCT	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000994	0	gi|9632547|ref|NC_002077.1|	3654	50	17M1D59M1I23M	*	0	0	TGGCTACCTGGACCCTGTATCGGCAGCAGCGCGTTTCTAAAACAAAAACAGACAACAACAACAGCAATTTTACCTGAGACTGGTGCTTCAAAATATAACC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:2	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000995	0	gi|9632547|ref|NC_002077.1|	49	70	100M	*	0	0	CCAAAGGTCCGCAGACGGCAGAGCTCTGCTCTGCCGGCCCCACCGAGCGAGCGAGCGCGCAGAGAGGGAGTGGGCAACTCCATCACTAGGGGTAATCGCG	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000996	16	gi|9632547|ref|NC_002077.1|	592	60	84M1I15M	*	0	0	GTCCTACTTCCACCTCCATATTCTGGTGGAGACCACGGGGGTCAAATCCATGGTGCTGGGCCGCTTCCTGAGTCAGATTAGGGATCAAGCTGGTGCAGAC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000997	16	gi|9632547|ref|NC_002077.1|	2292	60	100M	*	0	0	GACTTGAAACCTGGAGCCCCGAAGCCCAAAGCCAACCAGCAAAAGCAGGACGACGGCCGGGGTCTGGTGCTTCCTGGCTACAAGTACCTAGGACCCTTCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:1	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000998	0	gi|9632547|ref|NC_002077.1|	2702	70	100M	*	0	0	CAAGACAGGCCAGCAGCCCGCTAAAAAGAGACTCAATTTTGGTCAGACTGGCGACTCAGAGTCAGTCCCCGATCCACAACCTCTCGGAGAACCTCCAGCA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:0	X0:i:1	X1:i:0	RG:Z:none
+adeno-reads100.fasta.000000999	0	gi|9632547|ref|NC_002077.1|	348	40	100M	*	0	0	ACGAGATCGTGATTAAGGTGTCGAGCGACCTGGACGAGCACCTGCCGGGCATTTCTGACTCGTTTGTGAGCTGGGTGGCCGAGAAGGAATGGGATCTGCC	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	NM:i:3	X0:i:1	X1:i:0	RG:Z:none
diff --git a/apps/yara/tests/run_tests.py b/apps/yara/tests/run_tests.py
index df33773..ba87e82 100644
--- a/apps/yara/tests/run_tests.py
+++ b/apps/yara/tests/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for Yara.
 
 The golden test outputs are generated by the script generate_outputs.sh.
@@ -87,7 +87,7 @@ def main(source_base, binary_base):
 #                  ]
 #    mapper_suffix = ['t1', 't8']
 
-    mapper_args = [[]]
+    mapper_args = [['--threads', '1']]
     mapper_suffix = ['t1']
 
     for organism in ['adeno']:
diff --git a/demos/CMakeLists.txt b/demos/CMakeLists.txt
index 55b4544..3cbc9b9 100644
--- a/demos/CMakeLists.txt
+++ b/demos/CMakeLists.txt
@@ -8,7 +8,6 @@
 
 cmake_minimum_required (VERSION 3.0.0)
 project (seqan_demos CXX)
-message (STATUS "Configuring demos")
 
 # Recursively register all demos in core and prefix their target/binary names
 # with "demo_".  The demos will be built in DEVELOP mode, copied in
diff --git a/demos/blast/blast_in_lowlevel.cpp b/demos/blast/blast_in_lowlevel.cpp
index 0d56c64..0c6f83c 100644
--- a/demos/blast/blast_in_lowlevel.cpp
+++ b/demos/blast/blast_in_lowlevel.cpp
@@ -1,6 +1,6 @@
 #include <iostream>
 #include <seqan/basic.h>
-#ifndef PLATFORM_WINDOWS_VS
+#ifndef STDLIB_VS
 #include <seqan/blast.h>
 
 using namespace seqan;
diff --git a/demos/dox/align/gaps_example.cpp.stdout b/demos/dox/align/gaps_example.cpp.stdout
index 58c1a76..ee89b96 100644
--- a/demos/dox/align/gaps_example.cpp.stdout
+++ b/demos/dox/align/gaps_example.cpp.stdout
@@ -1,5 +1,5 @@
-Distance from 0 to 0: 0
-Distance from 0 to 1: 8
-Distance from 0 to 2: 9
-Distance from 0 to 3: 5
-Distance from 0 to 4: 7
+Resulting gaps: GG-T-A-
+toSourcePosition(gaps, 0) == 1
+toSourcePosition(gaps, 4) == 4
+toViewPosition(gaps, 0) == -1
+toViewPosition(gaps, 5) == 9
diff --git a/demos/dox/graph_algorithms/dijkstra.cpp.stdout b/demos/dox/graph_algorithms/dijkstra.cpp.stdout
index 8004dd0..709da94 100644
--- a/demos/dox/graph_algorithms/dijkstra.cpp.stdout
+++ b/demos/dox/graph_algorithms/dijkstra.cpp.stdout
@@ -7,7 +7,7 @@ Path from 0 to 4: 0,3,4 (Distance: 7)
 
 Single-Source Shortest Paths: 
 Path from 0 to 0: 0 (Distance: 0)
-Path from 0 to 1: 0,1 (Distance: 0)
-Path from 0 to 2: 0,1,2 (Distance: 0)
-Path from 0 to 3: 0,3 (Distance: 0)
-Path from 0 to 4: 0,1,2,4 (Distance: 0)
+Path from 0 to 1: 0,3,1 (Distance: 8)
+Path from 0 to 2: 0,3,1,2 (Distance: 9)
+Path from 0 to 3: 0,3 (Distance: 5)
+Path from 0 to 4: 0,3,4 (Distance: 7)
diff --git a/demos/dox/index/open_save.cpp b/demos/dox/index/open_save.cpp
index 23ad113..02f77cb 100644
--- a/demos/dox/index/open_save.cpp
+++ b/demos/dox/index/open_save.cpp
@@ -23,5 +23,9 @@ int main()
     TIndex openIndex;
     std::cout << open(openIndex, tempFileName) << std::endl;
 
+    // clean up tmp directory (internal function)
+    // only important when running seqan unit tests
+    ClassTest::_deleteTempFile(ClassTest::_stripFileName(tempFileName));
+
     return 0;
 }
diff --git a/demos/dox/modifier/cyclic_shape.cpp b/demos/dox/modifier/cyclic_shape.cpp
index 83886d3..64ecb11 100644
--- a/demos/dox/modifier/cyclic_shape.cpp
+++ b/demos/dox/modifier/cyclic_shape.cpp
@@ -16,8 +16,8 @@ int main(int argc, char const ** argv)
     std::cout << "shape: " << out << std::endl;
 
     // determine weight and span
-    std::cout << "weight: " << weight(shape);
-    std::cout << ", span: " << shape.span << std::endl;
+    std::cout << "weight: " << (int)weight(shape);
+    std::cout << ", span: " << (int)shape.span << std::endl;
 
     // modify a text to leave out characters
     CharString str = "this is an original string";
diff --git a/demos/dox/stream/lexical_cast.cpp b/demos/dox/stream/lexical_cast.cpp
index b3f9c6b..dacec8b 100644
--- a/demos/dox/stream/lexical_cast.cpp
+++ b/demos/dox/stream/lexical_cast.cpp
@@ -11,23 +11,30 @@ int main()
     // interpret string literal as int
     int x = 0;
     // successful cast
-    std::cout << "success=" << lexicalCast(x, "123") << ", x=" << x << "\n";
+    std::cout << "success=" << lexicalCast(x, "123");
+    std::cout << ", x=" << x << "\n";
     // unsuccessful cast
-    std::cout << "success=" << lexicalCast(x, "42a") << ", x=" << x << "\n";
+    std::cout << "success=" << lexicalCast(x, "42a");
+    std::cout << ", x=" << x << "\n";
 
     // interpret std::string as int
-    std::cout << "success=" << lexicalCast(x, std::string("234")) << ", x=" << x << "\n";
+    std::cout << "success=" << lexicalCast(x, std::string("234"));
+    std::cout << ", x=" << x << "\n";
     // interpret CharString as int
-    std::cout << "success=" << lexicalCast(x, CharString("345")) << ", x=" << x << "\n";
+    std::cout << "success=" << lexicalCast(x, CharString("345"));
+    std::cout << ", x=" << x << "\n";
     // interpret infix as int
     CharString str = "123";
-    std::cout << "success=" << lexicalCast(x, infix(str, 1, 2)) << ", x=" << x << "\n";
+    std::cout << "success=" << lexicalCast(x, infix(str, 1, 2));
+    std::cout << ", x=" << x << "\n";
 
     // interpret literal as float and double
     float f = -1;
     double d = -1;
-    std::cout << "success=" << lexicalCast(f, "3.1") << ", f=" << f << "\n"
-              << "success=" << lexicalCast(d, "4.2") << ", d=" << d << "\n";
+    std::cout << "success=" << lexicalCast(f, "3.1");
+    std::cout << ", f=" << f << "\n";
+    std::cout << "success=" << lexicalCast(d, "4.2");
+    std::cout << ", d=" << d << "\n";
 
     // demonstrate throwing of exceptions with lexicalCast()
     try
diff --git a/demos/howto/align_gaps_clipping.cpp.stdout b/demos/howto/align_gaps_clipping.cpp.stdout
new file mode 100644
index 0000000..04241b7
--- /dev/null
+++ b/demos/howto/align_gaps_clipping.cpp.stdout
@@ -0,0 +1,27 @@
+gaps	AB--CD-EFG-HIJ
+seq 	ABCDEFGHIJ
+
+beginPosition(gaps)        == 0
+endPosition(gaps)          == 10
+clippedBeginPosition(gaps) == 0
+clippedEndPosition(gaps)   == 14
+
+gaps	-CD-EFG
+seq 	CDEFG
+
+beginPosition(gaps)        == 2
+endPosition(gaps)          == 7
+clippedBeginPosition(gaps) == 3
+clippedEndPosition(gaps)   == 10
+
+4 view position => 4 source position
+2 source position => 1 view position
+
+3 clipped gapped => 6 unclipped gapped
+6 unclipped gapped => 2 clipped gapped
+
+3 clipped ungapped => 5 unclipped ungapped
+5 unclipped ungapped => 3 clipped ungapped
+
+3 clipped gapped => 2 clipped ungapped
+4 unclipped ungapped => 7 unclipped gapped
diff --git a/demos/howto/filter_similar_sequences.cpp b/demos/howto/filter_similar_sequences.cpp
index 7688dc2..f6b2d35 100644
--- a/demos/howto/filter_similar_sequences.cpp
+++ b/demos/howto/filter_similar_sequences.cpp
@@ -12,7 +12,10 @@ int main(int argc, char const * argv[])
 {
     FragmentStore<> fragStore;
     if (argc < 2 || !loadReads(fragStore, argv[1]))
-        return 1;
+    {
+        std::cerr << "ERROR: Coud not load reads." << std::endl;
+        return 0;
+    }
 //![load_reads]
 
 //![filter]
diff --git a/demos/howto/filter_similar_sequences.cpp.stderr b/demos/howto/filter_similar_sequences.cpp.stderr
new file mode 100644
index 0000000..7ea49ab
--- /dev/null
+++ b/demos/howto/filter_similar_sequences.cpp.stderr
@@ -0,0 +1 @@
+ERROR: Coud not load reads.
diff --git a/demos/tutorial/bed_io/example1.cpp.stdout b/demos/howto/filter_similar_sequences.cpp.stdout
similarity index 100%
copy from demos/tutorial/bed_io/example1.cpp.stdout
copy to demos/howto/filter_similar_sequences.cpp.stdout
diff --git a/demos/howto/scores/init_score.cpp b/demos/howto/scores/init_score.cpp
index 7863cac..056d4ce 100644
--- a/demos/howto/scores/init_score.cpp
+++ b/demos/howto/scores/init_score.cpp
@@ -29,7 +29,7 @@
 
 #include <seqan/basic.h>
 #include <seqan/stream.h>   // For printing strings.
-#include <seqan/score.h>  // The module score.
+#include <seqan/score.h>    // The module score.
 
 using namespace seqan;
 //![includes]
diff --git a/demos/howto/scores/load_score.cpp.stdout b/demos/howto/scores/load_score.cpp.stdout
index e11573d..0915021 100644
--- a/demos/howto/scores/load_score.cpp.stdout
+++ b/demos/howto/scores/load_score.cpp.stdout
@@ -1,6 +1,6 @@
-
-    A   C   G   T
-A   1   -1  -1  -1
-C   -1  1   -1  -1
-G   -1  -1  1   -1
-T   -1  -1  -1  1
+	A	C	G	T	N
+A	1	-1	-1	-1	-1
+C	-1	1	-1	-1	-1
+G	-1	-1	1	-1	-1
+T	-1	-1	-1	1	-1
+N	-1	-1	-1	-1	1
diff --git a/demos/tutorial/alignment_representation/align.cpp b/demos/tutorial/alignment/align.cpp
similarity index 53%
rename from demos/tutorial/alignment_representation/align.cpp
rename to demos/tutorial/alignment/align.cpp
index 3be5063..38a982c 100644
--- a/demos/tutorial/alignment_representation/align.cpp
+++ b/demos/tutorial/alignment/align.cpp
@@ -8,11 +8,13 @@ int main()
 {
 //![main]
 //![typedefs]
-    typedef String<char> TSequence;                 // sequence type
+    typedef char TChar;                             // character type
+    typedef String<TChar> TSequence;                // sequence type
     typedef Align<TSequence, ArrayGaps> TAlign;     // align type
     typedef Row<TAlign>::Type TRow;                 // gapped sequence type
 //![typedefs]
 
+std::cout << "//![output_init]\n";
 //![init]
     TSequence seq1 = "CDFGDC";
     TSequence seq2 = "CDEFGAHGC";
@@ -21,40 +23,66 @@ int main()
     resize(rows(align), 2);
     assignSource(row(align, 0), seq1);
     assignSource(row(align, 1), seq2);
+    std::cout << align;
 //![init]
+std::cout << "//![output_init]\n";
 
 std::cout << "//![output_manipulation]\n";
 //![manipulation]
-    std::cout << align;
     TRow & row1 = row(align, 0);
     TRow & row2 = row(align, 1);
     insertGap(row1, 2);
+    std::cout << align;
     insertGaps(row1, 5, 2);
     std::cout << align;
 //![manipulation]
+std::cout << "//![output_manipulation]\n";
 
+std::cout << "//![output_source_positions]\n";
 //![printingSourcePos]
-    std::cout << std::endl << "ViewToSource1: ";
+    std::cout << std::endl << "ViewToSource1: " << std::endl;
+    for (auto c: row1)
+        std::cout << c << " ";
+    std::cout << std::endl;
+
     for (unsigned i = 0; i < length(row1); ++i)
-        std::cout << toSourcePosition(row1, i) << ",";
+        std::cout << toSourcePosition(row1, i) << " ";
+    std::cout << std::endl;
+
+
+    std::cout << std::endl << "ViewToSource2: " << std::endl;
+    for (auto c: row2)
+        std::cout << c << " ";
+    std::cout << std::endl;
 
-    std::cout << std::endl << "ViewToSource2: ";
     for (unsigned i = 0; i < length(row2); ++i)
-        std::cout << toSourcePosition(row2, i) << ",";
+        std::cout << toSourcePosition(row2, i) << " ";
     std::cout << std::endl;
 //![printingSourcePos]
+std::cout << "//![output_source_positions]\n";
 
+std::cout << "//![output_view_positions]\n";
 //![printingViewPos]
-    std::cout << std::endl << "SourceToView1: ";
+    std::cout << std::endl << "SourceToView1: " << std::endl;
+    for (auto c: source(row1))
+        std::cout << c << " ";
+    std::cout << std::endl;
+
     for (unsigned i = 0; i < length(source(row1)); ++i)
-        std::cout << toViewPosition(row1, i) << ",";
+        std::cout << toViewPosition(row1, i) << " ";
+    std::cout << std::endl;
+
+
+    std::cout << std::endl << "SourceToView2: " << std::endl;
+    for (auto c: source(row2))
+        std::cout << c << " ";
+    std::cout << std::endl;
 
-    std::cout << std::endl << "SourceToView2: ";
     for (unsigned i = 0; i < length(source(row2)); ++i)
-        std::cout << toViewPosition(row2, i) << ",";
+        std::cout << toViewPosition(row2, i) << " ";
     std::cout << std::endl;
 //![printingViewPos]
-std::cout << "//![output_manipulation]\n";
+std::cout << "//![output_view_positions]\n";
 
 std::cout << "//![output_clipping]\n";
 //![clipping]
@@ -64,56 +92,59 @@ std::cout << "//![output_clipping]\n";
     setClippedBeginPosition(row2, 1);
     setClippedEndPosition(row2, 7);
     std::cout << std::endl << "After clipping:\n" << align;
+//![clipping]
+std::cout << "//![output_clipping]\n";
 
+std::cout << "//![output_clipping_positions]\n";
+//![clipping_positions]
     std::cout << std::endl << "ViewToSource1: ";
     for (unsigned i = 0; i < length(row1); ++i)
-        std::cout << toSourcePosition(row1, i) << ",";
+        std::cout << toSourcePosition(row1, i) << " ";
 
     std::cout << std::endl << "ViewToSource2: ";
     for (unsigned i = 0; i < length(row2); ++i)
-        std::cout << toSourcePosition(row2, i) << ",";
+        std::cout << toSourcePosition(row2, i) << " ";
     std::cout << std::endl;
 
     std::cout << std::endl << "SourceToView1: ";
     for (unsigned i = 0; i < length(source(row1)); ++i)
-        std::cout << toViewPosition(row1, i) << ",";
+        std::cout << toViewPosition(row1, i) << " ";
 
     std::cout << std::endl << "SourceToView2: ";
     for (unsigned i = 0; i < length(source(row2)); ++i)
-        std::cout << toViewPosition(row2, i) << ",";
+        std::cout << toViewPosition(row2, i) << " ";
     std::cout << std::endl;
-//![clipping]
-std::cout << "//![output_clipping]\n";
+//![clipping_positions]
+std::cout << "//![output_clipping_positions]\n";
 
-std::cout << "//![output_gaps]\n";
+std::cout << "//![output_iteratingRowClipped]\n";
 //![iteratingRowClipped]
     typedef Iterator<TRow>::Type TRowIterator;
-    TRowIterator it = begin(row1);
-    TRowIterator itEnd = end(row1);
+    TRowIterator it = begin(row1),
+                 itEnd = end(row1);
     for (; it != itEnd; ++it)
     {
-        if (isGap(it))
-            std::cout << gapValue<char>();
-        else
-            std::cout << *it;
+        TChar c = isGap(it) ? gapValue<TChar>() : *it;
+        std::cout << c << " ";
     }
     std::cout << std::endl;
 //![iteratingRowClipped]
+std::cout << "//![output_iteratingRowClipped]\n";
 
+std::cout << "//![output_iteratingRowClipped2]\n";
 //![iteratingRowClipped2]
     clearClipping(row1);
+
     it = begin(row1);
     itEnd = end(row1);
     for (; it != itEnd; ++it)
     {
-        if (isGap(it))
-            std::cout << gapValue<char>();
-        else
-            std::cout << *it;
+        TChar c = isGap(it) ? gapValue<TChar>() : *it;
+        std::cout << c << " ";
     }
     std::cout << std::endl;
 //![iteratingRowClipped2]
-std::cout << "//![output_gaps]\n";
+std::cout << "//![output_iteratingRowClipped2]\n";
 //![return]
     return 0;
 }
diff --git a/demos/tutorial/alignment/align.cpp.stdout b/demos/tutorial/alignment/align.cpp.stdout
new file mode 100644
index 0000000..1bbd1e4
--- /dev/null
+++ b/demos/tutorial/alignment/align.cpp.stdout
@@ -0,0 +1,74 @@
+//![output_init]
+      0     .  
+        CDFGDC
+        ||    
+        CDEFGA
+
+
+//![output_init]
+//![output_manipulation]
+      0     .   
+        CD-FGDC
+        || ||  
+        CDEFGAH
+
+
+      0     .     
+        CD-FG--DC
+        || ||   |
+        CDEFGAHGC
+
+
+//![output_manipulation]
+//![output_source_positions]
+
+ViewToSource1: 
+C D - F G - - D C 
+0 1 2 2 3 4 4 4 5 
+
+ViewToSource2: 
+C D E F G A H G C 
+0 1 2 3 4 5 6 7 8 
+//![output_source_positions]
+//![output_view_positions]
+
+SourceToView1: 
+C D F G D C 
+0 1 3 4 7 8 
+
+SourceToView2: 
+C D E F G A H G C 
+0 1 2 3 4 5 6 7 8 
+//![output_view_positions]
+//![output_clipping]
+
+Before clipping:
+      0     .     
+        CD-FG--DC
+        || ||   |
+        CDEFGAHGC
+
+
+
+After clipping:
+      0     .  
+        D-FG--
+        | ||  
+        DEFGAH
+
+
+//![output_clipping]
+//![output_clipping_positions]
+
+ViewToSource1: 1 2 2 3 4 4 
+ViewToSource2: 1 2 3 4 5 6 
+
+SourceToView1: -1 0 2 3 6 7 
+SourceToView2: -1 0 1 2 3 4 5 6 7 
+//![output_clipping_positions]
+//![output_iteratingRowClipped]
+D - F G - - 
+//![output_iteratingRowClipped]
+//![output_iteratingRowClipped2]
+C D - F G - - D C 
+//![output_iteratingRowClipped2]
diff --git a/demos/tutorial/alignment_representation/align_assignmen1.cpp b/demos/tutorial/alignment/align_assignment1.cpp
similarity index 100%
rename from demos/tutorial/alignment_representation/align_assignmen1.cpp
rename to demos/tutorial/alignment/align_assignment1.cpp
diff --git a/demos/tutorial/alignment_representation/align_assignment1.cpp.stdout b/demos/tutorial/alignment/align_assignment1.cpp.stdout
similarity index 100%
rename from demos/tutorial/alignment_representation/align_assignment1.cpp.stdout
rename to demos/tutorial/alignment/align_assignment1.cpp.stdout
diff --git a/demos/tutorial/alignment/graph.cpp b/demos/tutorial/alignment/graph.cpp
new file mode 100644
index 0000000..11bf964
--- /dev/null
+++ b/demos/tutorial/alignment/graph.cpp
@@ -0,0 +1,59 @@
+//![main]
+#include <iostream>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+//![main]
+//![typedef]
+    typedef String<Dna> TSequence;
+    typedef StringSet<TSequence> TStringSet;
+    typedef StringSet<TSequence, Dependent<> > TDepStringSet;
+    typedef Graph<Alignment<TDepStringSet> > TAlignGraph;
+    typedef typename VertexDescriptor<TAlignGraph>::Type TVertexDescriptor;
+//![typedef]
+
+    std::cout << "//![output_init]" << std::endl;
+//![init]
+    TSequence seq1 = "TTGT";
+    TSequence seq2 = "TTAGT";
+
+    TStringSet strings;
+    appendValue(strings, seq1);
+    appendValue(strings, seq2);
+
+    TAlignGraph alignG(strings);
+    std::cout << alignG << std::endl;
+//![init]
+    std::cout << "//![output_init]" << std::endl;
+
+    std::cout << "//![output_construct]" << std::endl;
+//![construct]
+    TVertexDescriptor u,v;
+
+    // TT
+    u = addVertex(alignG, positionToId(stringSet(alignG), 0), 0, 2);
+    v = addVertex(alignG, positionToId(stringSet(alignG), 1), 0, 2);
+    addEdge(alignG, u, v);
+
+    // A
+    addVertex(alignG, positionToId(stringSet(alignG), 1), 2, 1);
+
+    // GT
+    addVertex(alignG, positionToId(stringSet(alignG), 0), 2, 2);
+    addVertex(alignG, positionToId(stringSet(alignG), 1), 3, 2);
+
+    u = findVertex(alignG, positionToId(stringSet(alignG), 0), 2);
+    v = findVertex(alignG, positionToId(stringSet(alignG), 1), 3);
+    addEdge(alignG, u, v);
+
+    std::cout << alignG << std::endl;
+//![construct]
+    std::cout << "//![output_construct]" << std::endl;
+//![construct]
+
+    return 0;
+}
+//![construct]
diff --git a/demos/tutorial/alignment_representation/graph.cpp.stdout b/demos/tutorial/alignment/graph.cpp.stdout
similarity index 57%
rename from demos/tutorial/alignment_representation/graph.cpp.stdout
rename to demos/tutorial/alignment/graph.cpp.stdout
index 6d3c3bd..50b25c1 100644
--- a/demos/tutorial/alignment_representation/graph.cpp.stdout
+++ b/demos/tutorial/alignment/graph.cpp.stdout
@@ -1,6 +1,9 @@
+//![output_init]
 Adjacency list:
 Edge list:
 
+//![output_init]
+//![output_construct]
 Alignment matrix:
       0     . 
         TT-GT
@@ -9,3 +12,4 @@ Alignment matrix:
 
 
 
+//![output_construct]
diff --git a/demos/tutorial/alignment_representation/graph_assignment1.cpp b/demos/tutorial/alignment/graph_assignment1.cpp
similarity index 54%
rename from demos/tutorial/alignment_representation/graph_assignment1.cpp
rename to demos/tutorial/alignment/graph_assignment1.cpp
index 118bdf7..276d83e 100644
--- a/demos/tutorial/alignment_representation/graph_assignment1.cpp
+++ b/demos/tutorial/alignment/graph_assignment1.cpp
@@ -11,6 +11,7 @@ int main()
     typedef StringSet<TSequence> TStringSet;
     typedef StringSet<TSequence, Dependent<> > TDepStringSet;
     typedef Graph<Alignment<TDepStringSet> > TAlignGraph;
+    typedef typename VertexDescriptor<TAlignGraph>::Type TVertexDescriptor;
 
     // Initializing the sequences and the string set.
     TSequence seq1 = "GARFIELDTHECAT";
@@ -24,38 +25,47 @@ int main()
 
     // Load the string set into the Alignment Graph.
     TAlignGraph alignG(strings);
+    TVertexDescriptor u,v;
 
     // Add two vertices covering "GARFIELD" in the first and the second sequence and connect them with an edge.
-    addEdge(alignG, addVertex(alignG, positionToId(stringSet(alignG), 0), 0, 8),
-            addVertex(alignG, positionToId(stringSet(alignG), 1), 0, 8));
+    u = addVertex(alignG, positionToId(stringSet(alignG), 0), 0, 8);
+    v = addVertex(alignG, positionToId(stringSet(alignG), 1), 0, 8);
+    addEdge(alignG, u, v);
 
     // Add two vertices covering "THE" in the first and the second sequence and connect them with an edge.
-    addEdge(alignG, addVertex(alignG, positionToId(stringSet(alignG), 0), 8, 3),
-            addVertex(alignG, positionToId(stringSet(alignG), 1), 8, 3));
+    u = addVertex(alignG, positionToId(stringSet(alignG), 0), 8, 3);
+    v = addVertex(alignG, positionToId(stringSet(alignG), 1), 8, 3);
+    addEdge(alignG, u, v);
 
     // Find the vertex covering "THE" in the first sequence and add the vertex covering "THE" in the third sequence and connect them with an edge.
-    addEdge(alignG, findVertex(alignG, positionToId(stringSet(alignG), 0), 8),
-            addVertex(alignG, positionToId(stringSet(alignG), 2), 0, 3));
+    u = findVertex(alignG, positionToId(stringSet(alignG), 0), 8);
+    v = addVertex(alignG, positionToId(stringSet(alignG), 2), 0, 3);
+    addEdge(alignG, u, v);
 
     // Find the vertices covering "THE" in the second and the third sequence and connect them with an edge.
-    addEdge(alignG, findVertex(alignG, positionToId(stringSet(alignG), 1), 8),
-            findVertex(alignG, positionToId(stringSet(alignG), 2), 0));
+    u = findVertex(alignG, positionToId(stringSet(alignG), 1), 8);
+    v = findVertex(alignG, positionToId(stringSet(alignG), 2), 0);
+    addEdge(alignG, u, v);
 
     // Add two vertices covering "FAT" in the second and the third sequence and connect them with an edge.
-    addEdge(alignG, addVertex(alignG, positionToId(stringSet(alignG), 1), 11, 3),
-            addVertex(alignG, positionToId(stringSet(alignG), 2), 3, 3));
+    u = addVertex(alignG, positionToId(stringSet(alignG), 1), 11, 3);
+    v = addVertex(alignG, positionToId(stringSet(alignG), 2), 3, 3);
+    addEdge(alignG, u, v);
 
     // Add two vertices covering "CAT" in the first and the second sequence and connect them with an edge.
-    addEdge(alignG, addVertex(alignG, positionToId(stringSet(alignG), 0), 11, 3),
-            addVertex(alignG, positionToId(stringSet(alignG), 1), 14, 3));
+    u = addVertex(alignG, positionToId(stringSet(alignG), 0), 11, 3);
+    v = addVertex(alignG, positionToId(stringSet(alignG), 1), 14, 3);
+    addEdge(alignG, u, v);
 
     // Find the vertex covering "CAT" in the first sequence and add the vertex covering "CAT" in the third sequence and connect them with an edge.
-    addEdge(alignG, findVertex(alignG, positionToId(stringSet(alignG), 0), 11),
-            addVertex(alignG, positionToId(stringSet(alignG), 2), 6, 3));
+    u = findVertex(alignG, positionToId(stringSet(alignG), 0), 11);
+    v = addVertex(alignG, positionToId(stringSet(alignG), 2), 6, 3);
+    addEdge(alignG, u, v);
 
     // Find the vertices covering "CAT" in the second and the third sequence and connect them with an edge.
-    addEdge(alignG, findVertex(alignG, positionToId(stringSet(alignG), 1), 14),
-            findVertex(alignG, positionToId(stringSet(alignG), 2), 6));
+    u = findVertex(alignG, positionToId(stringSet(alignG), 1), 14);
+    v = findVertex(alignG, positionToId(stringSet(alignG), 2), 6);
+    addEdge(alignG, u, v);
 
     std::cout << alignG << std::endl;
 
diff --git a/demos/tutorial/alignment_representation/graph_assignment1.cpp.stdout b/demos/tutorial/alignment/graph_assignment1.cpp.stdout
similarity index 100%
rename from demos/tutorial/alignment_representation/graph_assignment1.cpp.stdout
rename to demos/tutorial/alignment/graph_assignment1.cpp.stdout
diff --git a/demos/tutorial/alignment/scoring_scheme_affine_dgs.cpp b/demos/tutorial/alignment/scoring_scheme_affine_dgs.cpp
new file mode 100644
index 0000000..f8685df
--- /dev/null
+++ b/demos/tutorial/alignment/scoring_scheme_affine_dgs.cpp
@@ -0,0 +1,42 @@
+//![main]
+#include <iostream>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+    typedef String<AminoAcid> TSequence;             // sequence type
+    typedef Align<TSequence, ArrayGaps> TAlign;      // align type
+//![main]
+
+//![init]
+    TSequence seq1 = "TELKDD";
+    TSequence seq2 = "LKTEL";
+    int gapExtend = -2;
+    int gapOpen = -10;
+
+
+    TAlign alignAffine;
+    resize(rows(alignAffine), 2);
+    assignSource(row(alignAffine, 0), seq1);
+    assignSource(row(alignAffine, 1), seq2);
+
+    TAlign alignDynamic;
+    resize(rows(alignDynamic), 2);
+    assignSource(row(alignDynamic, 0), seq1);
+    assignSource(row(alignDynamic, 1), seq2);
+//![init]
+
+//![alignment]
+    int scoreAffine = globalAlignment(alignAffine, Blosum62(gapExtend, gapOpen), AffineGaps());
+    std::cout << "ScoreAffine: " << scoreAffine << std::endl;
+    std::cout << alignAffine << std::endl;
+
+    int scoreDynamic = globalAlignment(alignDynamic, Blosum62(gapExtend, gapOpen), DynamicGaps());
+    std::cout << "ScoreDynamic: " << scoreDynamic << std::endl;
+    std::cout << alignDynamic << std::endl;
+
+    return 0;
+}
+//![alignment]
diff --git a/demos/tutorial/alignment/scoring_scheme_affine_dgs.cpp.stdout b/demos/tutorial/alignment/scoring_scheme_affine_dgs.cpp.stdout
new file mode 100644
index 0000000..85960f1
--- /dev/null
+++ b/demos/tutorial/alignment/scoring_scheme_affine_dgs.cpp.stdout
@@ -0,0 +1,16 @@
+ScoreAffine: -12
+      0     .   
+        TELKDD-
+          ||   
+        --LKTEL
+
+
+
+ScoreDynamic: -12
+      0     .   
+        TELKDD-
+          ||   
+        --LKTEL
+
+
+
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp b/demos/tutorial/alignment/scoring_scheme_matrix.cpp
similarity index 67%
copy from demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp
copy to demos/tutorial/alignment/scoring_scheme_matrix.cpp
index b8adb19..5276803 100644
--- a/demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp
+++ b/demos/tutorial/alignment/scoring_scheme_matrix.cpp
@@ -6,13 +6,14 @@ using namespace seqan;
 
 int main()
 {
-    typedef String<char> TSequence;                 // sequence type
+    typedef String<AminoAcid> TSequence;             // sequence type
     typedef Align<TSequence, ArrayGaps> TAlign;      // align type
 //![main]
 
 //![init]
-    TSequence seq1 = "CDFGHC";
-    TSequence seq2 = "CDEFGAHC";
+    TSequence seq1 = "TELKDD";
+    TSequence seq2 = "LKTEL";
+    int gap = -1;
 
     TAlign align;
     resize(rows(align), 2);
@@ -21,7 +22,7 @@ int main()
 //![init]
 
 //![alignment]
-    int score = globalAlignment(align, Score<int, Simple>(0, -1, -1));
+    int score = globalAlignment(align, seqan::Blosum62(gap, gap));
     std::cout << "Score: " << score << std::endl;
     std::cout << align << std::endl;
 
diff --git a/demos/tutorial/alignment/scoring_scheme_matrix.cpp.stdout b/demos/tutorial/alignment/scoring_scheme_matrix.cpp.stdout
new file mode 100644
index 0000000..d99f15e
--- /dev/null
+++ b/demos/tutorial/alignment/scoring_scheme_matrix.cpp.stdout
@@ -0,0 +1,5 @@
+Score: 9
+      0     .    
+        --TELKDD
+          |||   
+        LKTEL---
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp b/demos/tutorial/alignment/scoring_scheme_simple.cpp
similarity index 62%
copy from demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp
copy to demos/tutorial/alignment/scoring_scheme_simple.cpp
index b8adb19..c42abfc 100644
--- a/demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp
+++ b/demos/tutorial/alignment/scoring_scheme_simple.cpp
@@ -6,13 +6,16 @@ using namespace seqan;
 
 int main()
 {
-    typedef String<char> TSequence;                 // sequence type
+    typedef String<AminoAcid> TSequence;             // sequence type
     typedef Align<TSequence, ArrayGaps> TAlign;      // align type
 //![main]
 
 //![init]
-    TSequence seq1 = "CDFGHC";
-    TSequence seq2 = "CDEFGAHC";
+    TSequence seq1 = "TELKDD";
+    TSequence seq2 = "LKTEL";
+    int match = -0;
+    int mismatch = -1;
+    int gap = -1;
 
     TAlign align;
     resize(rows(align), 2);
@@ -21,7 +24,7 @@ int main()
 //![init]
 
 //![alignment]
-    int score = globalAlignment(align, Score<int, Simple>(0, -1, -1));
+    int score = globalAlignment(align, Score<int, Simple>(match, mismatch, gap));
     std::cout << "Score: " << score << std::endl;
     std::cout << align << std::endl;
 
diff --git a/demos/tutorial/alignment/scoring_scheme_simple.cpp.stdout b/demos/tutorial/alignment/scoring_scheme_simple.cpp.stdout
new file mode 100644
index 0000000..8933957
--- /dev/null
+++ b/demos/tutorial/alignment/scoring_scheme_simple.cpp.stdout
@@ -0,0 +1,5 @@
+Score: -5
+      0     .   
+        TELK-DD
+          ||   
+        --LKTEL
diff --git a/demos/tutorial/alignment_representation/align.cpp.stdout b/demos/tutorial/alignment_representation/align.cpp.stdout
deleted file mode 100644
index e6361f5..0000000
--- a/demos/tutorial/alignment_representation/align.cpp.stdout
+++ /dev/null
@@ -1,48 +0,0 @@
-//![output_manipulation]
-      0     .  
-        CDFGDC
-        ||    
-        CDEFGA
-
-
-      0     .     
-        CD-FG--DC
-        || ||   |
-        CDEFGAHGC
-
-
-
-ViewToSource1: 0,1,2,2,3,4,4,4,5,
-ViewToSource2: 0,1,2,3,4,5,6,7,8,
-
-SourceToView1: 0,1,3,4,7,8,
-SourceToView2: 0,1,2,3,4,5,6,7,8,
-//![output_manipulation]
-//![output_clipping]
-
-Before clipping:
-      0     .     
-        CD-FG--DC
-        || ||   |
-        CDEFGAHGC
-
-
-
-After clipping:
-      0     .  
-        D-FG--
-        | ||  
-        DEFGAH
-
-
-
-ViewToSource1: 1,2,2,3,4,4,
-ViewToSource2: 1,2,3,4,5,6,
-
-SourceToView1: -1,0,2,3,6,7,
-SourceToView2: -1,0,1,2,3,4,5,6,7,
-//![output_clipping]
-//![output_gaps]
-D-FG--
-CD-FG--DC
-//![output_gaps]
diff --git a/demos/tutorial/alignment_representation/graph.cpp b/demos/tutorial/alignment_representation/graph.cpp
deleted file mode 100644
index fe2817a..0000000
--- a/demos/tutorial/alignment_representation/graph.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-//![main]
-#include <iostream>
-#include <seqan/align.h>
-
-using namespace seqan;
-
-int main()
-{
-//![main]
-//![typedef]
-    typedef String<Dna> TSequence;
-    typedef StringSet<TSequence> TStringSet;
-    typedef StringSet<TSequence, Dependent<> > TDepStringSet;
-    typedef Graph<Alignment<TDepStringSet> > TAlignGraph;
-//![typedef]
-
-//![init]
-    TSequence seq1 = "TTGT";
-    TSequence seq2 = "TTAGT";
-
-    TStringSet strings;
-    appendValue(strings, seq1);
-    appendValue(strings, seq2);
-
-    TAlignGraph alignG(strings);
-//![init]
-
-//![construct]
-    std::cout << alignG << std::endl;
-
-    addEdge(alignG, addVertex(alignG, positionToId(stringSet(alignG), 0), 0, 2),
-            addVertex(alignG, positionToId(stringSet(alignG), 1), 0, 2));
-
-    addVertex(alignG, positionToId(stringSet(alignG), 1), 2, 1);
-
-    addEdge(alignG, addVertex(alignG, positionToId(stringSet(alignG), 0), 2, 2),
-            addVertex(alignG, positionToId(stringSet(alignG), 1), 3, 2));
-
-    std::cout << alignG << std::endl;
-
-    return 0;
-}
-//![construct]
diff --git a/demos/tutorial/alphabets/assignment_1_solution.cpp b/demos/tutorial/alphabets/assignment_1_solution.cpp
index f23d8d1..402112e 100644
--- a/demos/tutorial/alphabets/assignment_1_solution.cpp
+++ b/demos/tutorial/alphabets/assignment_1_solution.cpp
@@ -16,7 +16,7 @@ void showAllLettersOfMyAlphabet(TAlphabet const &)
     // We iterate over all characters of the alphabet
     // and output them
     for (TSize i = 0; i < alphSize; ++i)
-        std::cout << i << ',' << TAlphabet(i) << "  ";
+        std::cout << static_cast<unsigned>(i) << ',' << TAlphabet(i) << "  ";
     std::cout << std::endl;
 
 }
diff --git a/demos/tutorial/alphabets/assignment_1_solution.cpp.stdout b/demos/tutorial/alphabets/assignment_1_solution.cpp.stdout
index e96d70f..e7f0050 100644
Binary files a/demos/tutorial/alphabets/assignment_1_solution.cpp.stdout and b/demos/tutorial/alphabets/assignment_1_solution.cpp.stdout differ
diff --git a/demos/tutorial/basics/allocator.cpp.stdout b/demos/tutorial/basics/allocator.cpp.stdout
index ab914df..35a477e 100644
--- a/demos/tutorial/basics/allocator.cpp.stdout
+++ b/demos/tutorial/basics/allocator.cpp.stdout
@@ -1,6 +1,6 @@
-Allocating and clearing 100000 times blocks of size 10 with MultiPool Allocator took 0.00160217
-Allocating and clearing 100000 times blocks of size 10 with Standard Allocator took 0.023572
-Allocating and clearing 100000 times blocks of size 100 with MultiPool Allocator took 0.0129499
-Allocating and clearing 100000 times blocks of size 100 with Standard Allocator took 0.0315518
-Allocating and clearing 100000 times blocks of size 1000 with MultiPool Allocator took 0.132747
-Allocating and clearing 100000 times blocks of size 1000 with Standard Allocator took 0.119664
+Allocating and clearing 100000 times blocks of size 10 with MultiPool Allocator took [VAR]
+Allocating and clearing 100000 times blocks of size 10 with Standard Allocator took [VAR]
+Allocating and clearing 100000 times blocks of size 100 with MultiPool Allocator took [VAR]
+Allocating and clearing 100000 times blocks of size 100 with Standard Allocator took [VAR]
+Allocating and clearing 100000 times blocks of size 1000 with MultiPool Allocator took [VAR]
+Allocating and clearing 100000 times blocks of size 1000 with Standard Allocator took [VAR]
diff --git a/demos/tutorial/bed_io/base.cpp b/demos/tutorial/bed_io/base.cpp
index 608daca..fba8b0e 100644
--- a/demos/tutorial/bed_io/base.cpp
+++ b/demos/tutorial/bed_io/base.cpp
@@ -8,25 +8,25 @@ class BedRecord
 {
 public:
    CharString ref;      // reference name
-   __int32 rID;         // index in sequenceNames of BedFile
-   __int32 beginPos;    // begin position of the interval
-   __int32 endPos;      // end position of the interval
+   int32_t rID;         // index in sequenceNames of BedFile
+   int32_t beginPos;    // begin position of the interval
+   int32_t endPos;      // end position of the interval
    CharString name;     // name of the interval
    CharString score;    // score of the interval
    char strand;         // strand of the interval
 
-   __int32 thickBegin;  // begin position for drawing thickly
-   __int32 thickEnd;    // end position for drawing thickly
+   int32_t thickBegin;  // begin position for drawing thickly
+   int32_t thickEnd;    // end position for drawing thickly
    BedRgb itemRgb;      // color for the item
-   __int32 blockCount;  // number of blocks/exons
-   String<__int32> blockSizes;   // block sizes
-   String<__int32> blockBegins;  // block begin positions
+   int32_t blockCount;  // number of blocks/exons
+   String<int32_t> blockSizes;   // block sizes
+   String<int32_t> blockBegins;  // block begin positions
 
    CharString data;    // any data not fitting into other members
 
    // Constants for marking reference id and position as invalid.
-   static const __int32 INVALID_REFID = -1;
-   static const __int32 INVALID_POS = -1;
+   static const int32_t INVALID_REFID = -1;
+   static const int32_t INVALID_POS = -1;
 };
 //![bedRecord]
 
diff --git a/demos/tutorial/bed_io/example1.cpp.stdout b/demos/tutorial/bed_io/example1.cpp.stdout
index e69de29..683fbdd 100644
--- a/demos/tutorial/bed_io/example1.cpp.stdout
+++ b/demos/tutorial/bed_io/example1.cpp.stdout
@@ -0,0 +1,5 @@
+chr1	66999824	67210768	NM_032291	0	+	6700004167208778	0	25	227,64,25,72,57,55,176,12,12,25,52,86,93,75,501,128,127,60,112,156,133,203,65,165,2013,	0,91705,98928,101802,105635,108668,109402,126371,133388,136853,137802,139139,142862,145536,147727,155006,156048,161292,185152,195122,199606,205193,206516,207130,208931,
+chr1	48998526	50489626	NM_032785	0	-	4899984450489468	0	14	1439,27,97,163,153,112,115,90,40,217,95,125,123,192,	0,2035,6787,54149,57978,101638,120482,130297,334336,512729,712915,1164458,1318541,1490908,
+chr1	16767166	16786584	NM_018090	0	+	1676725616785385	0	8	182,101,105,82,109,178,76,1248,	0,2960,7198,7388,8421,11166,15146,18170,
+chr1	33546713	33585995	NM_052998	0	+	3354785033585783	0	12	182,121,212,177,174,173,135,166,163,113,215,351,0,275,488,1065,2841,10937,12169,13435,15594,16954,36789,38931,
+chr1	16767166	16786584	NM_001145278	0	+	1676725616785385	0	8	104,101,105,82,109,178,76,1248,	0,2960,7198,7388,8421,11166,15146,18170,
diff --git a/demos/tutorial/bed_io/solution1.cpp.stdout b/demos/tutorial/bed_io/solution1.cpp.stdout
index e69de29..683fbdd 100644
--- a/demos/tutorial/bed_io/solution1.cpp.stdout
+++ b/demos/tutorial/bed_io/solution1.cpp.stdout
@@ -0,0 +1,5 @@
+chr1	66999824	67210768	NM_032291	0	+	6700004167208778	0	25	227,64,25,72,57,55,176,12,12,25,52,86,93,75,501,128,127,60,112,156,133,203,65,165,2013,	0,91705,98928,101802,105635,108668,109402,126371,133388,136853,137802,139139,142862,145536,147727,155006,156048,161292,185152,195122,199606,205193,206516,207130,208931,
+chr1	48998526	50489626	NM_032785	0	-	4899984450489468	0	14	1439,27,97,163,153,112,115,90,40,217,95,125,123,192,	0,2035,6787,54149,57978,101638,120482,130297,334336,512729,712915,1164458,1318541,1490908,
+chr1	16767166	16786584	NM_018090	0	+	1676725616785385	0	8	182,101,105,82,109,178,76,1248,	0,2960,7198,7388,8421,11166,15146,18170,
+chr1	33546713	33585995	NM_052998	0	+	3354785033585783	0	12	182,121,212,177,174,173,135,166,163,113,215,351,0,275,488,1065,2841,10937,12169,13435,15594,16954,36789,38931,
+chr1	16767166	16786584	NM_001145278	0	+	1676725616785385	0	8	104,101,105,82,109,178,76,1248,	0,2960,7198,7388,8421,11166,15146,18170,
diff --git a/demos/tutorial/blast/plus_sub.m0 b/demos/tutorial/blast_io/plus_sub.m0
similarity index 100%
rename from demos/tutorial/blast/plus_sub.m0
rename to demos/tutorial/blast_io/plus_sub.m0
diff --git a/demos/tutorial/blast/read_assignment.cpp b/demos/tutorial/blast_io/read_assignment.cpp
similarity index 94%
rename from demos/tutorial/blast/read_assignment.cpp
rename to demos/tutorial/blast_io/read_assignment.cpp
index af92422..25fb293 100644
--- a/demos/tutorial/blast/read_assignment.cpp
+++ b/demos/tutorial/blast_io/read_assignment.cpp
@@ -1,6 +1,6 @@
 #include <iostream>
 #include <seqan/basic.h>
-#ifndef PLATFORM_WINDOWS_VS
+#ifndef STDLIB_VS
 #include <seqan/blast.h>
 
 using namespace seqan;
@@ -8,7 +8,10 @@ using namespace seqan;
 int main(int argc, char **argv)
 {
     if (argc != 2)
-        return 1;
+    {
+      std::cerr << "USAGE: FILE_IN\n";
+      return 0;
+    }
 
     typedef Gaps<String<AminoAcid>, ArrayGaps> TGaps;
     typedef BlastMatch<TGaps, TGaps> TBlastMatch;
@@ -77,7 +80,7 @@ int main(int argc, char **argv)
 #else
 int main()
 {
-    std::cerr << "Demo not run, because of a bug in Microsoft Visual Studio 2015.\n";
+    std::cerr << "USAGE: FILE_IN\n";
     return 0;
 }
-#endif
\ No newline at end of file
+#endif
diff --git a/demos/tutorial/blast_io/read_assignment.cpp.stderr b/demos/tutorial/blast_io/read_assignment.cpp.stderr
new file mode 100644
index 0000000..f005c58
--- /dev/null
+++ b/demos/tutorial/blast_io/read_assignment.cpp.stderr
@@ -0,0 +1 @@
+USAGE: FILE_IN
diff --git a/demos/tutorial/blast/write_assignment.cpp b/demos/tutorial/blast_io/write_assignment.cpp
similarity index 96%
rename from demos/tutorial/blast/write_assignment.cpp
rename to demos/tutorial/blast_io/write_assignment.cpp
index 6089143..f5f84ff 100644
--- a/demos/tutorial/blast/write_assignment.cpp
+++ b/demos/tutorial/blast_io/write_assignment.cpp
@@ -1,6 +1,6 @@
 #include <iostream>
 #include <seqan/basic.h>
-#ifndef PLATFORM_WINDOWS_VS
+#ifndef STDLIB_VS
 #include <seqan/blast.h>
 
 using namespace seqan;
@@ -8,7 +8,10 @@ using namespace seqan;
 int main(int argc, char ** argv)
 {
     if (argc != 2)
-        return 1;
+    {
+      std::cerr << "USAGE: FILE_OUT\n";
+      return 0;
+    }
 
     typedef String<AminoAcid>               TSequence;
     typedef std::string                     TId;
@@ -108,7 +111,7 @@ int main(int argc, char ** argv)
 #else
 int main()
 {
-    std::cerr << "Demo not run, because of a bug in Microsoft Visual Studio 2015.\n";
+    std::cerr << "USAGE: FILE_OUT\n";
     return 0;
 }
-#endif
\ No newline at end of file
+#endif
diff --git a/demos/tutorial/blast_io/write_assignment.cpp.stderr b/demos/tutorial/blast_io/write_assignment.cpp.stderr
new file mode 100644
index 0000000..05c88a0
--- /dev/null
+++ b/demos/tutorial/blast_io/write_assignment.cpp.stderr
@@ -0,0 +1 @@
+USAGE: FILE_OUT
diff --git a/demos/tutorial/blast/write_assignment.m0 b/demos/tutorial/blast_io/write_assignment.m0
similarity index 100%
rename from demos/tutorial/blast/write_assignment.m0
rename to demos/tutorial/blast_io/write_assignment.m0
diff --git a/demos/tutorial/blast/write_assignment.m8 b/demos/tutorial/blast_io/write_assignment.m8
similarity index 100%
rename from demos/tutorial/blast/write_assignment.m8
rename to demos/tutorial/blast_io/write_assignment.m8
diff --git a/demos/tutorial/blast/write_assignment.m9 b/demos/tutorial/blast_io/write_assignment.m9
similarity index 100%
rename from demos/tutorial/blast/write_assignment.m9
rename to demos/tutorial/blast_io/write_assignment.m9
diff --git a/demos/tutorial/blast/write_assignment_legacy.m8 b/demos/tutorial/blast_io/write_assignment_legacy.m8
similarity index 100%
rename from demos/tutorial/blast/write_assignment_legacy.m8
rename to demos/tutorial/blast_io/write_assignment_legacy.m8
diff --git a/demos/tutorial/file_io_overview/example1.cpp b/demos/tutorial/file_io_overview/example1.cpp
index 3b621d4..825a5da 100644
--- a/demos/tutorial/file_io_overview/example1.cpp
+++ b/demos/tutorial/file_io_overview/example1.cpp
@@ -7,15 +7,20 @@ int main()
 {
 //![include]
 //![ctor]
-    // Open input BAM file, BamFileIn supports both SAM and BAM files.
     CharString bamFileInName = getAbsolutePath("demos/tutorial/file_io_overview/example.bam");
     CharString samFileOutName = getAbsolutePath("demos/tutorial/file_io_overview/example.sam");
+
+    // Open input BAM file, BamFileIn supports both SAM and BAM files.
     BamFileIn bamFileIn(toCString(bamFileInName));
-//![ctor]
 
-//![open]
     // Open output SAM file by passing the context of bamFileIn and the filename to open.
     BamFileOut samFileOut(context(bamFileIn), toCString(samFileOutName));
+//![ctor]
+
+//![open]
+    // Alternative way to open a bam or sam file
+    BamFileIn openBamFileIn;
+    open(openBamFileIn, toCString(bamFileInName));
 //![open]
 
 //![header]
diff --git a/demos/tutorial/fragment_store/access_aligned_reads2.cpp b/demos/tutorial/fragment_store/access_aligned_reads2.cpp
index b9f7aa2..38fe8ec 100644
--- a/demos/tutorial/fragment_store/access_aligned_reads2.cpp
+++ b/demos/tutorial/fragment_store/access_aligned_reads2.cpp
@@ -27,7 +27,7 @@ int main()
     typedef Gaps<TContig::TContigSeq, AnchorGaps<TContig::TGapAnchors> >    TContigGaps;
     typedef Gaps<TStore::TReadSeq, AnchorGaps<TAlignedRead::TGapAnchors> >  TReadGaps;
 
-    TStore::TReadSeq readSeq;
+    CharString readSeq;
 //![typedefs]
 
 //![output]
diff --git a/demos/tutorial/fragment_store/access_aligned_reads2.cpp.stdout b/demos/tutorial/fragment_store/access_aligned_reads2.cpp.stdout
index 215e5bf..53811d1 100644
--- a/demos/tutorial/fragment_store/access_aligned_reads2.cpp.stdout
+++ b/demos/tutorial/fragment_store/access_aligned_reads2.cpp.stdout
@@ -1,6 +1,6 @@
 ALIGNMENT 140
 	contig 0:	CTGTGTTTAGTGCCTTTGTTCA-----ACCCCCTTGCAACAACCT     	[266..306[
-	read 149:	ctgtgtttagtgcctttgttca-----acccccttgcaac
+	read 149:	CTGTGTTTAGTGCCTTTGTTCA-----ACCCCCTTGCAAC
 
 ALIGNMENT 144
 	contig 0:	AGTGCCTTTGTTCA-----ACCCCCTTGCAACAACCTTGAG     	[274..310[
@@ -16,5 +16,5 @@ ALIGNMENT 152
 
 ALIGNMENT 156
 	contig 0:	TTGCAACAACCTTGAGAACCCCAGGGAATTTGTCA     	[294..329[
-	read 165:	cccccttgcaacaaccttgagaaccccagggaatt
+	read 165:	CCCCCTTGCAACAACCTTGAGAACCCCAGGGAATT
 
diff --git a/demos/tutorial/gff_and_gtf_io/base.cpp b/demos/tutorial/gff_and_gtf_io/base.cpp
index 35b103e..87349ce 100644
--- a/demos/tutorial/gff_and_gtf_io/base.cpp
+++ b/demos/tutorial/gff_and_gtf_io/base.cpp
@@ -7,11 +7,11 @@ class GffRecord
 {
 public:
     CharString ref;      // reference name
-    __int32 rID;         // index in sequenceNames of GffFile
+    int32_t rID;         // index in sequenceNames of GffFile
     CharString source;   // source free text descriptor
     CharString type;     // type of the feature
-    __int32 beginPos;    // begin position of the interval
-    __int32 endPos;      // end position of the interval
+    int32_t beginPos;    // begin position of the interval
+    int32_t endPos;      // end position of the interval
     float score;         // score of the annotation
     char strand;         // the strand
     char phase;          // one of '0', '1', '2', and '.'
@@ -24,8 +24,8 @@ public:
     static float INVALID_SCORE();
 
     // Constants for marking reference id and position as invalid.
-    static const __int32 INVALID_IDX = -1;
-    static const __int32 INVALID_POS = -1;
+    static const int32_t INVALID_IDX = -1;
+    static const int32_t INVALID_POS = -1;
 };
 //![GffRecord]
 
diff --git a/demos/tutorial/graph/graph_algo_scc.cpp b/demos/tutorial/graph/graph_algo_scc.cpp
index 5a4cf6f..d3cd1b5 100644
--- a/demos/tutorial/graph/graph_algo_scc.cpp
+++ b/demos/tutorial/graph/graph_algo_scc.cpp
@@ -62,7 +62,7 @@ int main()
     }
 //![output-connected-components]
     std::cout << "//![output-connected-components]" << std::endl;
-//![output-connected-components]
+//![return]
     return 0;
 }
-//![output-connected-components]
+//![return]
diff --git a/demos/tutorial/graph/graph_hmm.cpp b/demos/tutorial/graph/graph_hmm.cpp
index 448c733..1890f84 100644
--- a/demos/tutorial/graph/graph_hmm.cpp
+++ b/demos/tutorial/graph/graph_hmm.cpp
@@ -1,7 +1,6 @@
 //![includes]
 #include <iostream>
 #include <seqan/graph_algorithms.h>
-#include <seqan/basic/basic_math.h>
 
 using namespace seqan;
 //![includes]
diff --git a/demos/tutorial/graph/solution_1.cpp b/demos/tutorial/graph/solution_1.cpp
index 7b916b1..a512ea7 100644
--- a/demos/tutorial/graph/solution_1.cpp
+++ b/demos/tutorial/graph/solution_1.cpp
@@ -25,9 +25,6 @@ int main()
 
     dotFile.close();
 
-    typedef Iterator<TGraph, VertexIterator>::Type TVertexIterator;
-    TVertexIterator itV(g);
-
     std::cout << g << std::endl;
 
     return 0;
diff --git a/demos/tutorial/index_iterators/index_search.cpp b/demos/tutorial/index_iterators/index_search.cpp
index 3644caf..6183d7d 100644
--- a/demos/tutorial/index_iterators/index_search.cpp
+++ b/demos/tutorial/index_iterators/index_search.cpp
@@ -9,7 +9,7 @@ using namespace seqan;
 int main()
 {
     typedef Index<CharString> TIndex;
-    TIndex index("How many wood would a woodchuck chuck?");
+    TIndex index("How much wood would a woodchuck chuck?");
 //![initialization]
 //![initialization]
 
diff --git a/demos/tutorial/indexed_fasta_io/base.cpp b/demos/tutorial/indexed_fasta_io/base.cpp
index fd38897..aeaad8b 100644
--- a/demos/tutorial/indexed_fasta_io/base.cpp
+++ b/demos/tutorial/indexed_fasta_io/base.cpp
@@ -29,7 +29,7 @@ int main()
 
 //![open_index1]
     if (!open(faiIndex, toCString(pathToFile)))
-        std::cout << "ERROR: Could not load FAI index " << pathToFaiFile << "\n";
+        std::cout << "ERROR: Could not load FAI index " << pathToFile << ".fai\n";
 //![open_index1]
 
 //![open_index2]
diff --git a/demos/tutorial/indexed_fasta_io/base.cpp.stdout b/demos/tutorial/indexed_fasta_io/base.cpp.stdout
index c95cce0..e69de29 100644
--- a/demos/tutorial/indexed_fasta_io/base.cpp.stdout
+++ b/demos/tutorial/indexed_fasta_io/base.cpp.stdout
@@ -1 +0,0 @@
-ERROR: FAI index has no entry for chr1.
diff --git a/demos/tutorial/indexed_fasta_io/example.fasta.fai b/demos/tutorial/indexed_fasta_io/example.fasta.fai
index e69de29..2b974e9 100644
--- a/demos/tutorial/indexed_fasta_io/example.fasta.fai
+++ b/demos/tutorial/indexed_fasta_io/example.fasta.fai
@@ -0,0 +1 @@
+chr1	60	6	60	60
diff --git a/demos/tutorial/indexed_fasta_io/solution1.cpp b/demos/tutorial/indexed_fasta_io/solution1.cpp
index e8f976b..19efe93 100644
--- a/demos/tutorial/indexed_fasta_io/solution1.cpp
+++ b/demos/tutorial/indexed_fasta_io/solution1.cpp
@@ -9,14 +9,14 @@ int main(int argc, char const ** argv)
     if (argc != 2)
     {
         std::cerr << "USAGE: build_fai FILE.fa\n";
-        return 1;
+        return 0;
     }
 
     FaiIndex faiIndex;
     if (!build(faiIndex, argv[1]))
     {
         std::cerr << "ERROR: Could not build FAI index for file " << argv[1] << ".\n";
-        return 1;
+        return 0;
     }
 
     CharString faiFilename = argv[1];
@@ -25,7 +25,7 @@ int main(int argc, char const ** argv)
     if (!save(faiIndex, toCString(faiFilename)))
     {
         std::cerr << "ERROR: Could not write the index to file!\n";
-        return 1;
+        return 0;
     }
 
     std::cout << "Index file " << faiFilename << " was successfully created.\n";
diff --git a/demos/tutorial/indexed_fasta_io/solution1.cpp.stderr b/demos/tutorial/indexed_fasta_io/solution1.cpp.stderr
new file mode 100644
index 0000000..66ca5d0
--- /dev/null
+++ b/demos/tutorial/indexed_fasta_io/solution1.cpp.stderr
@@ -0,0 +1 @@
+USAGE: build_fai FILE.fa
diff --git a/demos/tutorial/bed_io/solution1.cpp.stdout b/demos/tutorial/indexed_fasta_io/solution1.cpp.stdout
similarity index 100%
copy from demos/tutorial/bed_io/solution1.cpp.stdout
copy to demos/tutorial/indexed_fasta_io/solution1.cpp.stdout
diff --git a/demos/tutorial/indexed_fasta_io/solution2.cpp b/demos/tutorial/indexed_fasta_io/solution2.cpp
index ccdcf4c..1f2f869 100644
--- a/demos/tutorial/indexed_fasta_io/solution2.cpp
+++ b/demos/tutorial/indexed_fasta_io/solution2.cpp
@@ -9,8 +9,8 @@ int main(int argc, char const ** argv)
 {
     if (argc != 5)
     {
-        std::cerr << "USAGE: build_fai FILE.fa SEQ BEGIN END\n";
-        return 1;
+        std::cerr << "USAGE: query_fai FILE.fa SEQ BEGIN END\n";
+        return 0;
     }
 
     // Try to load index and create on the fly if necessary.
@@ -20,12 +20,12 @@ int main(int argc, char const ** argv)
         if (!build(faiIndex, argv[1]))
         {
             std::cerr << "ERROR: Index could not be loaded or built.\n";
-            return 1;
+            return 0;
         }
         if (!save(faiIndex))    // Name is stored from when reading.
         {
             std::cerr << "ERROR: Index could not be written do disk.\n";
-            return 1;
+            return 0;
         }
     }
 
@@ -34,7 +34,7 @@ int main(int argc, char const ** argv)
     if (!getIdByName(idx, faiIndex, argv[2]))
     {
         std::cerr << "ERROR: Index does not know about sequence " << argv[2] << "\n";
-        return 1;
+        return 0;
     }
 
     // Convert positions into integers.
@@ -42,12 +42,12 @@ int main(int argc, char const ** argv)
     if (!lexicalCast(beginPos, argv[3]))
     {
         std::cerr << "ERROR: Cannot cast " << argv[3] << " into an unsigned.\n";
-        return 1;
+        return 0;
     }
     if (!lexicalCast(endPos, argv[4]))
     {
         std::cerr << "ERROR: Cannot cast " << argv[4] << " into an unsigned.\n";
-        return 1;
+        return 0;
     }
 
     // Make sure begin and end pos are on the sequence and begin <= end.
diff --git a/demos/tutorial/indexed_fasta_io/solution2.cpp.stderr b/demos/tutorial/indexed_fasta_io/solution2.cpp.stderr
new file mode 100644
index 0000000..cba001c
--- /dev/null
+++ b/demos/tutorial/indexed_fasta_io/solution2.cpp.stderr
@@ -0,0 +1 @@
+USAGE: query_fai FILE.fa SEQ BEGIN END
diff --git a/demos/tutorial/bed_io/example1.cpp.stdout b/demos/tutorial/indexed_fasta_io/solution2.cpp.stdout
similarity index 100%
copy from demos/tutorial/bed_io/example1.cpp.stdout
copy to demos/tutorial/indexed_fasta_io/solution2.cpp.stdout
diff --git a/demos/tutorial/indices/base.cpp b/demos/tutorial/indices/base.cpp
index cdc5363..e7aed11 100644
--- a/demos/tutorial/indices/base.cpp
+++ b/demos/tutorial/indices/base.cpp
@@ -29,6 +29,12 @@ using namespace seqan;
 
 int main()
 {
+//![assignment1]
+//![save]
+    const char * tempFileName = SEQAN_TEMP_FILENAME();
+//![save]
+    {
+//![assignment1]
     String<char> text = "This is the first example";
     Index<String<char>, FMIndex<> > index(text);
 
@@ -51,9 +57,6 @@ int main()
 //![finder]
     Finder<Index<String<Dna5>, IndexEsa<> > > esaFinder(esaIndex);
 //![finder]
-//![finder2]
-    find(esaFinder, "ACGT");
-//![finder2]
 //![finder_multiple]
     find(esaFinder, "ACGT");  // first occurrence of "ACGT"
     find(esaFinder, "ACGT");  // second occurrence of "ACGT"
@@ -69,7 +72,6 @@ int main()
 //![finder_position]
 
 //![save]
-    const char * tempFileName = SEQAN_TEMP_FILENAME();
     save(index, tempFileName);
 //![save]
 //![open]
@@ -98,6 +100,11 @@ int main()
     typedef FMIndexConfig<void, unsigned> TConfig;
     Index<StringSet<String<Dna> >, FMIndex<void, TConfig> > configIndex(set);
 //![config]
+    }
+
+    // clean up tmp directory
+    ClassTest::_deleteTempFile(ClassTest::_stripFileName(tempFileName));
+
 //![assignment1]
     return 0;
 }
diff --git a/demos/tutorial/iterators/base.cpp b/demos/tutorial/iterators/base.cpp
index 9bcc9b4..1dfc900 100644
--- a/demos/tutorial/iterators/base.cpp
+++ b/demos/tutorial/iterators/base.cpp
@@ -18,9 +18,9 @@ int main()
 //![use-case]
     DnaString genome = "ACGTACGTACGT";
     typedef Iterator<DnaString>::Type TIterator;
-    for (TIterator it = begin(genome); it != end(genome); goNext(it))
+    for (TIterator it = begin(genome); it != end(genome); ++it)
     {
-        std::cout << value(it);
+        std::cout << *it;
     }
 //![use-case]
     std::cout << "\n//![use-case]\n";
diff --git a/demos/tutorial/journaled_string_tree/journaled_string_tree_base.cpp b/demos/tutorial/journaled_string_tree/journaled_string_tree_base.cpp
new file mode 100644
index 0000000..d6bc1da
--- /dev/null
+++ b/demos/tutorial/journaled_string_tree/journaled_string_tree_base.cpp
@@ -0,0 +1,64 @@
+//![include]
+#include <iostream>
+#include <seqan/stream.h>
+#include <seqan/journaled_string_tree.h>
+//![include]
+
+//![match_printer]
+template <typename TTraverser>
+struct MatchPrinter
+{
+    TTraverser & trav;
+
+    MatchPrinter(TTraverser & _trav) : trav(_trav)
+    {}
+
+    void
+    operator()()
+    {
+        auto pos = position(trav);
+        for (auto p : pos)
+        {
+            std::cout  << "Seq: " << p.i1 << " Pos: " << p.i2 << std::endl;
+        }
+    }
+};
+//![match_printer]
+
+//![typedef]
+using namespace seqan;
+
+int main()
+{
+    typedef JournaledStringTree<DnaString> TJst;
+    typedef Pattern<DnaString, Horspool>   TPattern;
+    typedef Traverser<TJst>::Type          TTraverser;
+//![typedef]
+
+//![init]
+    DnaString seq = "AGATCGAGCGAGCTAGCGACTCAG";
+    TJst jst(seq, 10);
+
+    insert(jst, 1, 3, std::vector<unsigned>{1, 3, 5, 6, 7}, DeltaTypeDel());
+    insert(jst, 8, "CGTA", std::vector<unsigned>{1, 2}, DeltaTypeIns());
+    insert(jst, 10, 'C', std::vector<unsigned>{4, 9}, DeltaTypeSnp());
+    insert(jst, 15, 2, std::vector<unsigned>{0, 4, 7}, DeltaTypeDel());
+    insert(jst, 20, 'A', std::vector<unsigned>{0, 9}, DeltaTypeSnp());
+    insert(jst, 20, Pair<unsigned, DnaString>(1, "CTC"), std::vector<unsigned>{1, 2, 3, 7}, DeltaTypeSV());
+//![init]
+
+//![prepare_search]
+    DnaString ndl = "AGCGT";
+    TTraverser trav(jst, length(ndl));
+
+    TPattern pat(ndl);
+    JstExtension<TPattern> ext(pat);
+//![prepare_search]
+
+//![search]
+    MatchPrinter<TTraverser> delegate(trav);
+    find(trav, ext, delegate);
+
+    return 0;
+}
+//![search]
\ No newline at end of file
diff --git a/demos/tutorial/journaled_string_tree/journaled_string_tree_base.cpp.stdout b/demos/tutorial/journaled_string_tree/journaled_string_tree_base.cpp.stdout
new file mode 100644
index 0000000..b37756c
--- /dev/null
+++ b/demos/tutorial/journaled_string_tree/journaled_string_tree_base.cpp.stdout
@@ -0,0 +1,2 @@
+Seq: 1 Pos: 7
+Seq: 2 Pos: 10
diff --git a/demos/tutorial/journaled_string_tree/journaled_string_tree_base_assignment1.cpp b/demos/tutorial/journaled_string_tree/journaled_string_tree_base_assignment1.cpp
new file mode 100644
index 0000000..be8fc59
--- /dev/null
+++ b/demos/tutorial/journaled_string_tree/journaled_string_tree_base_assignment1.cpp
@@ -0,0 +1,52 @@
+#include <iostream>
+#include <seqan/stream.h>
+#include <seqan/journaled_string_tree.h>
+
+template <typename TTraverser>
+struct MatchPrinter
+{
+    TTraverser & trav;
+
+    MatchPrinter(TTraverser & _trav) : trav(_trav)
+    {}
+
+    void
+    operator()()
+    {
+        auto pos = position(trav);
+        for (auto p : pos)
+        {
+            std::cout  << "Seq: " << p.i1 << " Pos: " << p.i2 << std::endl;
+        }
+    }
+};
+
+using namespace seqan;
+
+int main()
+{
+    typedef JournaledStringTree<DnaString>   TJst;
+    typedef Pattern<DnaString, MyersUkkonen> TPattern;
+    typedef Traverser<TJst>::Type            TTraverser;
+
+    DnaString seq = "AGATCGAGCGAGCTAGCGACTCAG";
+    TJst jst(seq, 10);
+
+    insert(jst, 1, 3, std::vector<unsigned>{1, 3, 5, 6, 7}, DeltaTypeDel());
+    insert(jst, 8, "CGTA", std::vector<unsigned>{1, 2}, DeltaTypeIns());
+    insert(jst, 10, 'C', std::vector<unsigned>{4, 9}, DeltaTypeSnp());
+    insert(jst, 15, 2, std::vector<unsigned>{0, 4, 7}, DeltaTypeDel());
+    insert(jst, 20, 'A', std::vector<unsigned>{0, 9}, DeltaTypeSnp());
+    insert(jst, 20, Pair<unsigned, DnaString>(1, "CTC"), std::vector<unsigned>{1, 2, 3, 7}, DeltaTypeSV());
+
+    DnaString ndl = "CCTCCA";
+    TTraverser trav(jst, length(ndl) + 2);
+
+    TPattern pat(ndl, -2);
+    JstExtension<TPattern> ext(pat);
+
+    MatchPrinter<TTraverser> delegate(trav);
+    find(trav, ext, delegate);
+
+    return 0;
+}
diff --git a/demos/tutorial/journaled_string_tree/journaled_string_tree_base_assignment1.cpp.stdout b/demos/tutorial/journaled_string_tree/journaled_string_tree_base_assignment1.cpp.stdout
new file mode 100644
index 0000000..ede1138
--- /dev/null
+++ b/demos/tutorial/journaled_string_tree/journaled_string_tree_base_assignment1.cpp.stdout
@@ -0,0 +1,20 @@
+Seq: 7 Pos: 17
+Seq: 7 Pos: 18
+Seq: 4 Pos: 20
+Seq: 1 Pos: 23
+Seq: 2 Pos: 26
+Seq: 3 Pos: 19
+Seq: 1 Pos: 24
+Seq: 2 Pos: 27
+Seq: 3 Pos: 20
+Seq: 1 Pos: 25
+Seq: 2 Pos: 28
+Seq: 3 Pos: 21
+Seq: 7 Pos: 19
+Seq: 1 Pos: 26
+Seq: 2 Pos: 29
+Seq: 3 Pos: 22
+Seq: 7 Pos: 20
+Seq: 5 Pos: 19
+Seq: 6 Pos: 19
+Seq: 8 Pos: 22
diff --git a/demos/tutorial/metafunctions/assignment1_solution.cpp b/demos/tutorial/metafunctions/assignment1_solution.cpp
new file mode 100644
index 0000000..3a48064
--- /dev/null
+++ b/demos/tutorial/metafunctions/assignment1_solution.cpp
@@ -0,0 +1,35 @@
+#include <iostream>
+#include <seqan/basic.h>
+#include <seqan/stream.h>
+
+using namespace seqan;
+
+template <typename T>
+void checkContainerForDna(T & container)
+{
+    // Type Metafunction Value<>
+    typedef typename Value<T>::Type TAlphType;
+
+    // Value Metafunction IsSameType<> evaluated at compile time
+    if (IsSameType<TAlphType, Dna>::VALUE)
+        std::cout << "I have found a container with Dna!" <<  std::endl;
+    else
+        std::cout << "No Dna anywhere." <<  std::endl;
+}
+
+int main()
+{
+    typedef String<Dna> TDnaString;
+    TDnaString dna = "AAAATTTT";
+
+    typedef String<int> TIntString;
+
+    TIntString numbers;
+    appendValue(numbers, 1);
+    appendValue(numbers, 3);
+
+    checkContainerForDna(dna);
+    checkContainerForDna(numbers);
+
+    return 0;
+}
diff --git a/demos/tutorial/metafunctions/assignment1_solution.cpp.stdout b/demos/tutorial/metafunctions/assignment1_solution.cpp.stdout
new file mode 100644
index 0000000..bfe33c1
--- /dev/null
+++ b/demos/tutorial/metafunctions/assignment1_solution.cpp.stdout
@@ -0,0 +1,2 @@
+I have found a container with Dna!
+No Dna anywhere.
diff --git a/demos/tutorial/metafunctions/base.cpp b/demos/tutorial/metafunctions/base.cpp
index 0e3b052..9295cf1 100644
--- a/demos/tutorial/metafunctions/base.cpp
+++ b/demos/tutorial/metafunctions/base.cpp
@@ -41,17 +41,18 @@ void exchangeFirstValues(T & str)
 template <typename T>
 void printLenOfFixedSizeString(T const &)
 {
-    std::cout << LENGTH<T>::VALUE;
+    std::cout << LENGTH<T>::VALUE << std::endl;
 }
 
 //![length]
-
+//![length]
 int main()
 {
+//![length]
 //![amino]
     String<AminoAcid> amino_str = "ARN";
 //![amino]
-
+    std::cout << "//![iterator]" << std::endl;
 //![iterator]
     String<char> str = "I am a string";
     Iterator<String<char> >::Type it = begin(str);
@@ -60,11 +61,16 @@ int main()
         std::cout << *it;
         ++it;
     }
+    std::cout << std::endl;
 //![iterator]
-
+    std::cout << "//![iterator]" << std::endl;
+    std::cout << "//![length]" << std::endl;
 //![length]
     String<char, Array<100> > my_str;
     printLenOfFixedSizeString(my_str);
 //![length]
+    std::cout << "//![length]" << std::endl;
+//![length]
     return 0;
 }
+//![length]
diff --git a/demos/tutorial/metafunctions/base.cpp.stdout b/demos/tutorial/metafunctions/base.cpp.stdout
index 4402b9e..fda5ac6 100644
--- a/demos/tutorial/metafunctions/base.cpp.stdout
+++ b/demos/tutorial/metafunctions/base.cpp.stdout
@@ -1 +1,6 @@
-I am a string1
\ No newline at end of file
+//![iterator]
+I am a string
+//![iterator]
+//![length]
+100
+//![length]
diff --git a/demos/tutorial/metafunctions/swap.cpp b/demos/tutorial/metafunctions/swap.cpp
deleted file mode 100644
index 069e283..0000000
--- a/demos/tutorial/metafunctions/swap.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-//![swap-headers]
-#include <iostream>
-#include <seqan/basic.h>
-#include <seqan/stream.h>
-
-using namespace seqan;
-//![swap-headers]
-
-//![swap-declaration]
-template <typename T>
-void swap(T & container, int i, int j, int k)
-{
-//![swap-declaration]
-
-//![swap-metafunction]
-    // define helper variable
-    T help;
-    resize(help, k);
-
-    for (int x = 0; x < k; ++x)
-        value(help, x) = container[i + x];
-//![swap-metafunction]
-
-//![swap-work]
-    for (int x = 0; x < k; ++x)
-        value(container, i + x) = value(container, j + x);
-    for (int x = 0; x < k; ++x)
-        value(container, j + x) = help[x];
-
-    return;
-}
-//![swap-work]
-
-//![swap-main]
-int main()
-{
-    typedef String<Dna> TDnaString;
-    TDnaString dna = "AAAATTTT";
-
-    typedef String<int> TIntString;
-    typedef Iterator<String<int>, Rooted>::Type TIntIterator;
-
-    TIntString numbers;
-    appendValue(numbers, 1);   appendValue(numbers, 1);   appendValue(numbers, 1);
-    appendValue(numbers, 1);   appendValue(numbers, 1);   appendValue(numbers, 1);
-    appendValue(numbers, 3);   appendValue(numbers, 3);   appendValue(numbers, 3);
-    appendValue(numbers, 3);   appendValue(numbers, 3);   appendValue(numbers, 3);
-//![swap-main]
-
-//![swap-apply]
-    swap(dna, 1, 4, 2);
-    std::cout << dna << "\n";
-
-    swap(numbers, 1, 7, 2);
-    for (TIntIterator it = begin(numbers); !atEnd(it); goNext(it))
-        std::cout << *it;
-    std::cout << "\n";
-
-    return 0;
-}
-//![swap-apply]
diff --git a/demos/tutorial/metafunctions/swap.cpp.stdout b/demos/tutorial/metafunctions/swap.cpp.stdout
deleted file mode 100644
index da392f0..0000000
--- a/demos/tutorial/metafunctions/swap.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-ATTAAATT
-133111311333
diff --git a/demos/tutorial/multiple_sequence_alignment/consensus.cpp b/demos/tutorial/multiple_sequence_alignment/consensus.cpp
index b057e68..b014307 100644
--- a/demos/tutorial/multiple_sequence_alignment/consensus.cpp
+++ b/demos/tutorial/multiple_sequence_alignment/consensus.cpp
@@ -47,7 +47,7 @@ int main()
     resize(profile, length(row(align, 0)));
     for (unsigned rowNo = 0; rowNo < 4u; ++rowNo)
         for (unsigned i = 0; i < length(row(align, rowNo)); ++i)
-            profile[i].count[ordValue(row(align, rowNo)[i])] += 1;
+            profile[i].count[ordValue(getValue(row(align, rowNo), i))] += 1;
 //![profile-computation]
 
 //![consensus-calling]
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment1.cpp b/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment1.cpp
index ca720e3..ba5b5ef 100644
--- a/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment1.cpp
+++ b/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment1.cpp
@@ -7,7 +7,7 @@ using namespace seqan;
 int main()
 {
     typedef String<Dna> TSequence;                 // sequence type
-    typedef Align<TSequence, ArrayGaps> TAlign;      // align type
+    typedef Align<TSequence, ArrayGaps> TAlign;    // align type
 //![main]
 
 //![init]
@@ -21,7 +21,7 @@ int main()
 //![init]
 
 //![alignment]
-    int score = globalAlignment(align, Score<int, Simple>(4, -2, -2, -4));
+    int score = globalAlignment(align, Score<int, Simple>(4, -2, -2, -4), AffineGaps());
     std::cout << "Score: " << score << std::endl;
     std::cout << align << std::endl;
 
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment2.cpp b/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment2.cpp
index 73eb3f0..0d8d461 100644
--- a/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment2.cpp
+++ b/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment2.cpp
@@ -6,10 +6,10 @@ using namespace seqan;
 
 int main()
 {
-    typedef String<Dna> TSequence;                 // sequence type
-    typedef StringSet<TSequence> TStringSet;       // container for strings
+    typedef String<Dna> TSequence;                              // sequence type
+    typedef StringSet<TSequence> TStringSet;                    // container for strings
     typedef StringSet<TSequence, Dependent<> > TDepStringSet;   // dependent string set
-    typedef Graph<Alignment<TDepStringSet> > TAlignGraph;   // alignment graph
+    typedef Graph<Alignment<TDepStringSet> > TAlignGraph;       // alignment graph
 //![main]
 
 //![init]
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_global_overlap.cpp b/demos/tutorial/pairwise_sequence_alignment/alignment_global_overlap.cpp
index 3959eab..733995c 100644
--- a/demos/tutorial/pairwise_sequence_alignment/alignment_global_overlap.cpp
+++ b/demos/tutorial/pairwise_sequence_alignment/alignment_global_overlap.cpp
@@ -24,7 +24,7 @@ int main()
 //![init]
 
 //![alignment]
-    int score = globalAlignment(alignG, Score<int, Simple>(1, -1, -1), AlignConfig<true, true, true, true>());
+    int score = globalAlignment(alignG, Score<int, Simple>(1, -1, -1), AlignConfig<true, true, true, true>(), LinearGaps());
     std::cout << "Score: " << score << std::endl;
     std::cout << alignG << std::endl;
 
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp b/demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp
index b8adb19..cee0b7d 100644
--- a/demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp
+++ b/demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp
@@ -7,7 +7,7 @@ using namespace seqan;
 int main()
 {
     typedef String<char> TSequence;                 // sequence type
-    typedef Align<TSequence, ArrayGaps> TAlign;      // align type
+    typedef Align<TSequence, ArrayGaps> TAlign;     // align type
 //![main]
 
 //![init]
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_local.cpp b/demos/tutorial/pairwise_sequence_alignment/alignment_local.cpp
index 49e019d..2b044ed 100644
--- a/demos/tutorial/pairwise_sequence_alignment/alignment_local.cpp
+++ b/demos/tutorial/pairwise_sequence_alignment/alignment_local.cpp
@@ -15,7 +15,7 @@ int main()
 //![init1]
 
 //![ali1]
-    std::cout << "Score = " << localAlignment(ali, Score<int>(3, -3, -2, -2)) << std::endl;
+    std::cout << "Score = " << localAlignment(ali, Score<int>(3, -3, -2, -2), DynamicGaps()) << std::endl;
     std::cout << ali;
     std::cout << "Aligns Seq1[" << clippedBeginPosition(row(ali, 0)) << ":" << (clippedEndPosition(row(ali, 0)) - 1) << "]";
     std::cout << " and Seq2[" << clippedBeginPosition(row(ali, 1)) << ":" <<  (clippedEndPosition(row(ali, 1)) - 1) << "]" << std::endl << std::endl;
diff --git a/demos/tutorial/pairwise_sequence_alignment/assignment5.cpp b/demos/tutorial/pairwise_sequence_alignment/assignment5.cpp
index 8d5146a..2b3ec05 100644
--- a/demos/tutorial/pairwise_sequence_alignment/assignment5.cpp
+++ b/demos/tutorial/pairwise_sequence_alignment/assignment5.cpp
@@ -73,7 +73,7 @@ int main()
 
         // Use a stringstream to construct the cigar string.
         std::stringstream cigar;
-        int numChar = 0;
+        int numMatchAndMismatches = 0;
         while (itGapsPattern != itGapsEnd)
         {
 //![cigar]
@@ -99,32 +99,20 @@ int main()
                 continue;
             }
 //![cigarDeletion]
-//![cigarMatch]
-            // Count matches.
-            while (*itGapsText == *itGapsPattern && itGapsPattern != itGapsEnd)
+//![cigarMatchAndMismatch]
+            // Count matches and  mismatches.
+            while (itGapsPattern != itGapsEnd)
             {
-                ++numChar;
-                ++itGapsText;
-                ++itGapsPattern;
-            }
-            if (numChar != 0)
-            {
-                cigar << numChar << "M";
-                numChar = 0;
-                continue;
-            }
-//![cigarMatch]
-//![cigarMismatch]
-            // Count mismatches.
-            while (*itGapsText != *itGapsPattern && itGapsPattern != itGapsEnd)
-            {
-                ++numChar;
+                if (isGap(itGapsPattern) || isGap(itGapsText))
+                   break;
+
+                ++numMatchAndMismatches;
                 ++itGapsText;
                 ++itGapsPattern;
             }
-            if (numChar != 0)
-                cigar << numChar << "S";
-            numChar = 0;
+            if (numMatchAndMismatches != 0)
+                cigar << numMatchAndMismatches << "M";
+            numMatchAndMismatches = 0;
         }
         // Output the hit position in the text, the total number of edits and the corresponding cigar string.
         std::cout << "Hit at position  " << *it << "\ttotal edits: " << abs(score) << "\tcigar: " << cigar.str() << std::endl;
@@ -132,4 +120,4 @@ int main()
 
     return 0;
 }
-//![cigarMismatch]
+//![cigarMatchAndMismatch]
diff --git a/demos/tutorial/pairwise_sequence_alignment/assignment5.cpp.stdout b/demos/tutorial/pairwise_sequence_alignment/assignment5.cpp.stdout
index e0d9158..d12b33e 100644
--- a/demos/tutorial/pairwise_sequence_alignment/assignment5.cpp.stdout
+++ b/demos/tutorial/pairwise_sequence_alignment/assignment5.cpp.stdout
@@ -1,8 +1,8 @@
 Text: MISSISSIPPIANDMISSOURI	Pattern: SISSI
-Hit at position  0	total edits: 1	cigar: 1S4M
+Hit at position  0	total edits: 1	cigar: 5M
 Hit at position  1	total edits: 1	cigar: 1I4M
 Hit at position  2	total edits: 1	cigar: 4M1I
 Hit at position  3	total edits: 0	cigar: 5M
 Hit at position  4	total edits: 1	cigar: 1I4M
-Hit at position  6	total edits: 2	cigar: 2M2S1M
-Hit at position  14	total edits: 2	cigar: 1S3M1I
+Hit at position  6	total edits: 2	cigar: 5M
+Hit at position  14	total edits: 2	cigar: 4M1I
diff --git a/demos/tutorial/pairwise_sequence_alignment/assignment5_step6.cpp b/demos/tutorial/pairwise_sequence_alignment/assignment5_step6.cpp
index 7598e88..2b51e1f 100644
--- a/demos/tutorial/pairwise_sequence_alignment/assignment5_step6.cpp
+++ b/demos/tutorial/pairwise_sequence_alignment/assignment5_step6.cpp
@@ -68,7 +68,7 @@ int main()
 
         // Use a stringstream to construct the cigar string.
         std::stringstream cigar;
-        int numChar = 0;
+        int numMatchAndMismatches = 0;
         while (itGapsPattern != itGapsEnd)
         {
             // Count insertions.
@@ -89,30 +89,20 @@ int main()
                 itGapsPattern += numGaps;
                 continue;
             }
-            // Count matches.
-            while (*itGapsText == *itGapsPattern && itGapsPattern != itGapsEnd)
-            {
-                ++numChar;
-                ++itGapsText;
-                ++itGapsPattern;
-            }
-            if (numChar != 0)
-            {
-                cigar << numChar << "M";
-                numChar = 0;
-                continue;
-            }
 
-            // Count mismatches.
-            while (*itGapsText != *itGapsPattern && itGapsPattern != itGapsEnd)
+            // Count matches and  mismatches.
+            while (itGapsPattern != itGapsEnd)
             {
-                ++numChar;
+                if (isGap(itGapsPattern) || isGap(itGapsText))
+                   break;
+
+                ++numMatchAndMismatches;
                 ++itGapsText;
                 ++itGapsPattern;
             }
-            if (numChar != 0)
-                cigar << numChar << "S";
-            numChar = 0;
+            if (numMatchAndMismatches != 0)
+                cigar << numMatchAndMismatches << "M";
+            numMatchAndMismatches = 0;
         }
         // Output the hit position in the text, the total number of edits and the corresponding cigar string.
         std::cout << "Hit at position  " << *it << "\ttotal edits: " << abs(score) << "\tcigar: " << cigar.str() << std::endl;
diff --git a/demos/tutorial/pairwise_sequence_alignment/assignment5_step6.cpp.stdout b/demos/tutorial/pairwise_sequence_alignment/assignment5_step6.cpp.stdout
index e0d9158..d12b33e 100644
--- a/demos/tutorial/pairwise_sequence_alignment/assignment5_step6.cpp.stdout
+++ b/demos/tutorial/pairwise_sequence_alignment/assignment5_step6.cpp.stdout
@@ -1,8 +1,8 @@
 Text: MISSISSIPPIANDMISSOURI	Pattern: SISSI
-Hit at position  0	total edits: 1	cigar: 1S4M
+Hit at position  0	total edits: 1	cigar: 5M
 Hit at position  1	total edits: 1	cigar: 1I4M
 Hit at position  2	total edits: 1	cigar: 4M1I
 Hit at position  3	total edits: 0	cigar: 5M
 Hit at position  4	total edits: 1	cigar: 1I4M
-Hit at position  6	total edits: 2	cigar: 2M2S1M
-Hit at position  14	total edits: 2	cigar: 1S3M1I
+Hit at position  6	total edits: 2	cigar: 5M
+Hit at position  14	total edits: 2	cigar: 4M1I
diff --git a/demos/tutorial/parsing_command_line_arguments/example_with_struct.cpp b/demos/tutorial/parsing_command_line_arguments/example_with_struct.cpp
index e16b448..c0103ba 100644
--- a/demos/tutorial/parsing_command_line_arguments/example_with_struct.cpp
+++ b/demos/tutorial/parsing_command_line_arguments/example_with_struct.cpp
@@ -1,7 +1,9 @@
+//![full]
 #include <iostream>
 
 #include <seqan/arg_parse.h>
 
+//![struct]
 struct ModifyStringOptions
 {
     unsigned period;
@@ -13,6 +15,7 @@ struct ModifyStringOptions
     period(1), toUppercase(false), toLowercase(false)
     {}
 };
+//![struct]
 
 int main(int argc, char const ** argv)
 {
@@ -53,3 +56,4 @@ int main(int argc, char const ** argv)
 
     return 0;
 }
+//![full]
diff --git a/demos/tutorial/q_gram_index/index_assignment6.cpp.stdout b/demos/tutorial/q_gram_index/index_assignment6.cpp.stdout
index b05395f..f848177 100644
--- a/demos/tutorial/q_gram_index/index_assignment6.cpp.stdout
+++ b/demos/tutorial/q_gram_index/index_assignment6.cpp.stdout
@@ -1,20 +1,20 @@
 >Seq0
-TCATTTTCTCGATGAAAGCGTTGACCCCACATATCGTTAGTACTCTTGTACCCT
+GGCATCCGTTCAGTATACGCCT
 >Seq1
-TGATTGTGTAGAAACCGAACTACGGTACCTCCTGTTGGTAGTCACGATAGATTATAAAAGTATGTTCCCACCCTATCGACGAGACTGGCA
+GGACATACCGGTCCTAAGTACACGTGGCAGGGATGGTCGAAGAACCCGC
 >Seq2
-CCTAGGTGTTTGCGGTGTTGGTACGTGCG
+TGCAAAGTTAGCGTACTAGTTAGTAACCGTGATACTAGCAAAATGAGTCTTCTCGTCGAAGTGGACGGGATGTGCTCACGGCCTTTTTT
 
 Length of the CountsDir fibre: 1025
 
 Common 5-mers for Seq_i, Seq_j
-50	4	0
-0	86	5
-0	0	25
+18	0	0
+0	45	5
+0	0	85
 
-Length of the CountsDir fibre: 513
+Length of the CountsDir fibre: 257
 
 Common 5-mers for Seq_i, Seq_j
-50	4	0
-0	86	5
-0	0	25
+18	0	0
+0	45	5
+0	0	85
diff --git a/demos/tutorial/sam_and_bam_io/base.cpp b/demos/tutorial/sam_and_bam_io/base.cpp
index 517f5e0..ac3a181 100644
--- a/demos/tutorial/sam_and_bam_io/base.cpp
+++ b/demos/tutorial/sam_and_bam_io/base.cpp
@@ -11,22 +11,22 @@ class myBamAlignmentRecord
 public:
     CharString qName;               // QNAME
     __uint16 flag;                  // FLAG
-    __int32 rID;                    // REF
-    __int32 beginPos;               // POS
+    int32_t rID;                    // REF
+    int32_t beginPos;               // POS
     __uint8 mapQ;                   // MAPQ mapping quality, 255 for */invalid
     __uint16 bin;                   // bin for indexing
     String<CigarElement<> > cigar;  // CIGAR string
-    __int32 rNextId;                // RNEXT (0-based)
-    __int32 pNext;                  // PNEXT (0-based)
-    __int32 tLen;                   // TLEN
+    int32_t rNextId;                // RNEXT (0-based)
+    int32_t pNext;                  // PNEXT (0-based)
+    int32_t tLen;                   // TLEN
     CharString seq;                 // SEQ, as in SAM/BAM file.
     CharString qual;                // Quality string as in SAM (Phred).
     CharString tags;                // Tags, raw as in BAM.
 
     // Constants for marking pos, reference id and length members invalid (== 0/*).
-    static __int32 const INVALID_POS = -1;
-    static __int32 const INVALID_REFID = -1;
-    static __int32 const INVALID_LEN = 0;
+    static int32_t const INVALID_POS = -1;
+    static int32_t const INVALID_REFID = -1;
+    static int32_t const INVALID_LEN = 0;
 };
 //![bamRecord]
 
diff --git a/demos/tutorial/seed_and_extend/example1.cpp b/demos/tutorial/seed_and_extend/example1.cpp
index 9435d8a..ea1d963 100644
--- a/demos/tutorial/seed_and_extend/example1.cpp
+++ b/demos/tutorial/seed_and_extend/example1.cpp
@@ -9,27 +9,25 @@ int main()
 {
 //![header]
 //![example]
-    // Default-construct seed.
-    Seed<Simple> seed1;
-    std::cout << "seed1\n"
-              << "beginPositionH == " << beginPositionH(seed1) << "\n"
-              << "endPositionH == " << endPositionH(seed1) << "\n"
-              << "beginPositionV == " << beginPositionV(seed1) << "\n"
-              << "endPositionV == " << endPositionV(seed1) << "\n"
-              << "lowerDiagonal == " << lowerDiagonal(seed1) << "\n"
-              << "upperDiagonal == " << upperDiagonal(seed1) << "\n\n";
+    // The horizontal and vertical sequence (subject and query sequences).
+    CharString seqH = "The quick BROWN fox jumped again!";
+    CharString seqV =     "thick BROWNIES for me!";
+    // Create and print the seed sequence.
+    Seed<Simple> seed(11, 7, 14, 10);
+    std::cout << "original\n"
+              << "seedH: " << infix(seqH, beginPositionH(seed),
+                          endPositionH(seed)) << "\n"
+              << "seedV: " << infix(seqV, beginPositionV(seed),
+                          endPositionV(seed)) << "\n";
 
-    // Construct seed with begin and end position in both sequences.
-    Seed<Simple> seed2(3, 10, 7, 14);
-    setUpperDiagonal(seed2, -7);
-    setLowerDiagonal(seed2, -9);
-    std::cout << "seed2\n"
-              << "beginPositionH == " << beginPositionH(seed2) << "\n"
-              << "endPositionH == " << endPositionH(seed2) << "\n"
-              << "beginPositionV == " << beginPositionV(seed2) << "\n"
-              << "endPositionV == " << endPositionV(seed2) << "\n"
-              << "lowerDiagonal == " << lowerDiagonal(seed2) << "\n"
-              << "upperDiagonal == " << upperDiagonal(seed2) << "\n\n";
+    // Perform match extension.
+    extendSeed(seed, seqH, seqV, EXTEND_RIGHT, MatchExtend());
+    // Print the resulting seed.
+    std::cout << "result\n"
+              << "seedH: " << infix(seqH, beginPositionH(seed),
+                          endPositionH(seed)) << "\n"
+              << "seedV: " << infix(seqV, beginPositionV(seed),
+                          endPositionV(seed)) << "\n";
 //![example]
 
 //![footer]
diff --git a/demos/tutorial/seed_and_extend/example1.cpp.stdout b/demos/tutorial/seed_and_extend/example1.cpp.stdout
index eda0f3f..d929889 100644
--- a/demos/tutorial/seed_and_extend/example1.cpp.stdout
+++ b/demos/tutorial/seed_and_extend/example1.cpp.stdout
@@ -1,16 +1,6 @@
-seed1
-beginPositionH == 0
-endPositionH == 0
-beginPositionV == 0
-endPositionV == 0
-lowerDiagonal == 0
-upperDiagonal == 0
-
-seed2
-beginPositionH == 3
-endPositionH == 7
-beginPositionV == 10
-endPositionV == 14
-lowerDiagonal == -9
-upperDiagonal == -7
-
+original
+seedH: ROW
+seedV: ROW
+result
+seedH: ROWN
+seedV: ROWN
diff --git a/demos/tutorial/seed_and_extend/example2.cpp b/demos/tutorial/seed_and_extend/example2.cpp
index d957454..a946dfe 100644
--- a/demos/tutorial/seed_and_extend/example2.cpp
+++ b/demos/tutorial/seed_and_extend/example2.cpp
@@ -1,6 +1,7 @@
 //![header]
 #include <seqan/sequence.h>
 #include <seqan/stream.h>
+#include <seqan/score.h>
 #include <seqan/seeds.h>
 
 using namespace seqan;
@@ -9,11 +10,10 @@ int main()
 {
 //![header]
 //![example]
-    // The horizontal and vertical sequence (database and query).
+    // The horizontal and vertical sequence (subject and query sequences).
     CharString seqH = "The quick BROWN fox jumped again!";
-    CharString seqV =     "thick BROWNIES for me!";
-    //  ^^^
-    // Create seed and print the seeed sequence.
+    CharString seqV =     "thick BROWN boxes of brownies!";
+    // Create and print the seed sequence.
     Seed<Simple> seed(11, 7, 14, 10);
     std::cout << "original\n"
               << "seedH: " << infix(seqH, beginPositionH(seed),
@@ -22,7 +22,9 @@ int main()
                           endPositionV(seed)) << "\n";
 
     // Perform match extension.
-    extendSeed(seed, seqH, seqV, EXTEND_BOTH, MatchExtend());
+    Score<int, Simple> scoringScheme(1, -1, -1);
+    extendSeed(seed, seqH, seqV, EXTEND_BOTH, scoringScheme, 3,
+               UnGappedXDrop());
     // Print the resulting seed.
     std::cout << "result\n"
               << "seedH: " << infix(seqH, beginPositionH(seed),
diff --git a/demos/tutorial/seed_and_extend/example2.cpp.stdout b/demos/tutorial/seed_and_extend/example2.cpp.stdout
index 07814fd..227e1f1 100644
--- a/demos/tutorial/seed_and_extend/example2.cpp.stdout
+++ b/demos/tutorial/seed_and_extend/example2.cpp.stdout
@@ -2,5 +2,5 @@ original
 seedH: ROW
 seedV: ROW
 result
-seedH: ick BROWN
-seedV: ick BROWN
+seedH: ick BROWN fox
+seedV: ick BROWN box
diff --git a/demos/tutorial/seed_and_extend/example3.cpp b/demos/tutorial/seed_and_extend/example3.cpp
index 75aa7fb..ce2a7c7 100644
--- a/demos/tutorial/seed_and_extend/example3.cpp
+++ b/demos/tutorial/seed_and_extend/example3.cpp
@@ -1,8 +1,9 @@
 //![header]
-#include <seqan/sequence.h>
+#include <seqan/align.h>
 #include <seqan/stream.h>
 #include <seqan/score.h>
 #include <seqan/seeds.h>
+#include <seqan/sequence.h>
 
 using namespace seqan;
 
@@ -10,28 +11,27 @@ int main()
 {
 //![header]
 //![example]
-    // The horizontal and vertical sequence (database and query).
+    // The horizontal and vertical sequence (subject and query sequences).
     CharString seqH = "The quick BROWN fox jumped again!";
     CharString seqV =     "thick BROWN boxes of brownies!";
-    //  ^^^
-    // Create seed and print the seeed sequence.
+    // Create the seed sequence.
     Seed<Simple> seed(11, 7, 14, 10);
-    std::cout << "original\n"
-              << "seedH: " << infix(seqH, beginPositionH(seed),
-                          endPositionH(seed)) << "\n"
-              << "seedV: " << infix(seqV, beginPositionV(seed),
-                          endPositionV(seed)) << "\n";
 
     // Perform match extension.
     Score<int, Simple> scoringScheme(1, -1, -1);
     extendSeed(seed, seqH, seqV, EXTEND_BOTH, scoringScheme, 3,
-               UnGappedXDrop());
-    // Print the resulting seed.
-    std::cout << "result\n"
-              << "seedH: " << infix(seqH, beginPositionH(seed),
-                          endPositionH(seed)) << "\n"
-              << "seedV: " << infix(seqV, beginPositionV(seed),
-                          endPositionV(seed)) << "\n";
+               GappedXDrop());
+
+    // Perform a banded alignment.
+    Align<CharString> align;
+    resize(rows(align), 2);
+    assignSource(row(align, 0), infix(seqH, beginPositionH(seed),
+                                      endPositionH(seed)));
+    assignSource(row(align, 1), infix(seqV, beginPositionV(seed),
+                                      endPositionV(seed)));
+
+    globalAlignment(align, scoringScheme);
+    std::cout << "Resulting alignment\n" << align << "\n";
 //![example]
 
 //![footer]
diff --git a/demos/tutorial/seed_and_extend/example3.cpp.stdout b/demos/tutorial/seed_and_extend/example3.cpp.stdout
index 227e1f1..3af96cc 100644
--- a/demos/tutorial/seed_and_extend/example3.cpp.stdout
+++ b/demos/tutorial/seed_and_extend/example3.cpp.stdout
@@ -1,6 +1,5 @@
-original
-seedH: ROW
-seedV: ROW
-result
-seedH: ick BROWN fox
-seedV: ick BROWN box
+Resulting alignment
+      0     .    :    .    :  
+         quick BROWN fox-- ju
+           |||||||||| ||  |  
+        -thick BROWN boxes of
diff --git a/demos/tutorial/seed_and_extend/example4.cpp b/demos/tutorial/seed_and_extend/example4.cpp
index 8857656..0c5957e 100644
--- a/demos/tutorial/seed_and_extend/example4.cpp
+++ b/demos/tutorial/seed_and_extend/example4.cpp
@@ -1,9 +1,7 @@
 //![header]
-#include <seqan/align.h>
+#include <seqan/sequence.h>
 #include <seqan/stream.h>
-#include <seqan/score.h>
 #include <seqan/seeds.h>
-#include <seqan/sequence.h>
 
 using namespace seqan;
 
@@ -11,28 +9,22 @@ int main()
 {
 //![header]
 //![example]
-    // The horizontal and vertical sequence (database and query).
-    CharString seqH = "The quick BROWN fox jumped again!";
-    CharString seqV =     "thick BROWN boxes of brownies!";
-    //  ^^^
-    // Create seed and print the seeed sequence.
-    Seed<Simple> seed(11, 7, 14, 10);
-
-    // Perform match extension.
-    Score<int, Simple> scoringScheme(1, -1, -1);
-    extendSeed(seed, seqH, seqV, EXTEND_BOTH, scoringScheme, 3,
-               UnGappedXDrop());
+    typedef Seed<Simple>    TSeed;
+    typedef SeedSet<TSeed> TSeedSet;
 
-    // Perform a banded alignment.
-    Align<CharString> align;
-    resize(rows(align), 2);
-    assignSource(row(align, 0), infix(seqH, beginPositionH(seed),
-                                      endPositionH(seed)));
-    assignSource(row(align, 1), infix(seqV, beginPositionV(seed),
-                                      endPositionV(seed)));
+    TSeedSet seedSet;
+    addSeed(seedSet, TSeed(0, 0, 2), Single());
+    addSeed(seedSet, TSeed(3, 5, 2), Single());
+    addSeed(seedSet, TSeed(4, 2, 3), Single());
+    addSeed(seedSet, TSeed(9, 9, 2), Single());
 
-    globalAlignment(align, scoringScheme);
-    std::cout << "Resulting alignment\n" << align << "\n";
+    std::cout << "Resulting seeds.\n";
+    typedef Iterator<TSeedSet>::Type TIter;
+    for (TIter it = begin(seedSet, Standard()); it != end(seedSet, Standard()); ++it)
+        std::cout << "(" << beginPositionH(*it) << ", " << endPositionH(*it)
+                  << ", " << beginPositionV(*it) << ", " << endPositionV(*it)
+                  << ", " << lowerDiagonal(*it) << ", " << upperDiagonal(*it)
+                  << ")\n";
 //![example]
 
 //![footer]
diff --git a/demos/tutorial/seed_and_extend/example4.cpp.stdout b/demos/tutorial/seed_and_extend/example4.cpp.stdout
index f307f80..0d2f7ff 100644
--- a/demos/tutorial/seed_and_extend/example4.cpp.stdout
+++ b/demos/tutorial/seed_and_extend/example4.cpp.stdout
@@ -1,8 +1,5 @@
-Resulting alignment
-      0     .    :    
-        ick BROWN fox
-        |||||||||| ||
-        ick BROWN box
-
-
-
+Resulting seeds.
+(3, 5, 5, 7, -2, -2)
+(0, 2, 0, 2, 0, 0)
+(9, 11, 9, 11, 0, 0)
+(4, 7, 2, 5, 2, 2)
diff --git a/demos/tutorial/seed_and_extend/example5.cpp b/demos/tutorial/seed_and_extend/example5.cpp
index 0c5957e..7a1f14f 100644
--- a/demos/tutorial/seed_and_extend/example5.cpp
+++ b/demos/tutorial/seed_and_extend/example5.cpp
@@ -1,7 +1,8 @@
 //![header]
-#include <seqan/sequence.h>
 #include <seqan/stream.h>
+#include <seqan/score.h>
 #include <seqan/seeds.h>
+#include <seqan/sequence.h>
 
 using namespace seqan;
 
@@ -9,18 +10,31 @@ int main()
 {
 //![header]
 //![example]
-    typedef Seed<Simple>    TSeed;
+    typedef Seed<Simple>   TSeed;
     typedef SeedSet<TSeed> TSeedSet;
 
+    Dna5String seqH;
+    Dna5String seqV;
+    Score<int, Simple> scoringScheme(1, -1, -1);
+
+    String<TSeed> seeds;
+    appendValue(seeds, TSeed(0, 0, 2));
+    appendValue(seeds, TSeed(3, 5, 2));
+    appendValue(seeds, TSeed(4, 2, 3));
+    appendValue(seeds, TSeed(9, 9, 2));
+
     TSeedSet seedSet;
-    addSeed(seedSet, TSeed(0, 0, 2), Single());
-    addSeed(seedSet, TSeed(3, 5, 2), Single());
-    addSeed(seedSet, TSeed(4, 2, 3), Single());
-    addSeed(seedSet, TSeed(9, 9, 2), Single());
+    for (unsigned i = 0; i < length(seeds); ++i)
+    {
+        if (!addSeed(seedSet, seeds[i], 2, 2, scoringScheme,
+                     seqH, seqV, SimpleChain()))
+            addSeed(seedSet, seeds[i], Single());
+    }
 
     std::cout << "Resulting seeds.\n";
     typedef Iterator<TSeedSet>::Type TIter;
-    for (TIter it = begin(seedSet, Standard()); it != end(seedSet, Standard()); ++it)
+    for (TIter it = begin(seedSet, Standard());
+         it != end(seedSet, Standard()); ++it)
         std::cout << "(" << beginPositionH(*it) << ", " << endPositionH(*it)
                   << ", " << beginPositionV(*it) << ", " << endPositionV(*it)
                   << ", " << lowerDiagonal(*it) << ", " << upperDiagonal(*it)
diff --git a/demos/tutorial/seed_and_extend/example5.cpp.stdout b/demos/tutorial/seed_and_extend/example5.cpp.stdout
index 0d2f7ff..3d57ac6 100644
--- a/demos/tutorial/seed_and_extend/example5.cpp.stdout
+++ b/demos/tutorial/seed_and_extend/example5.cpp.stdout
@@ -1,5 +1,4 @@
 Resulting seeds.
 (3, 5, 5, 7, -2, -2)
-(0, 2, 0, 2, 0, 0)
+(0, 7, 0, 5, 0, 2)
 (9, 11, 9, 11, 0, 0)
-(4, 7, 2, 5, 2, 2)
diff --git a/demos/tutorial/seed_and_extend/example7.cpp b/demos/tutorial/seed_and_extend/example7.cpp
index b4c2c00..945203a 100644
--- a/demos/tutorial/seed_and_extend/example7.cpp
+++ b/demos/tutorial/seed_and_extend/example7.cpp
@@ -1,8 +1,8 @@
 //![header]
-#include <seqan/stream.h>
+#include <seqan/sequence.h>
+#include <seqan/align.h>
 #include <seqan/score.h>
 #include <seqan/seeds.h>
-#include <seqan/sequence.h>
 
 using namespace seqan;
 
@@ -10,35 +10,27 @@ int main()
 {
 //![header]
 //![example]
-    typedef Seed<Simple>    TSeed;
-    typedef SeedSet<TSeed> TSeedSet;
-
-    Dna5String seqH;
-    Dna5String seqV;
-    Score<int, Simple> scoringScheme(1, -1, -1);
-
-    String<TSeed> seeds;
-    appendValue(seeds, TSeed(0, 0, 2));
-    appendValue(seeds, TSeed(3, 5, 2));
-    appendValue(seeds, TSeed(4, 2, 3));
-    appendValue(seeds, TSeed(9, 9, 2));
-
-    TSeedSet seedSet;
-    for (unsigned i = 0; i < length(seeds); ++i)
-    {
-        if (!addSeed(seedSet, seeds[i], 2, 2, scoringScheme,
-                     seqH, seqV, SimpleChain()))
-            addSeed(seedSet, seeds[i], Single());
-    }
-
-    std::cout << "Resulting seeds.\n";
-    typedef Iterator<TSeedSet>::Type TIter;
-    for (TIter it = begin(seedSet, Standard());
-         it != end(seedSet, Standard()); ++it)
-        std::cout << "(" << beginPositionH(*it) << ", " << endPositionH(*it)
-                  << ", " << beginPositionV(*it) << ", " << endPositionV(*it)
-                  << ", " << lowerDiagonal(*it) << ", " << upperDiagonal(*it)
-                  << ")\n";
+    typedef Seed<Simple> TSeed;
+
+    Dna5String sequenceH = "CGAATCCATCCCACACA";
+    Dna5String sequenceV = "GGCGATNNNCATGGCACA";
+
+    String<TSeed> seedChain;
+    appendValue(seedChain, TSeed(0, 2, 5, 6));
+    appendValue(seedChain, TSeed(6, 9, 9, 12));
+    appendValue(seedChain, TSeed(11, 14, 17, 16));
+
+    Align<Dna5String, ArrayGaps> alignment;
+    resize(rows(alignment), 2);
+    assignSource(row(alignment, 0), sequenceH);
+    assignSource(row(alignment, 1), sequenceV);
+
+    Score<int, Simple> scoringScheme(2, -1, -2);
+
+    int result = bandedChainAlignment(alignment, seedChain, scoringScheme, 2);
+
+    std::cout << "Score: " << result << std::endl;
+    std::cout << alignment << std::endl;
 //![example]
 
 //![footer]
diff --git a/demos/tutorial/seed_and_extend/example7.cpp.stdout b/demos/tutorial/seed_and_extend/example7.cpp.stdout
index 3d57ac6..ffe6240 100644
--- a/demos/tutorial/seed_and_extend/example7.cpp.stdout
+++ b/demos/tutorial/seed_and_extend/example7.cpp.stdout
@@ -1,4 +1,8 @@
-Resulting seeds.
-(3, 5, 5, 7, -2, -2)
-(0, 7, 0, 5, 0, 2)
-(9, 11, 9, 11, 0, 0)
+Score: 5
+      0     .    :    .    :  
+        --CGAAT--CCATCCCACACA
+          || ||   |||    ||||
+        GGCG-ATNNNCATGG--CACA
+
+
+
diff --git a/demos/tutorial/seed_and_extend/example8.cpp b/demos/tutorial/seed_and_extend/example8.cpp
deleted file mode 100644
index 945203a..0000000
--- a/demos/tutorial/seed_and_extend/example8.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-//![header]
-#include <seqan/sequence.h>
-#include <seqan/align.h>
-#include <seqan/score.h>
-#include <seqan/seeds.h>
-
-using namespace seqan;
-
-int main()
-{
-//![header]
-//![example]
-    typedef Seed<Simple> TSeed;
-
-    Dna5String sequenceH = "CGAATCCATCCCACACA";
-    Dna5String sequenceV = "GGCGATNNNCATGGCACA";
-
-    String<TSeed> seedChain;
-    appendValue(seedChain, TSeed(0, 2, 5, 6));
-    appendValue(seedChain, TSeed(6, 9, 9, 12));
-    appendValue(seedChain, TSeed(11, 14, 17, 16));
-
-    Align<Dna5String, ArrayGaps> alignment;
-    resize(rows(alignment), 2);
-    assignSource(row(alignment, 0), sequenceH);
-    assignSource(row(alignment, 1), sequenceV);
-
-    Score<int, Simple> scoringScheme(2, -1, -2);
-
-    int result = bandedChainAlignment(alignment, seedChain, scoringScheme, 2);
-
-    std::cout << "Score: " << result << std::endl;
-    std::cout << alignment << std::endl;
-//![example]
-
-//![footer]
-    return 0;
-}
-//![footer]
diff --git a/demos/tutorial/seed_and_extend/example8.cpp.stdout b/demos/tutorial/seed_and_extend/example8.cpp.stdout
deleted file mode 100644
index ffe6240..0000000
--- a/demos/tutorial/seed_and_extend/example8.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-Score: 5
-      0     .    :    .    :  
-        --CGAAT--CCATCCCACACA
-          || ||   |||    ||||
-        GGCG-ATNNNCATGG--CACA
-
-
-
diff --git a/demos/tutorial/seed_and_extend/solution1.cpp b/demos/tutorial/seed_and_extend/solution1.cpp
index c953fa8..a697b6a 100644
--- a/demos/tutorial/seed_and_extend/solution1.cpp
+++ b/demos/tutorial/seed_and_extend/solution1.cpp
@@ -1,35 +1,30 @@
+#include <seqan/sequence.h>
 #include <seqan/stream.h>
 #include <seqan/seeds.h>
-#include <seqan/sequence.h>
 
 using namespace seqan;
 
 int main()
 {
-    // Default-construct seed.
-    Seed<Simple> seed1;
-
-    // Construct seed with begin and end position in both sequences.
-    Seed<Simple> seed2(3, 10, 7, 14);
-    setUpperDiagonal(seed2, -7);
-    setLowerDiagonal(seed2, -9);
-
-    // Update seed1.
-    setBeginPositionH(seed1, 2 * beginPositionH(seed2));
-    setEndPositionH(seed1, 2 * endPositionH(seed2));
-    setBeginPositionV(seed1, 2 * beginPositionV(seed2));
-    setEndPositionV(seed1, 2 * endPositionV(seed2));
-    setLowerDiagonal(seed1, 2 * lowerDiagonal(seed2));
-    setUpperDiagonal(seed1, 2 * upperDiagonal(seed2));
+    // The horizontal and vertical sequence (subject and query sequences).
+    CharString seqH = "The quick BROWN fox jumped again!";
+    CharString seqV =     "thick BROWNIES for me!";
+    // Create and print the seed sequence.
+    Seed<Simple> seed(11, 7, 14, 10);
+    std::cout << "original\n"
+              << "seedH: " << infix(seqH, beginPositionH(seed),
+                          endPositionH(seed)) << "\n"
+              << "seedV: " << infix(seqV, beginPositionV(seed),
+                          endPositionV(seed)) << "\n";
 
-    // Print resulting seed1.
-    std::cout << "seed1\n"
-              << "beginPositionH == " << beginPositionH(seed1) << "\n"
-              << "endPositionH == " << endPositionH(seed1) << "\n"
-              << "beginPositionV == " << beginPositionV(seed1) << "\n"
-              << "endPositionV == " << endPositionV(seed1) << "\n"
-              << "lowerDiagonal == " << lowerDiagonal(seed1) << "\n"
-              << "upperDiagonal == " << upperDiagonal(seed1) << "\n\n";
+    // Perform match extension.
+    extendSeed(seed, seqH, seqV, EXTEND_BOTH, MatchExtend());
+    // Print the resulting seed.
+    std::cout << "result\n"
+              << "seedH: " << infix(seqH, beginPositionH(seed),
+                          endPositionH(seed)) << "\n"
+              << "seedV: " << infix(seqV, beginPositionV(seed),
+                          endPositionV(seed)) << "\n";
 
     return 0;
 }
diff --git a/demos/tutorial/seed_and_extend/solution1.cpp.stdout b/demos/tutorial/seed_and_extend/solution1.cpp.stdout
index 473922b..07814fd 100644
--- a/demos/tutorial/seed_and_extend/solution1.cpp.stdout
+++ b/demos/tutorial/seed_and_extend/solution1.cpp.stdout
@@ -1,8 +1,6 @@
-seed1
-beginPositionH == 6
-endPositionH == 14
-beginPositionV == 20
-endPositionV == 28
-lowerDiagonal == -18
-upperDiagonal == -14
-
+original
+seedH: ROW
+seedV: ROW
+result
+seedH: ick BROWN
+seedV: ick BROWN
diff --git a/demos/tutorial/seed_and_extend/solution2.cpp b/demos/tutorial/seed_and_extend/solution2.cpp
index cb08431..b59b80a 100644
--- a/demos/tutorial/seed_and_extend/solution2.cpp
+++ b/demos/tutorial/seed_and_extend/solution2.cpp
@@ -1,16 +1,16 @@
 #include <seqan/sequence.h>
 #include <seqan/stream.h>
+#include <seqan/score.h>
 #include <seqan/seeds.h>
 
 using namespace seqan;
 
 int main()
 {
-    // The horizontal and vertical sequence (database and query).
+    // The horizontal and vertical sequence (subject and query sequences).
     CharString seqH = "The quick BROWN fox jumped again!";
-    CharString seqV =     "thick BROWNIES for me!";
-    //  ^^^
-    // Create seed and print the seeed sequence.
+    CharString seqV =     "thick BROWN boxes of brownies!";
+    // Create and print the seed sequence.
     Seed<Simple> seed(11, 7, 14, 10);
     std::cout << "original\n"
               << "seedH: " << infix(seqH, beginPositionH(seed),
@@ -19,7 +19,9 @@ int main()
                           endPositionV(seed)) << "\n";
 
     // Perform match extension.
-    extendSeed(seed, seqH, seqV, EXTEND_BOTH, MatchExtend());
+    Score<int, Simple> scoringScheme(1, -1, -1);
+    extendSeed(seed, seqH, seqV, EXTEND_BOTH, scoringScheme, 3,
+               GappedXDrop());
     // Print the resulting seed.
     std::cout << "result\n"
               << "seedH: " << infix(seqH, beginPositionH(seed),
diff --git a/demos/tutorial/seed_and_extend/solution2.cpp.stdout b/demos/tutorial/seed_and_extend/solution2.cpp.stdout
index 07814fd..9961e05 100644
--- a/demos/tutorial/seed_and_extend/solution2.cpp.stdout
+++ b/demos/tutorial/seed_and_extend/solution2.cpp.stdout
@@ -2,5 +2,5 @@ original
 seedH: ROW
 seedV: ROW
 result
-seedH: ick BROWN
-seedV: ick BROWN
+seedH:  quick BROWN fox ju
+seedV: thick BROWN boxes of
diff --git a/demos/tutorial/seed_and_extend/solution3.cpp b/demos/tutorial/seed_and_extend/solution3.cpp
index daf57a1..9ecb887 100644
--- a/demos/tutorial/seed_and_extend/solution3.cpp
+++ b/demos/tutorial/seed_and_extend/solution3.cpp
@@ -1,34 +1,34 @@
-#include <seqan/sequence.h>
+#include <seqan/align.h>
 #include <seqan/stream.h>
 #include <seqan/score.h>
 #include <seqan/seeds.h>
+#include <seqan/sequence.h>
 
 using namespace seqan;
 
 int main()
 {
-    // The horizontal and vertical sequence (database and query).
+    // The horizontal and vertical sequence (subject and query sequences).
     CharString seqH = "The quick BROWN fox jumped again!";
     CharString seqV =     "thick BROWN boxes of brownies!";
-    //  ^^^
-    // Create seed and print the seeed sequence.
+    // Create the seed sequence.
     Seed<Simple> seed(11, 7, 14, 10);
-    std::cout << "original\n"
-              << "seedH: " << infix(seqH, beginPositionH(seed),
-                          endPositionH(seed)) << "\n"
-              << "seedV: " << infix(seqV, beginPositionV(seed),
-                          endPositionV(seed)) << "\n";
 
     // Perform match extension.
-    Score<int, Simple> scoringScheme(1, -1, -1);
+    Score<int, Simple> scoringScheme(1, -1, -2, -2);
     extendSeed(seed, seqH, seqV, EXTEND_BOTH, scoringScheme, 3,
                GappedXDrop());
-    // Print the resulting seed.
-    std::cout << "result\n"
-              << "seedH: " << infix(seqH, beginPositionH(seed),
-                          endPositionH(seed)) << "\n"
-              << "seedV: " << infix(seqV, beginPositionV(seed),
-                          endPositionV(seed)) << "\n";
+
+    // Perform a banded alignment.
+    Align<CharString> align;
+    resize(rows(align), 2);
+    assignSource(row(align, 0), infix(seqH, beginPositionH(seed),
+                                      endPositionH(seed)));
+    assignSource(row(align, 1), infix(seqV, beginPositionV(seed),
+                                      endPositionV(seed)));
+
+    globalAlignment(align, scoringScheme);
+    std::cout << "Resulting alignment\n" << align << "\n";
 
     return 0;
 }
diff --git a/demos/tutorial/seed_and_extend/solution3.cpp.stdout b/demos/tutorial/seed_and_extend/solution3.cpp.stdout
index 9961e05..6f79522 100644
--- a/demos/tutorial/seed_and_extend/solution3.cpp.stdout
+++ b/demos/tutorial/seed_and_extend/solution3.cpp.stdout
@@ -1,6 +1,8 @@
-original
-seedH: ROW
-seedV: ROW
-result
-seedH:  quick BROWN fox ju
-seedV: thick BROWN boxes of
+Resulting alignment
+      0     .    :    .    
+        quick BROWN fox ju
+          |||||||||| ||   
+        thick BROWN boxes 
+
+
+
diff --git a/demos/tutorial/seed_and_extend/solution4.cpp b/demos/tutorial/seed_and_extend/solution4.cpp
index 4000bc0..4fd8c47 100644
--- a/demos/tutorial/seed_and_extend/solution4.cpp
+++ b/demos/tutorial/seed_and_extend/solution4.cpp
@@ -1,4 +1,3 @@
-#include <seqan/align.h>
 #include <seqan/stream.h>
 #include <seqan/score.h>
 #include <seqan/seeds.h>
@@ -8,28 +7,35 @@ using namespace seqan;
 
 int main()
 {
-    // The horizontal and vertical sequence (database and query).
-    CharString seqH = "The quick BROWN fox jumped again!";
-    CharString seqV =     "thick BROWN boxes of brownies!";
-    //  ^^^
-    // Create seed and print the seeed sequence.
-    Seed<Simple> seed(11, 7, 14, 10);
+    typedef Seed<Simple>    TSeed;
+    typedef SeedSet<TSeed> TSeedSet;
 
-    // Perform match extension.
-    Score<int, Simple> scoringScheme(1, -1, -1, -2);
-    extendSeed(seed, seqH, seqV, EXTEND_BOTH, scoringScheme, 3,
-               GappedXDrop());
+    Dna5String seqH;
+    Dna5String seqV;
+    Score<int, Simple> scoringScheme(1, -1, -1);
 
-    // Perform a banded alignment.
-    Align<CharString> align;
-    resize(rows(align), 2);
-    assignSource(row(align, 0), infix(seqH, beginPositionH(seed),
-                                      endPositionH(seed)));
-    assignSource(row(align, 1), infix(seqV, beginPositionV(seed),
-                                      endPositionV(seed)));
+    String<TSeed> seeds;
+    appendValue(seeds, TSeed(0, 0, 2));
+    appendValue(seeds, TSeed(3, 5, 2));
+    appendValue(seeds, TSeed(4, 2, 3));
+    appendValue(seeds, TSeed(9, 9, 2));
 
-    globalAlignment(align, scoringScheme);
-    std::cout << "Resulting alignment\n" << align << "\n";
+    TSeedSet seedSet;
+    for (unsigned i = 0; i < length(seeds); ++i)
+    {
+        if (!addSeed(seedSet, seeds[i], 2, 2, scoringScheme,
+                     seqH, seqV, Chaos()))
+            addSeed(seedSet, seeds[i], Single());
+    }
+
+    std::cout << "Resulting seeds.\n";
+    typedef Iterator<TSeedSet>::Type TIter;
+    for (TIter it = begin(seedSet, Standard());
+         it != end(seedSet, Standard()); ++it)
+        std::cout << "(" << beginPositionH(*it) << ", " << endPositionH(*it)
+                  << ", " << beginPositionV(*it) << ", " << endPositionV(*it)
+                  << ", " << lowerDiagonal(*it) << ", " << upperDiagonal(*it)
+                  << ")\n";
 
     return 0;
 }
diff --git a/demos/tutorial/seed_and_extend/solution4.cpp.stdout b/demos/tutorial/seed_and_extend/solution4.cpp.stdout
index 52cc4c7..3d57ac6 100644
--- a/demos/tutorial/seed_and_extend/solution4.cpp.stdout
+++ b/demos/tutorial/seed_and_extend/solution4.cpp.stdout
@@ -1,8 +1,4 @@
-Resulting alignment
-      0     .    :    .    :  
-         quick BROWN fox-- ju
-           |||||||||| ||  |  
-        -thick BROWN boxes of
-
-
-
+Resulting seeds.
+(3, 5, 5, 7, -2, -2)
+(0, 7, 0, 5, 0, 2)
+(9, 11, 9, 11, 0, 0)
diff --git a/demos/tutorial/seed_and_extend/solution5.cpp b/demos/tutorial/seed_and_extend/solution5.cpp
index 4fd8c47..83a6fdc 100644
--- a/demos/tutorial/seed_and_extend/solution5.cpp
+++ b/demos/tutorial/seed_and_extend/solution5.cpp
@@ -1,7 +1,6 @@
+#include <seqan/sequence.h>
 #include <seqan/stream.h>
-#include <seqan/score.h>
 #include <seqan/seeds.h>
-#include <seqan/sequence.h>
 
 using namespace seqan;
 
@@ -10,32 +9,14 @@ int main()
     typedef Seed<Simple>    TSeed;
     typedef SeedSet<TSeed> TSeedSet;
 
-    Dna5String seqH;
-    Dna5String seqV;
-    Score<int, Simple> scoringScheme(1, -1, -1);
-
-    String<TSeed> seeds;
-    appendValue(seeds, TSeed(0, 0, 2));
-    appendValue(seeds, TSeed(3, 5, 2));
-    appendValue(seeds, TSeed(4, 2, 3));
-    appendValue(seeds, TSeed(9, 9, 2));
-
     TSeedSet seedSet;
-    for (unsigned i = 0; i < length(seeds); ++i)
-    {
-        if (!addSeed(seedSet, seeds[i], 2, 2, scoringScheme,
-                     seqH, seqV, Chaos()))
-            addSeed(seedSet, seeds[i], Single());
-    }
+    addSeed(seedSet, TSeed(1, 1, 3), Single());
+    addSeed(seedSet, TSeed(6, 9, 2), Single());
+    addSeed(seedSet, TSeed(10, 13, 3), Single());
+    addSeed(seedSet, TSeed(20, 22, 5), Single());
 
-    std::cout << "Resulting seeds.\n";
-    typedef Iterator<TSeedSet>::Type TIter;
-    for (TIter it = begin(seedSet, Standard());
-         it != end(seedSet, Standard()); ++it)
-        std::cout << "(" << beginPositionH(*it) << ", " << endPositionH(*it)
-                  << ", " << beginPositionV(*it) << ", " << endPositionV(*it)
-                  << ", " << lowerDiagonal(*it) << ", " << upperDiagonal(*it)
-                  << ")\n";
+    String<TSeed> result;
+    chainSeedsGlobally(result, seedSet, SparseChaining());
 
     return 0;
 }
diff --git a/demos/tutorial/seed_and_extend/solution5.cpp.stdout b/demos/tutorial/seed_and_extend/solution5.cpp.stdout
index 3d57ac6..e69de29 100644
--- a/demos/tutorial/seed_and_extend/solution5.cpp.stdout
+++ b/demos/tutorial/seed_and_extend/solution5.cpp.stdout
@@ -1,4 +0,0 @@
-Resulting seeds.
-(3, 5, 5, 7, -2, -2)
-(0, 7, 0, 5, 0, 2)
-(9, 11, 9, 11, 0, 0)
diff --git a/demos/tutorial/seed_and_extend/solution6.cpp b/demos/tutorial/seed_and_extend/solution6.cpp
index 83a6fdc..6f96891 100644
--- a/demos/tutorial/seed_and_extend/solution6.cpp
+++ b/demos/tutorial/seed_and_extend/solution6.cpp
@@ -1,5 +1,6 @@
 #include <seqan/sequence.h>
-#include <seqan/stream.h>
+#include <seqan/align.h>
+#include <seqan/score.h>
 #include <seqan/seeds.h>
 
 using namespace seqan;
@@ -7,16 +8,27 @@ using namespace seqan;
 int main()
 {
     typedef Seed<Simple>    TSeed;
-    typedef SeedSet<TSeed> TSeedSet;
 
-    TSeedSet seedSet;
-    addSeed(seedSet, TSeed(1, 1, 3), Single());
-    addSeed(seedSet, TSeed(6, 9, 2), Single());
-    addSeed(seedSet, TSeed(10, 13, 3), Single());
-    addSeed(seedSet, TSeed(20, 22, 5), Single());
+    Dna5String sequenceH = "CGAATCCATCCCACACA";
+    Dna5String sequenceV = "GGCGATNNNCATGGCACA";
+    Score<int, Simple> scoringSchemeAnchor(0, -1, -1);
+    Score<int, Simple> scoringSchemeGap(2, -1, -1, -2);
 
-    String<TSeed> result;
-    chainSeedsGlobally(result, seedSet, SparseChaining());
+    String<TSeed> seedChain;
+    appendValue(seedChain, TSeed(0, 2, 5, 6));
+    appendValue(seedChain, TSeed(6, 9, 9, 12));
+    appendValue(seedChain, TSeed(11, 14, 17, 16));
+
+    Align<Dna5String, ArrayGaps> alignment;
+    resize(rows(alignment), 2);
+    assignSource(row(alignment, 0), sequenceH);
+    assignSource(row(alignment, 1), sequenceV);
+    AlignConfig<true, false, false, true> alignConfig;
+
+    int result = bandedChainAlignment(alignment, seedChain, scoringSchemeAnchor, scoringSchemeGap, alignConfig, 2);
+
+    std::cout << "Score: " << result << std::endl;
+    std::cout << alignment << std::endl;
 
     return 0;
 }
diff --git a/demos/tutorial/seed_and_extend/solution6.cpp.stdout b/demos/tutorial/seed_and_extend/solution6.cpp.stdout
index e69de29..51a1601 100644
--- a/demos/tutorial/seed_and_extend/solution6.cpp.stdout
+++ b/demos/tutorial/seed_and_extend/solution6.cpp.stdout
@@ -0,0 +1,8 @@
+Score: 1
+      0     .    :    .    :  
+        --CGAAT--CCATCCCACACA
+          || ||   |||  ||||  
+        GGCG-ATNNNCATGGCACA--
+
+
+
diff --git a/demos/tutorial/seed_and_extend/solution7.cpp b/demos/tutorial/seed_and_extend/solution7.cpp
deleted file mode 100644
index 6f96891..0000000
--- a/demos/tutorial/seed_and_extend/solution7.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-#include <seqan/sequence.h>
-#include <seqan/align.h>
-#include <seqan/score.h>
-#include <seqan/seeds.h>
-
-using namespace seqan;
-
-int main()
-{
-    typedef Seed<Simple>    TSeed;
-
-    Dna5String sequenceH = "CGAATCCATCCCACACA";
-    Dna5String sequenceV = "GGCGATNNNCATGGCACA";
-    Score<int, Simple> scoringSchemeAnchor(0, -1, -1);
-    Score<int, Simple> scoringSchemeGap(2, -1, -1, -2);
-
-    String<TSeed> seedChain;
-    appendValue(seedChain, TSeed(0, 2, 5, 6));
-    appendValue(seedChain, TSeed(6, 9, 9, 12));
-    appendValue(seedChain, TSeed(11, 14, 17, 16));
-
-    Align<Dna5String, ArrayGaps> alignment;
-    resize(rows(alignment), 2);
-    assignSource(row(alignment, 0), sequenceH);
-    assignSource(row(alignment, 1), sequenceV);
-    AlignConfig<true, false, false, true> alignConfig;
-
-    int result = bandedChainAlignment(alignment, seedChain, scoringSchemeAnchor, scoringSchemeGap, alignConfig, 2);
-
-    std::cout << "Score: " << result << std::endl;
-    std::cout << alignment << std::endl;
-
-    return 0;
-}
diff --git a/demos/tutorial/seed_and_extend/solution7.cpp.stdout b/demos/tutorial/seed_and_extend/solution7.cpp.stdout
deleted file mode 100644
index 51a1601..0000000
--- a/demos/tutorial/seed_and_extend/solution7.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-Score: 1
-      0     .    :    .    :  
-        --CGAAT--CCATCCCACACA
-          || ||   |||  ||||  
-        GGCG-ATNNNCATGGCACA--
-
-
-
diff --git a/demos/tutorial/seed_and_extend/example1.cpp b/demos/tutorial/seeds/example1.cpp
similarity index 100%
copy from demos/tutorial/seed_and_extend/example1.cpp
copy to demos/tutorial/seeds/example1.cpp
diff --git a/demos/tutorial/seed_and_extend/example1.cpp.stdout b/demos/tutorial/seeds/example1.cpp.stdout
similarity index 100%
copy from demos/tutorial/seed_and_extend/example1.cpp.stdout
copy to demos/tutorial/seeds/example1.cpp.stdout
diff --git a/demos/tutorial/seed_and_extend/solution1.cpp b/demos/tutorial/seeds/solution1.cpp
similarity index 100%
copy from demos/tutorial/seed_and_extend/solution1.cpp
copy to demos/tutorial/seeds/solution1.cpp
diff --git a/demos/tutorial/sequence_io/solution4.cpp b/demos/tutorial/sequence_io/solution4.cpp
index 6aba26c..31ab936 100644
--- a/demos/tutorial/sequence_io/solution4.cpp
+++ b/demos/tutorial/sequence_io/solution4.cpp
@@ -28,7 +28,7 @@ int main()
     }
 
     for (unsigned i = 0; i < length(ids); ++i)
-        std::cout << ids[i] << '\t' << seqs[i] << quals[i] << '\n';
+        std::cout << ids[i] << '\t' << seqs[i] << "\n+qual:\t" << quals[i] << '\n';
 
     return 0;
 }
diff --git a/demos/tutorial/sequence_io/solution4.cpp.stdout b/demos/tutorial/sequence_io/solution4.cpp.stdout
index 94d654e..feb41a1 100644
--- a/demos/tutorial/sequence_io/solution4.cpp.stdout
+++ b/demos/tutorial/sequence_io/solution4.cpp.stdout
@@ -1,3 +1,6 @@
-seq1	CCCCCCCCCCCCCCCIIIIIHIIIIIIIII
-seq2	CGATCGATCIIIIIIIII
-seq3	TTTTTTTIIIIHHG
+seq1	CCCCCCCCCCCCCCC
++qual:	IIIIIHIIIIIIIII
+seq2	CGATCGATC
++qual:	IIIIIIIII
+seq3	TTTTTTT
++qual:	IIIIHHG
diff --git a/demos/tutorial/sequences/assignment_6_solution.cpp b/demos/tutorial/sequences/assignment_6_solution.cpp
index 751f03e..a0bc7be 100644
--- a/demos/tutorial/sequences/assignment_6_solution.cpp
+++ b/demos/tutorial/sequences/assignment_6_solution.cpp
@@ -62,5 +62,5 @@ int main(int, char const **)
         // Call of our function to print the simple alignment
         printAlign(genomeFragment, readList[i]);
     }
-    return 1;
+    return 0;
 }
diff --git a/demos/tutorial/sequences/assignment_6_solution.cpp.stdout b/demos/tutorial/sequences/assignment_6_solution.cpp.stdout
new file mode 100644
index 0000000..4e732ff
--- /dev/null
+++ b/demos/tutorial/sequences/assignment_6_solution.cpp.stdout
@@ -0,0 +1,20 @@
+ 
+ Read list: 
+TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
+TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
+AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
+CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
+ 
+ Print alignment using Segment: 
+Alignment 
+  genome : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
+  read   : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
+Alignment 
+  genome : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
+  read   : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
+Alignment 
+  genome : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
+  read   : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
+Alignment 
+  genome : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
+  read   : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
diff --git a/demos/tutorial/sequences/base.cpp b/demos/tutorial/sequences/base.cpp
index 7989c9c..5bd6f0a 100644
--- a/demos/tutorial/sequences/base.cpp
+++ b/demos/tutorial/sequences/base.cpp
@@ -10,6 +10,10 @@ int main()
     String<int>   myNumbers;  // A string of integers.
 //![string_example]
 
+//![simple_string_construction]
+    myText = "Hello SeqAn!";
+//![simple_string_construction]
+
 //![string_of_strings_example]
     String<String<char> >   myStringList;   // A string of character strings.
 //![string_of_strings_example]
@@ -26,13 +30,13 @@ int main()
 
 //![specification_example]
     String<Dna>              myGenome1;   // A default string of nucleotides.
-    String<Dna, Alloc<> >    myGenome2;    // The same as above. 
+    String<Dna, Alloc<> >    myGenome2;    // The same type as above.
 //![specification_example]
 
-//![specification2_example]
+//![external_string_spec]
     // Most of the string is stored on the disk.
     String<Dna, External<> > myLargeGenome;
-//![specification2_example]
+//![external_string_spec]
 
 //![initialization_example]
     String<Dna> myDnaGenome = "TATACGCG";
diff --git a/demos/tutorial/sequences_in_depth/assignment_exact_generous_solution.cpp.stdout b/demos/tutorial/sequences_in_depth/assignment_exact_generous_solution.cpp.stdout
index 1d843ad..dbdfec8 100644
--- a/demos/tutorial/sequences_in_depth/assignment_exact_generous_solution.cpp.stdout
+++ b/demos/tutorial/sequences_in_depth/assignment_exact_generous_solution.cpp.stdout
@@ -1,4 +1,4 @@
-Strategy Exact() took: 380 s
+Strategy Exact() took: [VAR] s
 
-Strategy Generous() took: 0 s
+Strategy Generous() took: [VAR] s
 
diff --git a/demos/tutorial/simple_rna_seq/genequant_assignment2.cpp.stdout b/demos/tutorial/simple_rna_seq/genequant_assignment2.cpp.stdout
index e69de29..d08b74c 100644
--- a/demos/tutorial/simple_rna_seq/genequant_assignment2.cpp.stdout
+++ b/demos/tutorial/simple_rna_seq/genequant_assignment2.cpp.stdout
@@ -0,0 +1,2 @@
+Loading read alignments ..... [22]
+Loading genome annotation ... [12]
diff --git a/demos/tutorial/simple_rna_seq/genequant_assignment3.cpp.stdout b/demos/tutorial/simple_rna_seq/genequant_assignment3.cpp.stdout
index e69de29..d08b74c 100644
--- a/demos/tutorial/simple_rna_seq/genequant_assignment3.cpp.stdout
+++ b/demos/tutorial/simple_rna_seq/genequant_assignment3.cpp.stdout
@@ -0,0 +1,2 @@
+Loading read alignments ..... [22]
+Loading genome annotation ... [12]
diff --git a/demos/tutorial/simple_rna_seq/genequant_assignment4.cpp.stdout b/demos/tutorial/simple_rna_seq/genequant_assignment4.cpp.stdout
index e69de29..d08b74c 100644
--- a/demos/tutorial/simple_rna_seq/genequant_assignment4.cpp.stdout
+++ b/demos/tutorial/simple_rna_seq/genequant_assignment4.cpp.stdout
@@ -0,0 +1,2 @@
+Loading read alignments ..... [22]
+Loading genome annotation ... [12]
diff --git a/demos/tutorial/simple_rna_seq/genequant_assignment5.cpp.stdout b/demos/tutorial/simple_rna_seq/genequant_assignment5.cpp.stdout
index e69de29..d08b74c 100644
--- a/demos/tutorial/simple_rna_seq/genequant_assignment5.cpp.stdout
+++ b/demos/tutorial/simple_rna_seq/genequant_assignment5.cpp.stdout
@@ -0,0 +1,2 @@
+Loading read alignments ..... [22]
+Loading genome annotation ... [12]
diff --git a/demos/tutorial/vcf_io/base.cpp b/demos/tutorial/vcf_io/base.cpp
index 68e4527..4af5999 100644
--- a/demos/tutorial/vcf_io/base.cpp
+++ b/demos/tutorial/vcf_io/base.cpp
@@ -6,8 +6,8 @@ using namespace seqan;
 class VcfRecord
 {
 public:
-    __int32 rID;                          // CHROM
-    __int32 beginPos;                     // POS
+    int32_t rID;                          // CHROM
+    int32_t beginPos;                     // POS
     CharString id;                        // ID
     CharString ref;                       // REF
     CharString alt;                       // ALT
@@ -18,8 +18,8 @@ public:
     StringSet<CharString> genotypeInfos;  // <individual1> <individual2> ..
 
     // Constants for marking reference id and position as invalid.
-    static const __int32 INVALID_REFID = -1;
-    static const __int32 INVALID_POS = -1;
+    static const int32_t INVALID_REFID = -1;
+    static const int32_t INVALID_POS = -1;
     // This function returns the float value for "invalid quality".
     static float MISSING_QUAL();
 };
diff --git a/demos/tutorial/vcf_io/example1.cpp.stdout b/demos/tutorial/vcf_io/example1.cpp.stdout
index e69de29..27d4500 100644
--- a/demos/tutorial/vcf_io/example1.cpp.stdout
+++ b/demos/tutorial/vcf_io/example1.cpp.stdout
@@ -0,0 +1,24 @@
+##fileformat=VCFv4.1
+##fileDate=20090805
+##source=myImputationProgramV3.1
+##reference=file:///seq/references/1000GenomesPilot-NCBI36.fasta
+##contig=<ID=20,length=62435964,assembly=B36,md5=f126cdf8a6e0c7f379d618ff66beb2da,species="Homo sapiens",taxonomy=x>
+##phasing=partial
+##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of Samples With Data">
+##INFO=<ID=DP,Number=1,Type=Integer,Description="Total Depth">
+##INFO=<ID=AF,Number=A,Type=Float,Description="Allele Frequency">
+##INFO=<ID=AA,Number=1,Type=String,Description="Ancestral Allele">
+##INFO=<ID=DB,Number=0,Type=Flag,Description="dbSNP membership, build 129">
+##INFO=<ID=H2,Number=0,Type=Flag,Description="HapMap2 membership">
+##FILTER=<ID=q10,Description="Quality below 10">
+##FILTER=<ID=s50,Description="Less than 50% of samples have data">
+##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
+##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="Genotype Quality">
+##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Read Depth">
+##FORMAT=<ID=HQ,Number=2,Type=Integer,Description="Haplotype Quality">
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	NA00001	NA00002	NA00003
+20	14370	rs6054257	G	A	29	PASS	NS=3;DP=14;AF=0.5;DB;H2	GT:GQ:DP:HQ	0|0:48:1:51,51	1|0:48:8:51,51	1/1:43:5:.,.
+20	17330	.	T	A	3	q10	NS=3;DP=11;AF=0.017	GT:GQ:DP:HQ	0|0:49:3:58,50	0|1:3:5:65,3	0/0:41:3
+20	1110696	rs6040355	A	G,T	67	PASS	NS=2;DP=10;AF=0.333,0.667;AA=T;DB	GT:GQ:DP:HQ	1|2:21:6:23,27	2|1:2:0:18,2	2/2:35:4
+20	1230237	.	T	.	47	PASS	NS=3;DP=13;AA=T	GT:GQ:DP:HQ	0|0:54:7:56,60	0|0:48:4:51,51	0/0:61:2
+20	1234567	microsat1	GTC	G,GTCT	50	PASS	NS=3;DP=9;AA=G	GT:GQ:DP	0/1:35:4	0/2:17:2	1/1:40:3
diff --git a/demos/tutorial/vcf_io/solution1.cpp.stdout b/demos/tutorial/vcf_io/solution1.cpp.stdout
index e69de29..27d4500 100644
--- a/demos/tutorial/vcf_io/solution1.cpp.stdout
+++ b/demos/tutorial/vcf_io/solution1.cpp.stdout
@@ -0,0 +1,24 @@
+##fileformat=VCFv4.1
+##fileDate=20090805
+##source=myImputationProgramV3.1
+##reference=file:///seq/references/1000GenomesPilot-NCBI36.fasta
+##contig=<ID=20,length=62435964,assembly=B36,md5=f126cdf8a6e0c7f379d618ff66beb2da,species="Homo sapiens",taxonomy=x>
+##phasing=partial
+##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of Samples With Data">
+##INFO=<ID=DP,Number=1,Type=Integer,Description="Total Depth">
+##INFO=<ID=AF,Number=A,Type=Float,Description="Allele Frequency">
+##INFO=<ID=AA,Number=1,Type=String,Description="Ancestral Allele">
+##INFO=<ID=DB,Number=0,Type=Flag,Description="dbSNP membership, build 129">
+##INFO=<ID=H2,Number=0,Type=Flag,Description="HapMap2 membership">
+##FILTER=<ID=q10,Description="Quality below 10">
+##FILTER=<ID=s50,Description="Less than 50% of samples have data">
+##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
+##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="Genotype Quality">
+##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Read Depth">
+##FORMAT=<ID=HQ,Number=2,Type=Integer,Description="Haplotype Quality">
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	NA00001	NA00002	NA00003
+20	14370	rs6054257	G	A	29	PASS	NS=3;DP=14;AF=0.5;DB;H2	GT:GQ:DP:HQ	0|0:48:1:51,51	1|0:48:8:51,51	1/1:43:5:.,.
+20	17330	.	T	A	3	q10	NS=3;DP=11;AF=0.017	GT:GQ:DP:HQ	0|0:49:3:58,50	0|1:3:5:65,3	0/0:41:3
+20	1110696	rs6040355	A	G,T	67	PASS	NS=2;DP=10;AF=0.333,0.667;AA=T;DB	GT:GQ:DP:HQ	1|2:21:6:23,27	2|1:2:0:18,2	2/2:35:4
+20	1230237	.	T	.	47	PASS	NS=3;DP=13;AA=T	GT:GQ:DP:HQ	0|0:54:7:56,60	0|0:48:4:51,51	0/0:61:2
+20	1234567	microsat1	GTC	G,GTCT	50	PASS	NS=3;DP=9;AA=G	GT:GQ:DP	0/1:35:4	0/2:17:2	1/1:40:3
diff --git a/demos/unassigned_or_unused/knime_node.cpp b/demos/tutorial/workflows/knime_node.cpp
similarity index 100%
rename from demos/unassigned_or_unused/knime_node.cpp
rename to demos/tutorial/workflows/knime_node.cpp
diff --git a/demos/unassigned_or_unused/benchmark_stream_write.cpp b/demos/unassigned_or_unused/benchmark_stream_write.cpp
index 86559c3..cc4dc2c 100644
--- a/demos/unassigned_or_unused/benchmark_stream_write.cpp
+++ b/demos/unassigned_or_unused/benchmark_stream_write.cpp
@@ -49,6 +49,12 @@
 #include <seqan/seq_io.h>
 #include <seqan/sequence.h>
 
+#if defined(STDLIB_VS)
+#define UNLINK _unlink
+#else
+#define UNLINK unlink
+#endif
+
 const int MB = 1024 * 1024;
 
 using namespace seqan;
@@ -101,7 +107,7 @@ void doIt(TMetas const & metas, TSeqs const & seqs)
         close(file);
         after = sysTime();
         std::cerr << "completed in " << after - before << "s\n" << std::flush;
-        unlink(filenameBuffer);
+        UNLINK(filenameBuffer);
     }
     {
         CharString tempFilename = SEQAN_TEMP_FILENAME();
@@ -118,7 +124,7 @@ void doIt(TMetas const & metas, TSeqs const & seqs)
         close(mmapString);
         after = sysTime();
         std::cerr << "completed in " << after - before << "s\n" << std::flush;
-        unlink(filenameBuffer);
+        UNLINK(filenameBuffer);
     }
 //    {
 //        CharString tempFilename = SEQAN_TEMP_FILENAME();
@@ -133,7 +139,7 @@ void doIt(TMetas const & metas, TSeqs const & seqs)
 //        fclose(file);
 //        after = sysTime();
 //        std::cerr << "completed in " << after - before << "s\n"<< std::flush;
-//        unlink(filenameBuffer);
+//        UNLINK(filenameBuffer);
 //    }
     {
         CharString tempFilename = SEQAN_TEMP_FILENAME();
@@ -151,7 +157,7 @@ void doIt(TMetas const & metas, TSeqs const & seqs)
         close(file);
         after = sysTime();
         std::cerr << "completed in " << after - before << "s\n" << std::flush;
-        unlink(filenameBuffer);
+        UNLINK(filenameBuffer);
     }
     {
         CharString tempFilename = SEQAN_TEMP_FILENAME();
@@ -168,7 +174,7 @@ void doIt(TMetas const & metas, TSeqs const & seqs)
         close(mmapString);
         after = sysTime();
         std::cerr << "completed in " << after - before << "s\n" << std::flush;
-        unlink(filenameBuffer);
+        UNLINK(filenameBuffer);
     }
 //    {
 //        CharString tempFilename = SEQAN_TEMP_FILENAME();
@@ -183,7 +189,7 @@ void doIt(TMetas const & metas, TSeqs const & seqs)
 //        fclose(file);
 //        after = sysTime();
 //        std::cerr << "completed in " << after - before << "s\n"<< std::flush;
-//        unlink(filenameBuffer);
+//        UNLINK(filenameBuffer);
 //    }
     {
         CharString tempFilename = SEQAN_TEMP_FILENAME();
@@ -201,7 +207,7 @@ void doIt(TMetas const & metas, TSeqs const & seqs)
         close(file);
         after = sysTime();
         std::cerr << "completed in " << after - before << "s\n" << std::flush;
-        unlink(filenameBuffer);
+        UNLINK(filenameBuffer);
     }
 }
 
diff --git a/demos/unassigned_or_unused/cuda/count.cu b/demos/unassigned_or_unused/cuda/count.cu
deleted file mode 100644
index 8c77975..0000000
--- a/demos/unassigned_or_unused/cuda/count.cu
+++ /dev/null
@@ -1,144 +0,0 @@
-// ==========================================================================
-//                 SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2013 NVIDIA Corporation
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of NVIDIA Corporation nor the names of
-//       its contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-// Author: Enrico Siragusa <enrico.siragusa at fu-berlin.de>
-// ==========================================================================
-
-#ifndef SEQAN_DEMOS_CUDA_COUNT_H
-#define SEQAN_DEMOS_CUDA_COUNT_H
-
-#include <seqan/basic.h>
-#include <seqan/sequence.h>
-#include <seqan/index.h>
-#include <seqan/index/index_fm_device.h>
-
-using namespace seqan;
-
-// ==========================================================================
-// Metafunctions
-// ==========================================================================
-
-namespace seqan {
-
-// Manually specialize word size to be compatible with GPU
-
-template <typename TValue>
-struct RankDictionaryWordSize_<TValue, TwoLevels<void> > :
-    BitsPerValue<uint32_t> {};
-
-template <typename TValue>
-struct RankDictionaryWordSize_<TValue, TwoLevels<Device<void> > > :
-    BitsPerValue<uint32_t> {};
-
-template <typename TValue, typename TSpec>
-struct RankDictionaryWordSize_<TValue, TwoLevels<View<TSpec> > > :
-    BitsPerValue<uint32_t> {};
-
-}
-
-// ==========================================================================
-// Functions
-// ==========================================================================
-
-// --------------------------------------------------------------------------
-// Function main()
-// --------------------------------------------------------------------------
-
-int main(int argc, char const ** argv)
-{
-    // ----------------------------------------------------------------------
-    // Parse input data.
-    // ----------------------------------------------------------------------
-
-    // Select the input types.
-    typedef DnaString                                       THaystack;
-    typedef StringSet<DnaString, Owner<ConcatDirect<> > >   TNeedles;
-
-    if (argc < 3)
-    {
-        std::cerr << "USAGE: " << argv[0] << " <TEXT> <PATTERN> [<PATTERN> ...]" << std::endl;
-        return 1;
-    }
-
-    // Create a haystack.
-    THaystack haystack = argv[1];
-
-    // Create a set of needles.
-    TNeedles needles;
-    for (int i = 2; i < argc; i++)
-        appendValue(needles, argv[i]);
-
-    // ----------------------------------------------------------------------
-    // Build the FM-index on the CPU.
-    // ----------------------------------------------------------------------
-
-    // Select the index type.
-    typedef Index<THaystack, FMIndex<void, CudaFMIndexConfig> > TIndex;
-
-    // Build the index over the reversed haystack.
-    TIndex index(haystack);
-    reverse(haystack);
-    indexCreate(index);
-    reverse(haystack);
-
-    // ----------------------------------------------------------------------
-    // Count on the CPU.
-    // ----------------------------------------------------------------------
-
-    omp_set_num_threads(8);
-    std::cout << "CPU Occurrences: " << countOccurrences(index, needles) << std::endl;
-
-    // ----------------------------------------------------------------------
-    // Copy data to the GPU.
-    // ----------------------------------------------------------------------
-
-    // Select the GPU types.
-    typedef Device<TNeedles>::Type     TDeviceNeedles;
-    typedef Device<TIndex>::Type       TDeviceIndex;
-
-    // Copy the needles to the GPU.
-    TDeviceNeedles deviceNeedles;
-    assign(deviceNeedles, needles);
-
-    // Copy the index to the GPU.
-    TDeviceIndex deviceIndex;
-    assign(deviceIndex, index);
-
-    // ----------------------------------------------------------------------
-    // Count on the GPU.
-    // ----------------------------------------------------------------------
-
-    std::cout << "GPU Occurrences: " << countOccurrences(deviceIndex, deviceNeedles) << std::endl;
-
-    return 0;
-}
-
-#endif  // SEQAN_DEMOS_CUDA_COUNT_H
diff --git a/demos/unassigned_or_unused/cuda/mmap.cu b/demos/unassigned_or_unused/cuda/mmap.cu
deleted file mode 100644
index 132c9ac..0000000
--- a/demos/unassigned_or_unused/cuda/mmap.cu
+++ /dev/null
@@ -1,67 +0,0 @@
-// ==========================================================================
-//                 SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2006-2016, Knut Reinert, FU Berlin
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
-//       its contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-// Author: Enrico Siragusa <enrico.siragusa at fu-berlin.de>
-// ==========================================================================
-
-#include <seqan/basic.h>
-#include <seqan/sequence.h>
-#include <seqan/stream.h>
-
-#include <thrust/count.h>
-
-using namespace seqan;
-
-int main(int argc, char const ** argv)
-{
-    typedef String<char, MMap<> >               TMMapString;
-    typedef typename Device<TMMapString>::Type  TDeviceString;
-
-    if (argc != 3)
-    {
-        std::cerr << "USAGE: " << argv[0] << " <FILENAME> <CHAR>" << std::endl;
-        return 1;
-    }
-
-    TMMapString str;
-
-    if (!open(str, argv[1], OPEN_RDWR | OPEN_APPEND))
-        return 1;
-
-    TDeviceString deviceStr;
-    assign(deviceStr, str);
-
-    close(str);
-
-    std::cout << thrust::count(begin(deviceStr, Standard()), end(deviceStr, Standard()), argv[2][0]) << std::endl;
-
-    return 0;
-}
diff --git a/demos/unassigned_or_unused/index_lcp.cpp b/demos/unassigned_or_unused/index_lcp.cpp
index 374c81e..1e024ae 100644
--- a/demos/unassigned_or_unused/index_lcp.cpp
+++ b/demos/unassigned_or_unused/index_lcp.cpp
@@ -27,7 +27,7 @@ int main()
     for (Size<TMyIndex>::Type i = 0; i < length(myIndex); ++i)
     {
         SAValue<TMyIndex>::Type p = saAt(i, myIndex);
-        std::cout << i << " " << lcpAt(i, myIndex) << " " << p << " " << suffix(mySet, p) << std::endl;
+        std::cout << i << " " << lcpAt(i, myIndex) << " " << p << " " << suffix(mySet[getSeqNo(p, stringSetLimits(mySet))], getSeqOffset(p, stringSetLimits(mySet))) << std::endl;
     }
 
     return 0;
diff --git a/dox/CMakeLists.txt b/dox/CMakeLists.txt
index 9ea69c7..20e0ae5 100644
--- a/dox/CMakeLists.txt
+++ b/dox/CMakeLists.txt
@@ -26,11 +26,12 @@ add_test (build_dox
 if (${SEQAN_BUILD_SYSTEM} MATCHES "SEQAN_RELEASE_LIBRARY") # includes SEQAN_RELEASE_LIBRARY
 
     add_custom_target (dox ALL
-        ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/../util/bin/dox.py
+        cd ${CMAKE_CURRENT_SOURCE_DIR} && ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/../util/bin/dox.py
         -b ${CMAKE_CURRENT_SOURCE_DIR}/..
         -i ${CMAKE_CURRENT_SOURCE_DIR}/../include/seqan
         -i ${CMAKE_CURRENT_SOURCE_DIR}/pages
-        --image-dir ${CMAKE_CURRENT_SOURCE_DIR}/images)
+        --image-dir ${CMAKE_CURRENT_SOURCE_DIR}/images
+        --out-dir ${CMAKE_BINARY_DIR}/dox/html)
 
     install (DIRECTORY ${CMAKE_BINARY_DIR}/dox/html
              DESTINATION share/doc/seqan)
diff --git a/dox/pages/index.dox b/dox/pages/index.dox
index 832f375..b3f26ce 100644
--- a/dox/pages/index.dox
+++ b/dox/pages/index.dox
@@ -6,8 +6,8 @@ SeqAn is an open source C++ library of efficient algorithms and data structures
 @section Getting Started
 
 <ol>
-<li><b>Install SeqAn.</b> It's as easy as following the <a href="http://seqan.readthedocs.org/en/master/Tutorial/GettingStarted.html" target="_top">installation instructions</a>.</li>
-<li><b>Learn SeqAn.</b> The <a href="http://seqan.readthedocs.org/en/master/Tutorial.html" target="_top">SeqAn Tutorials</a> in the <a href="http://seqan.readthedocs.org/en/master/" target="_top">SeqAn Manual</a> will introduce you into SeqAn's basic concepts and show you how to use its data structures and functions.</li>
+<li><b>Install SeqAn.</b> It's as easy as following the <a href="http://seqan.readthedocs.io/en/master/Infrastructure/Use/Install.html" target="_top">installation instructions</a>.</li>
+<li><b>Learn SeqAn.</b> The <a href="http://seqan.readthedocs.io/en/master/Tutorial/GettingStarted/index.html" target="_top">SeqAn Tutorials</a> in the <a href="http://seqan.readthedocs.io/en/master/" target="_top">SeqAn Manual</a> will introduce you into SeqAn's basic concepts and show you how to use its data structures and functions.</li>
 <li><b>Think SeqAn.</b> Since our library uses advanced C++ template programming techniques, we recommend you to read our glossary of <a href="page_LanguageEntities.html">language entity types</a> for a quick introduction.</li>
 <li><b>Use SeqAn.</b> Search the library for classes, functions, etc. using the search bar to the left. Need some orientation? Check the <a href="#typical_tasks">typical tasks</a> below.</li>
 </ol>
@@ -16,27 +16,14 @@ SeqAn is an open source C++ library of efficient algorithms and data structures
 
 If you know what you want to do but not how to achieve this with SeqAn, this sections gives you a nice overview of the components that might help you.
 
-Alternatively you might want to check the <a href="http://seqan.readthedocs.org/en/master/Tutorial.html" target="_top">SeqAn Tutorials</a>.
+Alternatively you might want to check the <a href="http://seqan.readthedocs.io/en/master/Tutorial/GettingStarted/index.html" target="_top">SeqAn Tutorials</a>.
 
 <ul class="overview">
     <li>
-        <h3>Read Mapping</h3>
-        <p>Most modern read mappers first identify candidate regions in the reference sequence approximately or using heuristics.  Then, they verify the found locations.  SeqAn can help with both and also provides facilities for making I/O easier.</p>
-        <table>
-            <tr><td><ul><li><a href="http://seqan.readthedocs.org/en/master/Tutorial/SimpleReadMapping.html" target="_top" data-lang-entity="tutorial">Read Mapping</a></li></ul></td><td>instructive introductions</td></tr>
-            <tr><td><ul><li>@link Index @endlink</li></ul></td><td>class and subclasses can be used for index-based search</td></tr>
-            <tr><td><ul><li>@link Finder @endlink</li><li>@link Pattern @endlink</li></ul></td><td>can be used to implement online string search</td></tr>
-            <tr><td><ul><li>@link Align @endlink</li><li>@link globalAlignment @endlink</li></ul></td><td>alignments can be used for the verification</td></tr>
-            <tr><td><ul><li>@link SeqFileIn @endlink</li></ul></td><td>used to read FASTA and FASTQ files</td></tr>
-            <tr><td><ul><li>@link BamFileOut @endlink</li></ul></td><td>used to write SAM and BAM files</td></tr>
-            <tr><td><ul><li>@link FragmentStore @endlink</li></ul></td><td>allows for managing read alignments and reading/writing from/to SAM</td></tr>
-        </table>
-    </li>
-    <li>
         <h3>File I/O</h3>
         <p>SeqAn has support for most common file formats in Bioinformatics. The following lists the most convenient access methods.</p>
         <table>
-            <tr><td><ul><li><a href="http://seqan.readthedocs.org/en/master/Tutorial/InputOutputOverview.html" target="_top" data-lang-entity="tutorial">I/O Overview</a></li></ul></td><td>instructive introductions</td></tr>
+            <tr><td><ul><li><a href="http://seqan.readthedocs.io/en/master/Tutorial/InputOutput/index.html" target="_top" data-lang-entity="tutorial">I/O Overview</a></li></ul></td><td>instructive introductions</td></tr>
             <tr><td><ul><li>@link SeqFileIn @endlink</li><li>@link SeqFileOut @endlink</li><li>@link FaiIndex @endlink</li></ul></td><td>FASTA, FASTQ</td></tr>
             <tr><td><ul><li>@link BamFileIn @endlink</li><li>@link BamFileOut @endlink</li></ul></td><td>SAM, BAM</td></tr>
             <tr><td><ul><li>@link VcfFileIn @endlink</li><li>@link VcfFileOut @endlink</li></ul></td><td>VCF</td></tr>
@@ -48,7 +35,7 @@ Alternatively you might want to check the <a href="http://seqan.readthedocs.org/
         <h3>Sequence Alignment <small>and Multiple Sequence Alignment</small></h3>
         <p>Sequence alignment and multiple sequence alignment are classic problems in Bioinformatics.</p>
         <table>
-            <tr><td><ul><li><a href="http://seqan.readthedocs.org/en/master/Tutorial/AlignmentRepresentation.html" target="_top" data-lang-entity="tutorial">Alignment Representation</a></li><li><a href="http://seqan.readthedocs.org/en/master/Tutorial/PairwiseSequenceAlignment.html" target="_top" data-lang-entity="tutorial">Pairwise Sequence Alignment</a></li><li><a href="http://seqan.readthedocs.org/en/master/Tutorial/MultipleSequenceAlignment.html" target="_top" data-lang-entity="tutori [...]
+            <tr><td><ul><li><a href="http://seqan.readthedocs.io/en/master/Tutorial/DataStructures/Alignment/AlignmentGaps.html" target="_top" data-lang-entity="tutorial">Alignment Representation</a></li><li><a href="http://seqan.readthedocs.io/en/master/Tutorial/Algorithms/Alignment/PairwiseSequenceAlignment.html" target="_top" data-lang-entity="tutorial">Pairwise Sequence Alignment</a></li><li><a href="http://seqan.readthedocs.io/en/master/Tutorial/Algorithms/Alignment/MultipleSequence [...]
             <tr><td><ul><li>@link globalAlignment @endlink</li></ul></td><td>provides dynamic programming algorithms for global sequence alignment with various parameters</td></tr>
             <tr><td><ul><li>@link localAlignment @endlink</li></ul></td><td></td></tr>
             <tr><td><ul><li>@link LocalAlignmentEnumerator @endlink</li></ul></td><td>offers the Waterman-Eggert algorithm for enumerating suboptimal local alignments</td></tr>
@@ -60,7 +47,7 @@ Alternatively you might want to check the <a href="http://seqan.readthedocs.org/
         <h3>Graph <small>Data Structures and Algorithms</small></h3>
         <p>Often, graphs come in handy to model subproblems in sequence analysis. SeqAn provides basic support for graphs and graph algorithms.</p>
         <table>
-            <tr><td><ul><li><a href="http://seqan.readthedocs.org/en/master/Tutorial/Graphs.html" target="_top" data-lang-entity="tutorial">Graphs</a></li></ul></td><td>instructive introductions</td></tr>
+            <tr><td><ul><li><a href="http://seqan.readthedocs.io/en/master/Tutorial/Algorithms/GraphAlgorithms.html" target="_top" data-lang-entity="tutorial">Graphs</a></li></ul></td><td>instructive introductions</td></tr>
             <tr><td><ul><li>@link Graph @endlink</li></ul></td><td>central class (including subclasses)</td></tr>
             <tr><td><ul><li>@link DirectedGraph @endlink</li><li>@link UndirectedGraph @endlink.</li></ul></td><td>simple directed and undirected graphs structures</td></tr>
             <tr><td><ul><li>@link Automaton @endlink</li><li>@link WordGraph @endlink</li><li>@link HmmGraph @endlink</li></ul></td><td>special subclasses for sequence analysis</td></tr>
diff --git a/include/seqan/align.h b/include/seqan/align.h
index 7358c29..6f64b07 100644
--- a/include/seqan/align.h
+++ b/include/seqan/align.h
@@ -49,6 +49,9 @@
 // Prerequisites
 // ============================================================================
 
+#include <type_traits>
+#include <algorithm>
+
 #include <seqan/basic.h>
 #include <seqan/modifier.h>  // ModifiedAlphabet<>.
 #include <seqan/align/align_metafunctions.h>
@@ -107,9 +110,6 @@
 // The DP Band
 #include <seqan/align/dp_band.h>
 
-// The DP Scout
-#include <seqan/align/dp_scout.h>
-
 // Stores the score value of a particular cell in the dp matrix.
 // If affine gap costs are selected one cell stores the three values
 // for all three dp matrices.
@@ -118,6 +118,9 @@
 #include <seqan/align/dp_cell_affine.h>
 #include <seqan/align/dp_cell_dynamic.h>
 
+// The DP Scout
+#include <seqan/align/dp_scout.h>
+
 // Stores the actual trace segment that was detected during traceback.
 // The trace segments can be adapted into any alignment representation
 // form.
@@ -152,6 +155,11 @@
 #include <seqan/align/dp_context.h>
 #include <seqan/align/dp_setup.h>
 
+#if SEQAN_SIMD_ENABLED
+#include <seqan/align/dp_scout_simd.h>
+#include <seqan/align/dp_align_simd_helper.h>
+#endif  // SEQAN_SIMD_ENABLED
+
 // The actual implementations of the traceback and the dynamic programming that
 // is used by all different alignment algorithms.
 #include <seqan/align/dp_traceback_impl.h>
@@ -187,6 +195,8 @@
 // Alignment Algorithm Interfaces
 // ============================================================================
 
+#include <seqan/align/align_interface_wrapper.h>
+
 // The front-end functions for global alignments.
 #include <seqan/align/global_alignment_unbanded.h>
 #include <seqan/align/global_alignment_banded.h>
diff --git a/include/seqan/align/align_base.h b/include/seqan/align/align_base.h
index 5b1409b..a23afff 100644
--- a/include/seqan/align/align_base.h
+++ b/include/seqan/align/align_base.h
@@ -498,7 +498,7 @@ write(TFile & target,
 
         // Print header line
         char buffer[20];
-        int len = sprintf(buffer, "%7u", (unsigned)baseCount);
+        int len = snprintf(buffer, 20, "%7u", (unsigned)baseCount);
         write(target, buffer, len);
         baseCount += windowSize_;
         writeValue(target, ' ');
diff --git a/include/seqan/align/align_interface_wrapper.h b/include/seqan/align/align_interface_wrapper.h
new file mode 100644
index 0000000..f384b1c
--- /dev/null
+++ b/include/seqan/align/align_interface_wrapper.h
@@ -0,0 +1,179 @@
+// ==========================================================================
+//                 SeqAn - The Library for Sequence Analysis
+// ==========================================================================
+// Copyright (c) 2006-2016, Knut Reinert, FU Berlin
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
+//       its contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+//
+// ==========================================================================
+// Author: Rene Rahn <rene.rahn at fu-berlin.de>
+// ==========================================================================
+
+#ifndef INCLUDE_SEQAN_ALIGN_ALIGN_INTERFACE_WRAPPER_H_
+#define INCLUDE_SEQAN_ALIGN_ALIGN_INTERFACE_WRAPPER_H_
+
+namespace seqan
+{
+
+// ============================================================================
+// Forwards
+// ============================================================================
+
+// ============================================================================
+// Tags, Classes, Enums
+// ============================================================================
+
+// ============================================================================
+// Metafunctions
+// ============================================================================
+
+// ============================================================================
+// Functions
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// Function _alignWrapperSequential(); Score; StringSet vs. StringSet
+// ----------------------------------------------------------------------------
+
+template <typename TString1, typename TSpec1,
+          typename TString2, typename TSpec2,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlignConfig,
+          typename TGapModel>
+inline auto
+_alignWrapperSequential(StringSet<TString1, TSpec1> const & stringsH,
+                        StringSet<TString2, TSpec2> const & stringsV,
+                        Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                        TAlignConfig const & config,
+                        TGapModel const & /*gaps*/)
+
+{
+    String<TScoreValue> results;
+    resize(results, length(stringsV));
+
+    auto zipCont = makeZipView(results, stringsH, stringsV);
+    forEach(zipCont,
+            [&] (auto tuple)
+            {
+                using namespace seqan;
+                DPScoutState_<Default> dpScoutState;
+                String<TraceSegment_<unsigned, unsigned> > traceSegments;  // Dummy segments.
+                std::get<0>(tuple) = _setUpAndRunAlignment(traceSegments, dpScoutState,
+                                                           std::get<1>(tuple), std::get<2>(tuple), scoringScheme,
+                                                           config, TGapModel());
+            });
+    return results;
+}
+
+// ----------------------------------------------------------------------------
+// Function _alignWrapperSequential(); Score; String vs. StringSet
+// ----------------------------------------------------------------------------
+
+template <typename TString1,
+          typename TString2, typename TSpec,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlignConfig,
+          typename TGapModel>
+inline auto
+_alignWrapperSequential(TString1 const & stringH,
+                        StringSet<TString2, TSpec> const & stringsV,
+                        Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                        TAlignConfig const & config,
+                        TGapModel const & /*gaps*/)
+
+{
+    String<TScoreValue> results;
+    resize(results, length(stringsV));
+
+    auto zipCont = makeZipView(results, stringsV);
+    forEach(zipCont,
+            [&] (auto tuple)
+            {
+                using namespace seqan;
+                DPScoutState_<Default> dpScoutState;
+                String<TraceSegment_<unsigned, unsigned> > traceSegments;  // Dummy segments.
+                std::get<0>(tuple) = _setUpAndRunAlignment(traceSegments, dpScoutState, stringH, std::get<1>(tuple),
+                                                           scoringScheme, config, TGapModel());
+            });
+    return results;
+}
+
+// ----------------------------------------------------------------------------
+// Function _alignWrapperSequential(); Gaps
+// ----------------------------------------------------------------------------
+
+template <typename TSequenceH, typename TGapsSpecH, typename TSetSpecH,
+          typename TSequenceV, typename TGapsSpecV, typename TSetSpecV,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlignConfig,
+          typename TGapModel>
+inline auto
+_alignWrapperSequential(StringSet<Gaps<TSequenceH, TGapsSpecH>, TSetSpecH> & gapSeqSetH,
+                        StringSet<Gaps<TSequenceV, TGapsSpecV>, TSetSpecV> & gapSeqSetV,
+                        Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                        TAlignConfig const & config,
+                        TGapModel const & /*gaps*/)
+
+{
+    typedef typename Size<TSequenceH>::Type TSize;
+    typedef typename Position<TSequenceH>::Type TPosition;
+    typedef TraceSegment_<TPosition, TSize> TTraceSegment;
+
+    String<TScoreValue> results;
+    resize(results, length(gapSeqSetH));
+    
+    auto zipCont = makeZipView(results, gapSeqSetH, gapSeqSetV);
+    forEach(zipCont,
+            [&] (auto tuple)
+            {
+                using namespace seqan;
+                String<TTraceSegment> trace;
+                DPScoutState_<Default> dpScoutState;
+                std::get<0>(tuple) = _setUpAndRunAlignment(trace, dpScoutState, source(std::get<1>(tuple)),
+                                                           source(std::get<2>(tuple)), scoringScheme, config,
+                                                           TGapModel());
+                _adaptTraceSegmentsTo(std::get<1>(tuple), std::get<2>(tuple), trace);
+            });
+    return results;
+}
+
+// ----------------------------------------------------------------------------
+// Function _alignWrapper()
+// ----------------------------------------------------------------------------
+
+template <typename... TArgs>
+inline auto _alignWrapper(TArgs && ...args)
+{
+#if SEQAN_SIMD_ENABLED
+    return _alignWrapperSimd(std::forward<TArgs>(args)...);
+#else
+    return _alignWrapperSequential(std::forward<TArgs>(args)...);
+#endif
+}
+
+}  // namespace seqan
+
+#endif  // #ifndef INCLUDE_SEQAN_ALIGN_ALIGN_INTERFACE_WRAPPER_H_
diff --git a/include/seqan/align/dp_algorithm_impl.h b/include/seqan/align/dp_algorithm_impl.h
index 32bbd97..39ae3d8 100644
--- a/include/seqan/align/dp_algorithm_impl.h
+++ b/include/seqan/align/dp_algorithm_impl.h
@@ -152,6 +152,30 @@ namespace seqan {
 // ============================================================================
 
 // ----------------------------------------------------------------------------
+// Function prepareAlign()
+// ----------------------------------------------------------------------------
+
+template<typename TSequence, typename TAlignSpec>
+inline void
+prepareAlign(StringSet<Align<TSequence, TAlignSpec> > & align,
+             TSequence const & strH,
+             StringSet<TSequence> const & setV)
+{
+    size_t numAlignments = length(setV);
+
+    SEQAN_ASSERT_EQ(length(align), 0u);
+    SEQAN_ASSERT_GT(numAlignments, 0u);
+
+    resize(align, numAlignments);
+    for(size_t i = 0; i < numAlignments; ++i)
+    {
+        resize(rows(align[i]), 2);
+        assignSource(row(align[i], 0), strH);
+        assignSource(row(align[i], 1), setV[i]);
+    }
+}
+
+// ----------------------------------------------------------------------------
 // Function _checkBandProperties()
 // ----------------------------------------------------------------------------
 
@@ -273,19 +297,28 @@ _computeCell(TDPScout & scout,
 
     if (TrackingEnabled_<TMetaColumn, TCellDescriptor>::VALUE)
     {
-        typedef typename IsSameType<typename TColumnDescriptor::TColumnProperty,
-            DPFinalColumn>::Type TIsLastColumn;
-        typedef typename And<IsSameType<TCellDescriptor, LastCell>, Or<
-            IsSameType<typename TColumnDescriptor::TLocation,
-            PartialColumnBottom>,IsSameType<
-            typename TColumnDescriptor::TLocation, FullColumn> > >::Type
-            TIsLastRow;
+        typedef typename LastColumnEnabled_<TDPProfile, TColumnDescriptor>::Type TIsLastColumn;
+        typedef typename LastRowEnabled_<TDPProfile, TCellDescriptor, TColumnDescriptor>::Type TIsLastRow;
         _scoutBestScore(scout, activeCell, traceMatrixNavigator,
                         TIsLastColumn(), TIsLastRow());
     }
 }
 
 // ----------------------------------------------------------------------------
+// Function _precomputeScoreMatrixOffset()
+// ----------------------------------------------------------------------------
+
+// Default fallback if scoring scheme is not a matrix.
+template <typename TSeqValue,
+          typename TScoringScheme>
+inline TSeqValue const &
+_precomputeScoreMatrixOffset(TSeqValue const & seqVal,
+                             TScoringScheme const & /*score*/)
+{
+    return seqVal;
+}
+
+// ----------------------------------------------------------------------------
 // Function _computeTrack()
 // ----------------------------------------------------------------------------
 
@@ -309,13 +342,17 @@ _computeTrack(TDPScout & scout,
     _goNextCell(dpScoreMatrixNavigator, TColumnDescriptor(), FirstCell());
     _goNextCell(dpTraceMatrixNavigator, TColumnDescriptor(), FirstCell());
 
+    // Precompute the row of the scoring matrix for future look-ups.
+    TSeqHValue tmpSeqH = _precomputeScoreMatrixOffset(seqHValue, scoringScheme);
+
+    // Initilaize SIMD version with multiple end points.
+    _preInitScoutVertical(scout);
+
     // Compute the first cell.
     _computeCell(scout, dpTraceMatrixNavigator, value(dpScoreMatrixNavigator),
                  previousCellDiagonal(dpScoreMatrixNavigator), previousCellHorizontal(dpScoreMatrixNavigator),
-                 previousCellVertical(dpScoreMatrixNavigator), seqHValue, seqVValue, scoringScheme,
+                 previousCellVertical(dpScoreMatrixNavigator), tmpSeqH, seqVValue, scoringScheme,
                  TColumnDescriptor(), FirstCell(), TDPProfile());
-//    std::cerr << _scoreOfCell(value(dpScoreMatrixNavigator)) << " \t";
-//    std::cerr << _scoreOfCell(value(dpScoreMatrixNavigator)) << "(" << _horizontalScoreOfCell(value(dpScoreMatrixNavigator)) << "," << _verticalScoreOfCell(value(dpScoreMatrixNavigator)) << ")" << " \t";
 
     TSeqVIterator iter = seqBegin;
     TSeqVIterator itEnd = (seqEnd - 1);
@@ -326,13 +363,26 @@ _computeTrack(TDPScout & scout,
         _goNextCell(dpScoreMatrixNavigator, TColumnDescriptor(), InnerCell());
         _goNextCell(dpTraceMatrixNavigator, TColumnDescriptor(), InnerCell());
         // Compute the inner cell.
-        _computeCell(scout, dpTraceMatrixNavigator, value(dpScoreMatrixNavigator),
-                     previousCellDiagonal(dpScoreMatrixNavigator), previousCellHorizontal(dpScoreMatrixNavigator),
-                     previousCellVertical(dpScoreMatrixNavigator), seqHValue,
-                     sequenceEntryForScore(scoringScheme, container(iter), position(iter)), scoringScheme,
-                     TColumnDescriptor(), InnerCell(), TDPProfile());
-//        std::cerr << _scoreOfCell(value(dpScoreMatrixNavigator)) << " \t";
-//        std::cerr << _scoreOfCell(value(dpScoreMatrixNavigator)) << "(" << _horizontalScoreOfCell(value(dpScoreMatrixNavigator)) << "," << _verticalScoreOfCell(value(dpScoreMatrixNavigator)) << ")" << " \t";
+        // If we have variable length simd, we need to check if we reached the end of one of the sequences.
+        // For all other cases, the function returns always false.
+        if (SEQAN_UNLIKELY(_reachedVerticalEndPoint(scout, iter)))
+        {
+            _computeCell(scout, dpTraceMatrixNavigator, value(dpScoreMatrixNavigator),
+                         previousCellDiagonal(dpScoreMatrixNavigator), previousCellHorizontal(dpScoreMatrixNavigator),
+                         previousCellVertical(dpScoreMatrixNavigator), tmpSeqH,
+                         sequenceEntryForScore(scoringScheme, container(iter), position(iter)), scoringScheme,
+                         TColumnDescriptor(), LastCell(), TDPProfile());
+            _nextVerticalEndPos(scout);
+        }
+        else
+        {
+            _computeCell(scout, dpTraceMatrixNavigator, value(dpScoreMatrixNavigator),
+                         previousCellDiagonal(dpScoreMatrixNavigator), previousCellHorizontal(dpScoreMatrixNavigator),
+                         previousCellVertical(dpScoreMatrixNavigator), tmpSeqH,
+                         sequenceEntryForScore(scoringScheme, container(iter), position(iter)), scoringScheme,
+                         TColumnDescriptor(), InnerCell(), TDPProfile());
+        }
+        _incVerticalPos(scout);
     }
     // Set the iterator to the last cell of the track.
     _goNextCell(dpScoreMatrixNavigator, TColumnDescriptor(), LastCell());
@@ -340,86 +390,11 @@ _computeTrack(TDPScout & scout,
     // Compute the last cell.
     _computeCell(scout, dpTraceMatrixNavigator, value(dpScoreMatrixNavigator),
                  previousCellDiagonal(dpScoreMatrixNavigator), previousCellHorizontal(dpScoreMatrixNavigator),
-                 previousCellVertical(dpScoreMatrixNavigator), seqHValue,
+                 previousCellVertical(dpScoreMatrixNavigator), tmpSeqH,
                  sequenceEntryForScore(scoringScheme, container(iter), position(iter)), scoringScheme,
                  TColumnDescriptor(), LastCell(), TDPProfile());
-
-//    std::cerr << _scoreOfCell(value(dpScoreMatrixNavigator)) << std::endl;
-//    std::cerr << _scoreOfCell(value(dpScoreMatrixNavigator)) << "(" << _horizontalScoreOfCell(value(dpScoreMatrixNavigator)) << "," << _verticalScoreOfCell(value(dpScoreMatrixNavigator)) << ")" << std::endl;
 }
 
-// TODO(rmaerker): Debug code!
-//template <typename TDPScout, typename TDPScoreMatrixNavigator, typename TDPTraceMatrixNavigator, typename TSeqHValue,
-//            typename TSeqVValue, typename TSeqVIterator, typename TScoringScheme, typename TDPProfile,
-//            typename TColumnDescriptor>
-//inline void
-//_computeTrack(TDPScout & scout,
-//              TDPScoreMatrixNavigator & dpScoreMatrixNavigator,
-//              TDPTraceMatrixNavigator & dpTraceMatrixNavigator,
-//              TSeqHValue const & seqHValue,
-//              TSeqVValue const & seqVValue,
-//              TSeqVIterator const & seqBegin,
-//              TSeqVIterator const & seqEnd,
-//              TScoringScheme const & scoringScheme,
-//              TColumnDescriptor const &,
-//              TDPProfile const &,
-//              unsigned col,
-//              unsigned row,
-//              String<std::string> & testMatrix)
-//{
-//    // Set the iterator to the begin of the track.
-//    _goNextCell(dpScoreMatrixNavigator, TColumnDescriptor(), FirstCell());
-//    _goNextCell(dpTraceMatrixNavigator, TColumnDescriptor(), FirstCell());
-//
-//    // Compute the first cell.
-//    _computeCell(scout, dpTraceMatrixNavigator, value(dpScoreMatrixNavigator),
-//            previousCellDiagonal(dpScoreMatrixNavigator), previousCellHorizontal(dpScoreMatrixNavigator),
-//            previousCellVertical(dpScoreMatrixNavigator), seqHValue, seqVValue, scoringScheme,
-//            TColumnDescriptor(), FirstCell(), TDPProfile());
-//    // TODO(rmaerker): remove debug code
-////    std::cout << _scoreOfCell(value(dpScoreMatrixNavigator)) << "\t";
-//    std::stringstream stream;
-//    stream << _scoreOfCell(value(dpScoreMatrixNavigator));
-////    stream << col + row;
-//    testMatrix[col + row] = stream.str();
-//    ++row;
-//
-//    TSeqVIterator iter = seqBegin;
-//    TSeqVIterator itEnd = (seqEnd - 1);
-//    // Compute the inner cells of the current track.
-//    for (; iter != itEnd; ++iter, ++row)  // He will out of scope....
-//    {
-//      // Set the iterator to the next cell within the track.
-//      _goNextCell(dpScoreMatrixNavigator, TColumnDescriptor(), InnerCell());
-//      _goNextCell(dpTraceMatrixNavigator, TColumnDescriptor(), InnerCell());
-//      // Compute the inner cell.
-//        _computeCell(scout, dpTraceMatrixNavigator, value(dpScoreMatrixNavigator),
-//                previousCellDiagonal(dpScoreMatrixNavigator), previousCellHorizontal(dpScoreMatrixNavigator),
-//                previousCellVertical(dpScoreMatrixNavigator), seqHValue, value(iter), scoringScheme,
-//                TColumnDescriptor(), InnerCell(), TDPProfile());
-//        // TODO(rmaerker): remove debug code
-////        std::cout << _scoreOfCell(value(dpScoreMatrixNavigator)) << "\t";
-//        stream.str("");
-//        stream << _scoreOfCell(value(dpScoreMatrixNavigator));
-////        stream << col + row;
-//        testMatrix[col + row] = stream.str();
-//    }
-//    // Set the iterator to the last cell of the track.
-//    _goNextCell(dpScoreMatrixNavigator, TColumnDescriptor(), LastCell());
-//    _goNextCell(dpTraceMatrixNavigator, TColumnDescriptor(), LastCell());
-//    // Compute the last cell.
-//    _computeCell(scout, dpTraceMatrixNavigator, value(dpScoreMatrixNavigator),
-//            previousCellDiagonal(dpScoreMatrixNavigator), previousCellHorizontal(dpScoreMatrixNavigator),
-//            previousCellVertical(dpScoreMatrixNavigator), seqHValue, value(iter), scoringScheme,
-//            TColumnDescriptor(), LastCell(), TDPProfile());
-//    // TODO(rmaerker): remove debug code
-////    std::cout << _scoreOfCell(value(dpScoreMatrixNavigator)) << "\n";
-//    stream.str("");
-//        stream << _scoreOfCell(value(dpScoreMatrixNavigator));
-////        stream << col + row;
-//    testMatrix[col + row] = stream.str();
-//}
-
 // ----------------------------------------------------------------------------
 // Function _computeUnbandedAlignmentHelperTerminate()
 // ----------------------------------------------------------------------------
@@ -438,7 +413,6 @@ _computeAlignmentHelperCheckTerminate(DPScout_<TDPCell,Terminator_<TSpec> > cons
     return _terminationCriteriumIsMet(s);
 }
 
-
 // ----------------------------------------------------------------------------
 // Function _computeUnbandedAlignment()
 // ----------------------------------------------------------------------------
@@ -458,6 +432,9 @@ _computeUnbandedAlignment(TDPScout & scout,
     typedef typename Iterator<TSequenceH const, Rooted>::Type TConstSeqHIterator;
     typedef typename Iterator<TSequenceV const, Rooted>::Type TConstSeqVIterator;
 
+    // Initilaize SIMD version with multiple end points.
+    _preInitScoutHorizontal(scout);
+
     // ============================================================================
     // PREPROCESSING
     // ============================================================================
@@ -479,19 +456,31 @@ _computeUnbandedAlignment(TDPScout & scout,
 
     TConstSeqHIterator seqHIter = begin(seqH, Rooted());
     TConstSeqHIterator seqHIterEnd = end(seqH, Rooted()) - 1;
-
     for (; seqHIter != seqHIterEnd; ++seqHIter)
     {
-        _computeTrack(scout, dpScoreMatrixNavigator, dpTraceMatrixNavigator,
-                      sequenceEntryForScore(scoringScheme, seqH, position(seqHIter)),
-                      sequenceEntryForScore(scoringScheme, seqV, 0),
-                      seqVBegin, seqVEnd, scoringScheme,
-                      MetaColumnDescriptor<DPInnerColumn, FullColumn>(), dpProfile);
-
+        // We might only select it if SIMD version is available.
+        if (SEQAN_UNLIKELY(_reachedHorizontalEndPoint(scout, seqHIter)))
+        {
+            _computeTrack(scout, dpScoreMatrixNavigator, dpTraceMatrixNavigator,
+                          sequenceEntryForScore(scoringScheme, seqH, position(seqHIter)),
+                          sequenceEntryForScore(scoringScheme, seqV, 0),
+                          seqVBegin, seqVEnd, scoringScheme,
+                          MetaColumnDescriptor<DPFinalColumn, FullColumn>(), dpProfile);
+            _nextHorizontalEndPos(scout);
+        }
+        else
+        {
+            _computeTrack(scout, dpScoreMatrixNavigator, dpTraceMatrixNavigator,
+                          sequenceEntryForScore(scoringScheme, seqH, position(seqHIter)),
+                          sequenceEntryForScore(scoringScheme, seqV, 0),
+                          seqVBegin, seqVEnd, scoringScheme,
+                          MetaColumnDescriptor<DPInnerColumn, FullColumn>(), dpProfile);
+        }
         if (_computeAlignmentHelperCheckTerminate(scout))
         {
-                return;
+            return;
         }
+        _incHorizontalPos(scout);
     }
 
     // ============================================================================
@@ -1318,16 +1307,34 @@ void _printTracebackMatrix(TTraceMatrix & dpTraceMatrix)
     for (unsigned row = 0; row < dimV; ++row)
     {
         for (unsigned column = 0; column < dimH; ++column)
-        {
             std::cout << _translateTraceValue(value(dpTraceMatrix, row + column * dimV)) << "\t";
-        }
         std::cout << std::endl;
     }
     std::cout << std::endl;
 }
 
+template <typename TTraceMatrix, typename TPosition>
+void _printTracebackMatrix(TTraceMatrix & dpTraceMatrix, TPosition const simdLane)
+{
+    typedef typename Size<TTraceMatrix>::Type TSize;
+    TSize dimH = length(dpTraceMatrix, +DPMatrixDimension_::HORIZONTAL);
+    TSize dimV = length(dpTraceMatrix, +DPMatrixDimension_::VERTICAL);
+
+    for (unsigned row = 0; row < dimV; ++row)
+    {
+        for (unsigned column = 0; column < dimH; ++column)
+            std::cout << _translateTraceValue(value(dpTraceMatrix, row + column * dimV)[simdLane]) << "\t";
+        std::cout << std::endl;
+    }
+    std::cout << std::endl;
+}
+
+// ----------------------------------------------------------------------------
+// Function _correctTraceValue()
+// ----------------------------------------------------------------------------
+
 template <typename TTraceNavigator, typename TScoreValue, typename TDPScoutSpec>
-inline void
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, void)
 _correctTraceValue(TTraceNavigator &,
                    DPScout_<DPCell_<TScoreValue, LinearGaps>, TDPScoutSpec> const &)
 {
@@ -1335,41 +1342,167 @@ _correctTraceValue(TTraceNavigator &,
 }
 
 template <typename TTraceNavigator, typename TScoreValue, typename TDPScoutSpec>
-inline void
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, void)
+_correctTraceValue(TTraceNavigator &,
+                   DPScout_<DPCell_<TScoreValue, LinearGaps>, TDPScoutSpec> const &)
+{
+    // Nothing to do.
+}
+
+template <typename TTraceNavigator, typename TScoreValue, typename TDPScoutSpec>
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, void)
 _correctTraceValue(TTraceNavigator & traceNavigator,
                    DPScout_<DPCell_<TScoreValue, AffineGaps>, TDPScoutSpec>  const & dpScout)
 {
     _setToPosition(traceNavigator, maxHostPosition(dpScout));
+
     if (_verticalScoreOfCell(dpScout._maxScore) == _scoreOfCell(dpScout._maxScore))
     {
-        value(traceNavigator) &= ~TraceBitMap_::DIAGONAL;
-        value(traceNavigator) |= TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
+        value(traceNavigator) &= ~TraceBitMap_<TScoreValue>::DIAGONAL;
+        value(traceNavigator) |= TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX;
     }
     else if (_horizontalScoreOfCell(dpScout._maxScore) == _scoreOfCell(dpScout._maxScore))
     {
-        value(traceNavigator) &= ~TraceBitMap_::DIAGONAL;
-        value(traceNavigator) |= TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
+        value(traceNavigator) &= ~TraceBitMap_<TScoreValue>::DIAGONAL;
+        value(traceNavigator) |= TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX;
     }
 }
 
 template <typename TTraceNavigator, typename TScoreValue, typename TDPScoutSpec>
-inline void
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, void)
+_correctTraceValue(TTraceNavigator & traceNavigator,
+                   DPScout_<DPCell_<TScoreValue, AffineGaps>, TDPScoutSpec>  const & dpScout)
+{
+    _setToPosition(traceNavigator, maxHostPosition(dpScout));
+    TScoreValue cmpV = cmpEq(_verticalScoreOfCell(dpScout._maxScore), _scoreOfCell(dpScout._maxScore));
+    TScoreValue cmpH = cmpEq(_horizontalScoreOfCell(dpScout._maxScore), _scoreOfCell(dpScout._maxScore));
+    value(traceNavigator) = blend(value(traceNavigator),
+                                  value(traceNavigator) & ~TraceBitMap_<TScoreValue>::DIAGONAL,
+                                  cmpV | cmpH);
+    value(traceNavigator) = blend(value(traceNavigator),
+                                  value(traceNavigator) | TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX,
+                                  cmpV);
+    value(traceNavigator) = blend(value(traceNavigator),
+                                  value(traceNavigator) | TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX,
+                                  cmpH);
+}
+
+template <typename TTraceNavigator, typename TScoreValue, typename TDPScoutSpec>
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, void)
 _correctTraceValue(TTraceNavigator & traceNavigator,
                    DPScout_<DPCell_<TScoreValue, DynamicGaps>, TDPScoutSpec>  const & dpScout)
 {
     _setToPosition(traceNavigator, maxHostPosition(dpScout));
     if (isGapExtension(dpScout._maxScore, DynamicGapExtensionVertical()))
     {
-        value(traceNavigator) &= ~TraceBitMap_::DIAGONAL;
-        value(traceNavigator) |= TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
+        value(traceNavigator) &= ~TraceBitMap_<TScoreValue>::DIAGONAL;
+        value(traceNavigator) |= TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX;
     }
     else if (isGapExtension(dpScout._maxScore, DynamicGapExtensionHorizontal()))
     {
-        value(traceNavigator) &= ~TraceBitMap_::DIAGONAL;
-        value(traceNavigator) |= TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
+        value(traceNavigator) &= ~TraceBitMap_<TScoreValue>::DIAGONAL;
+        value(traceNavigator) |= TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX;
     }
 }
 
+template <typename TTraceNavigator, typename TScoreValue, typename TDPScoutSpec>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, void)
+_correctTraceValue(TTraceNavigator & traceNavigator,
+                   DPScout_<DPCell_<TScoreValue, DynamicGaps>, TDPScoutSpec>  const & dpScout)
+{
+    _setToPosition(traceNavigator, maxHostPosition(dpScout));
+    TScoreValue cmpV = isGapExtension(dpScout._maxScore, DynamicGapExtensionVertical());
+    TScoreValue cmpH = isGapExtension(dpScout._maxScore, DynamicGapExtensionHorizontal());
+    value(traceNavigator) = blend(value(traceNavigator),
+                                  value(traceNavigator) & ~TraceBitMap_<TScoreValue>::DIAGONAL,
+                                  cmpV | cmpH);
+    value(traceNavigator) = blend(value(traceNavigator),
+                                  value(traceNavigator) | TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX,
+                                  cmpV);
+    value(traceNavigator) = blend(value(traceNavigator),
+                                  value(traceNavigator) | TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX,
+                                  cmpH);
+}
+
+// ----------------------------------------------------------------------------
+// Function _finishAlignment()
+// ----------------------------------------------------------------------------
+
+template <typename TTraceTarget,
+          typename TTraceMatNavigator,
+          typename TScoreValue, typename TGapsModel, typename TDPScoutSpec,
+          typename TSeqH,
+          typename TSeqV,
+          typename TBandSwitch,
+          typename TAlignmentAlgorithm, typename TGapScheme, typename TTraceFlag>
+inline SEQAN_FUNC_ENABLE_IF(Not<IsTracebackEnabled_<TTraceFlag> >, TScoreValue)
+_finishAlignment(TTraceTarget & /*traceSegments*/,
+                 TTraceMatNavigator & /*dpTraceMatrixNavigator*/,
+                 DPScout_<DPCell_<TScoreValue, TGapsModel>, TDPScoutSpec> & dpScout,
+                 TSeqH const & /*seqH*/,
+                 TSeqV const & /*seqV*/,
+                 DPBandConfig<TBandSwitch> const & /*band*/,
+                 DPProfile_<TAlignmentAlgorithm, TGapScheme, TTraceFlag> const & /*dpProfile*/)
+{
+    return maxScore(dpScout);
+}
+
+template <typename TTraceTarget,
+          typename TTraceMatNavigator,
+          typename TScoreValue, typename TGapsModel, typename TDPScoutSpec,
+          typename TSeqH,
+          typename TSeqV,
+          typename TBandSwitch,
+          typename TAlignmentAlgorithm, typename TGapScheme, typename TTraceFlag>
+inline SEQAN_FUNC_ENABLE_IF(And<Is<SimdVectorConcept<TScoreValue> >, IsTracebackEnabled_<TTraceFlag> >, TScoreValue)
+_finishAlignment(TTraceTarget & traceSegments,
+                 TTraceMatNavigator & dpTraceMatrixNavigator,
+                 DPScout_<DPCell_<TScoreValue, TGapsModel>, TDPScoutSpec> & scout,
+                 TSeqH const & seqH,
+                 TSeqV const & seqV,
+                 DPBandConfig<TBandSwitch> const & band,
+                 DPProfile_<TAlignmentAlgorithm, TGapScheme, TTraceFlag> const & dpProfile)
+{
+    typedef typename Size<TTraceTarget>::Type TSize;
+
+    for(TSize i = 0; i < length(traceSegments); ++i)
+    {
+        _setSimdLane(dpTraceMatrixNavigator, i);
+        _setSimdLane(scout, i);
+
+        if (IsSingleTrace_<TTraceFlag>::VALUE)
+        {
+            _correctTraceValue(dpTraceMatrixNavigator, scout);
+        }
+        _computeTraceback(traceSegments[i], dpTraceMatrixNavigator, scout, _hostLengthH(scout, seqH),
+                          _hostLengthV(scout, seqV), band, dpProfile);
+    }
+    return maxScore(scout);
+}
+
+template <typename TTraceTarget,
+          typename TTraceMatNavigator,
+          typename TScoreValue, typename TGapsModel, typename TDPScoutSpec,
+          typename TSeqH,
+          typename TSeqV,
+          typename TBandSwitch,
+          typename TAlignmentAlgorithm, typename TGapScheme, typename TTraceFlag>
+inline SEQAN_FUNC_ENABLE_IF(And<Not<Is<SimdVectorConcept<TScoreValue> > >, IsTracebackEnabled_<TTraceFlag> >, TScoreValue)
+_finishAlignment(TTraceTarget & traceSegments,
+                 TTraceMatNavigator & dpTraceMatrixNavigator,
+                 DPScout_<DPCell_<TScoreValue, TGapsModel>, TDPScoutSpec> & dpScout,
+                 TSeqH const & seqH,
+                 TSeqV const & seqV,
+                 DPBandConfig<TBandSwitch> const & band,
+                 DPProfile_<TAlignmentAlgorithm, TGapScheme, TTraceFlag> const & dpProfile)
+{
+    if (IsSingleTrace_<TTraceFlag>::VALUE)
+        _correctTraceValue(dpTraceMatrixNavigator, dpScout);
+
+    _computeTraceback(traceSegments, dpTraceMatrixNavigator, dpScout, seqH, seqV, band, dpProfile);
+    return maxScore(dpScout);
+}
+
 // ----------------------------------------------------------------------------
 // Function _computeAligmnment()
 // ----------------------------------------------------------------------------
@@ -1400,12 +1533,12 @@ _computeAlignment(DPContext<TScoreValue, TGapScheme> & dpContext,
     typedef DPMatrixNavigator_<TDPScoreMatrix, DPScoreMatrix, NavigateColumnWise> TDPScoreMatrixNavigator;
     typedef DPMatrixNavigator_<TDPTraceMatrix, DPTraceMatrix<TTraceFlag>, NavigateColumnWise> TDPTraceMatrixNavigator;
 
-    typedef typename ScoutSpecForAlignmentAlgorithm_<TAlignmentAlgorithm>::Type TDPScoutSpec;
+    typedef typename ScoutSpecForAlignmentAlgorithm_<TAlignmentAlgorithm, TScoutState>::Type TDPScoutSpec;
     typedef DPScout_<TDPScoreValue, TDPScoutSpec> TDPScout;
 
     // Check if current dp settings are valid. If not return infinity value for dp score value.
     if (!_isValidDPSettings(seqH, seqV, band, dpProfile))
-        return MinValue<TScoreValue>::VALUE;
+        return createVector<TScoreValue>(MinValue<typename Value<TScoreValue>::Type>::VALUE);  // NOTE(rrahn): In case of non-simd version, createVector returns just a scalar.
 
     TDPScoreMatrix dpScoreMatrix;
     TDPTraceMatrix dpTraceMatrix;
@@ -1442,7 +1575,10 @@ _computeAlignment(DPContext<TScoreValue, TGapScheme> & dpContext,
     _init(dpTraceMatrixNavigator, dpTraceMatrix, band);
 
     TDPScout dpScout(scoutState);
-
+#if SEQAN_ALIGN_SIMD_PROFILE
+    profile.preprTimer += sysTime() - timer;
+    timer = sysTime();
+#endif
     // Execute the alignment.
     if (!_isBandEnabled(band))
         _computeUnbandedAlignment(dpScout, dpScoreMatrixNavigator, dpTraceMatrixNavigator, seqH, seqV, scoreScheme, dpProfile);
@@ -1451,24 +1587,11 @@ _computeAlignment(DPContext<TScoreValue, TGapScheme> & dpContext,
     else
         _computeBandedAlignment(dpScout, dpScoreMatrixNavigator, dpTraceMatrixNavigator, seqH, seqV, scoreScheme,
                                 band, dpProfile);
-
-    if (IsSameType<TTraceFlag, TracebackOff>::VALUE)
-        return maxScore(dpScout);
-
-    if (IsSingleTrace_<TTraceFlag>::VALUE)
-    {
-        // Check if max was found at the bottom right corner of the matrix.
-        // This is also true if in last row, and last column
-//        if ((maxHostPosition(dpScout) + 1) == (end(dpTraceMatrix) - begin(dpTraceMatrix)))
-
-//            maxHostPosition(dpScout); // We only have the trace value not the score value.
-            _correctTraceValue(dpTraceMatrixNavigator, dpScout);
-    }
-
-//    _printTracebackMatrix(dpTraceMatrix);
-    _computeTraceback(traceSegments, dpTraceMatrixNavigator, dpScout, seqH, seqV, band, dpProfile);
-
-    return maxScore(dpScout);
+#if SEQAN_ALIGN_SIMD_PROFILE
+    profile.alignTimer += sysTime() - timer;
+    timer = sysTime();
+#endif
+    return _finishAlignment(traceSegments, dpTraceMatrixNavigator, dpScout, seqH, seqV, band, dpProfile);
 }
 
 }  // namespace seqan
diff --git a/include/seqan/align/dp_align_simd_helper.h b/include/seqan/align/dp_align_simd_helper.h
new file mode 100644
index 0000000..b5c15e8
--- /dev/null
+++ b/include/seqan/align/dp_align_simd_helper.h
@@ -0,0 +1,517 @@
+// ==========================================================================
+//                 SeqAn - The Library for Sequence Analysis
+// ==========================================================================
+// Copyright (c) 2006-2016, Knut Reinert, FU Berlin
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
+//       its contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+//
+// ==========================================================================
+// Author: Rene Rahn <rene.rahn at fu-berlin.de>
+// ==========================================================================
+
+#ifndef INCLUDE_SEQAN_ALIGN_DP_ALIGN_SIMD_HELPER_H_
+#define INCLUDE_SEQAN_ALIGN_DP_ALIGN_SIMD_HELPER_H_
+
+namespace seqan
+{
+
+#if SEQAN_ALIGN_SIMD_PROFILE
+struct AlignSimdProfile_
+{
+    double preprTimer = 0.0;
+    double alignTimer = 0.0;
+    double traceTimer = 0.0;
+
+    void clear()
+    {
+        preprTimer = 0.0;
+        alignTimer = 0.0;
+        traceTimer = 0.0;
+    }
+};
+
+    double timer = 0.0;
+
+AlignSimdProfile_ profile;
+#endif
+
+// ============================================================================
+// Forwards
+// ============================================================================
+
+template <unsigned LENGTH>
+struct VectorLength_;
+
+// ============================================================================
+// Tags, Classes, Enums
+// ============================================================================
+
+template <typename TSimdVector_, typename TSeqH_, typename TSeqV_>
+struct SimdAlignVariableLengthTraits
+{
+    using TSimdVector   = TSimdVector_;
+    using TSeqH         = TSeqH_;
+    using TSeqV         = TSeqV_;
+};
+
+// ============================================================================
+// Metafunctions
+// ============================================================================
+
+// ============================================================================
+// Functions
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// Function _createSimdRepImpl()
+// ----------------------------------------------------------------------------
+
+#define SEQAN_CREATE_SIMD_REP_IMPL_2(data, strPos, chrPos)    data[strPos + 1][chrPos], data[strPos][chrPos]
+#define SEQAN_CREATE_SIMD_REP_IMPL_4(data, strPos, chrPos)    SEQAN_CREATE_SIMD_REP_IMPL_2(data, strPos + 2, chrPos),  SEQAN_CREATE_SIMD_REP_IMPL_2(data, strPos, chrPos)
+#define SEQAN_CREATE_SIMD_REP_IMPL_8(data, strPos, chrPos)    SEQAN_CREATE_SIMD_REP_IMPL_4(data, strPos + 4, chrPos),  SEQAN_CREATE_SIMD_REP_IMPL_4(data, strPos, chrPos)
+#define SEQAN_CREATE_SIMD_REP_IMPL_16(data, strPos, chrPos)   SEQAN_CREATE_SIMD_REP_IMPL_8(data, strPos + 8, chrPos),  SEQAN_CREATE_SIMD_REP_IMPL_8(data, strPos, chrPos)
+#define SEQAN_CREATE_SIMD_REP_IMPL_32(data, strPos, chrPos)   SEQAN_CREATE_SIMD_REP_IMPL_16(data, strPos + 16, chrPos), SEQAN_CREATE_SIMD_REP_IMPL_16(data, strPos, chrPos)
+
+#define SEQAN_CREATE_SIMD_REP_FILL_IMPL_2(MACRO, data, chrPos) MACRO(data, 0, chrPos)
+#define SEQAN_CREATE_SIMD_REP_FILL_IMPL(data, chrPos, SIZE) SEQAN_CREATE_SIMD_REP_FILL_IMPL_2(SEQAN_CREATE_SIMD_REP_IMPL_##SIZE, data, chrPos)
+
+#define SEQAN_CREATE_SIMD_REP_IMPL(SIZE)                                                \
+template <typename TSimdVecs, typename TStrings>                                        \
+inline void _createSimdRepImpl(TSimdVecs & simdStr,                                     \
+                               TStrings const & strings,                                \
+                               VectorLength_<SIZE> const & /*size*/)                    \
+{                                                                                       \
+    auto itB = begin(simdStr, Standard());                                              \
+    auto itE = end(simdStr, Standard());                                                \
+    for (auto it = itB; it != itE; ++it)                                                \
+        fillVector(*it, SEQAN_CREATE_SIMD_REP_FILL_IMPL(strings, it - itB, SIZE));      \
+}
+
+SEQAN_CREATE_SIMD_REP_IMPL(2)
+SEQAN_CREATE_SIMD_REP_IMPL(4)
+SEQAN_CREATE_SIMD_REP_IMPL(8)
+SEQAN_CREATE_SIMD_REP_IMPL(16)
+SEQAN_CREATE_SIMD_REP_IMPL(32)
+
+template <typename TSimdVecs, typename TStrings>
+inline void _createSimdRepImpl(TSimdVecs & simdStr,
+                               TStrings const & strings)
+{
+    _createSimdRepImpl(simdStr, strings, VectorLength_<LENGTH<typename Value<TSimdVecs>::Type>::VALUE>());
+}
+
+// Actually precompute value if scoring scheme is score matrix and simd version.
+template <typename TSeqValue,
+typename TScoreValue, typename TScore>
+inline SEQAN_FUNC_ENABLE_IF(And<Is<SimdVectorConcept<TSeqValue> >, IsScoreMatrix_<TScore> >, TSeqValue)
+_precomputeScoreMatrixOffset(TSeqValue const & seqVal,
+                             Score<TScoreValue, ScoreSimdWrapper<TScore> > const & /*score*/)
+{
+    return createVector<TSeqValue>(TScore::VALUE_SIZE) * seqVal;
+}
+
+// ----------------------------------------------------------------------------
+// Function _prepareAndRunSimdAlignment()
+// ----------------------------------------------------------------------------
+
+template <typename TResult,
+          typename TTraces,
+          typename TSequencesH,
+          typename TSequencesV,
+          typename TScore,
+          typename TAlgo, typename TBand, typename TFreeEndGaps, typename TTraceback,
+          typename TGapModel>
+inline void
+_prepareAndRunSimdAlignment(TResult & results,
+                            TTraces & traces,
+                            TSequencesH const & seqH,
+                            TSequencesV const & seqV,
+                            TScore const & scoringScheme,
+                            AlignConfig2<TAlgo, TBand, TFreeEndGaps, TTraceback> const & alignConfig,
+                            TGapModel const & /*gapModel*/,
+                            SimdAlignEqualLength const & /*tag*/)
+{
+    String<TResult, Alloc<OverAligned> > stringSimdH;
+    String<TResult, Alloc<OverAligned> > stringSimdV;
+
+    resize(stringSimdH, length(seqH[0]));
+    resize(stringSimdV, length(seqV[0]));
+    _createSimdRepImpl(stringSimdH, seqH);
+    _createSimdRepImpl(stringSimdV, seqV);
+
+    DPScoutState_<SimdAlignEqualLength> state;
+    results = _setUpAndRunAlignment(traces, state, stringSimdH, stringSimdV, scoringScheme, alignConfig, TGapModel());
+}
+
+template <typename TResult,
+          typename TTraces,
+          typename TSequencesH,
+          typename TSequencesV,
+          typename TScore,
+          typename TAlgo, typename TBand, typename TFreeEndGaps, typename TTraceback,
+          typename TGapModel,
+          typename TTraits>
+inline void
+_prepareAndRunSimdAlignment(TResult & results,
+                            TTraces & traces,
+                            TSequencesH const & seqH,
+                            TSequencesV const & seqV,
+                            TScore const & scoringScheme,
+                            AlignConfig2<TAlgo, TBand, TFreeEndGaps, TTraceback> const & alignConfig,
+                            TGapModel const & /*gapModel*/,
+                            SimdAlignVariableLength<TTraits> const /*tag*/)
+{
+    SEQAN_ASSERT_EQ(length(seqH), length(seqV));
+    SEQAN_ASSERT_EQ(static_cast<decltype(length(seqH))>(LENGTH<TResult>::VALUE), length(seqH));
+
+    using TPadStringH = ModifiedString<typename Value<TSequencesH const>::Type, ModPadding>;
+    using TPadStringV = ModifiedString<typename Value<TSequencesV const>::Type, ModPadding>;
+
+    String<TResult, Alloc<OverAligned> > stringSimdH;
+    String<TResult, Alloc<OverAligned> > stringSimdV;
+
+    DPScoutState_<SimdAlignVariableLength<SimdAlignVariableLengthTraits<TResult, TSequencesH, TSequencesV> > > state;
+
+    String<size_t> lengthsH;
+    String<size_t> lengthsV;
+
+    resize(lengthsH, length(seqH));
+    resize(lengthsV, length(seqV));
+    resize(state.endsH, length(seqH));
+    resize(state.endsV, length(seqV));
+
+    for (unsigned i = 0; i < length(seqH); ++i)
+    {
+        lengthsH[i] = length(seqH[i]) - 1;
+        lengthsV[i] = length(seqV[i]) - 1;
+        state.endsH[i] = i;
+        state.endsV[i] = i;
+    }
+
+    setHost(state.sortedEndsH, lengthsH);
+    setHost(state.sortedEndsV, lengthsV);
+    setCargo(state.sortedEndsH, state.endsH);
+    setCargo(state.sortedEndsV, state.endsV);
+
+    auto maxLengthLambda = [](auto& lengthLhs, auto& lengthRhs) { return lengthLhs < lengthRhs; };
+    sort(state.sortedEndsH, maxLengthLambda, Serial());
+    sort(state.sortedEndsV, maxLengthLambda, Serial());
+
+    size_t maxH = back(state.sortedEndsH) + 1;
+    size_t maxV = back(state.sortedEndsV) + 1;
+
+    // and we have to prepare the bit masks of the DPScoutState
+    resize(state.masks,  maxV, createVector<TResult>(0));
+    resize(state.masksV, maxV, createVector<TResult>(0));
+    resize(state.masksH, maxH, createVector<TResult>(0));
+
+    // Create Stringset with padded strings.
+    StringSet<TPadStringH> paddedH;
+    StringSet<TPadStringV> paddedV;
+    resize(paddedH, length(seqH));
+    resize(paddedV, length(seqV));
+
+    for(unsigned i = 0; i < length(seqH); ++i)
+    {
+        setHost(paddedH[i], seqH[i]);
+        setHost(paddedV[i], seqV[i]);
+        expand(paddedH[i], maxH);
+        expand(paddedV[i], maxV);
+
+        // mark the original end position of the alignment in the masks (with -1, all bits set)
+        assignValue(state.masksH[lengthsH[i]], i, -1);
+        assignValue(state.masksV[lengthsV[i]], i, -1);
+    }
+
+    // now create SIMD representation
+    resize(stringSimdH, maxH);
+    resize(stringSimdV, maxV);
+    _createSimdRepImpl(stringSimdH, paddedH);
+    _createSimdRepImpl(stringSimdV, paddedV);
+
+    state.dimV = length(stringSimdV);
+    state.isLocalAlignment = IsLocalAlignment_<TAlgo>::VALUE;
+    state.right = IsFreeEndGap_<TFreeEndGaps, DPLastColumn>::VALUE;
+    state.bottom = IsFreeEndGap_<TFreeEndGaps, DPLastRow>::VALUE;
+
+    results = _setUpAndRunAlignment(traces, state, stringSimdH, stringSimdV, scoringScheme, alignConfig, TGapModel());
+}
+
+template <typename TResult,
+          typename TTraces,
+          typename TSequencesH,
+          typename TSequencesV,
+          typename TScore,
+          typename TAlgo, typename TBand, typename TFreeEndGaps, typename TTraceback,
+          typename TGapModel>
+inline void
+_prepareAndRunSimdAlignment(TResult & results,
+                            TTraces & traces,
+                            TSequencesH const & seqH,
+                            TSequencesV const & seqV,
+                            TScore const & scoringScheme,
+                            AlignConfig2<TAlgo, TBand, TFreeEndGaps, TTraceback> const & alignConfig,
+                            TGapModel const & /*gapModel*/)
+{
+    auto seqLengthH = length(seqH[0]);
+    auto seqLengthV = length(seqV[0]);
+    auto zipView = makeZipView(seqH, seqV);
+    bool allSameLength = std::all_of(begin(zipView, Standard()), end(zipView, Standard()),
+                                     [seqLengthH, seqLengthV](auto param)
+                                     {
+                                         return (length(std::get<0>(param)) == seqLengthH) &&
+                                         (length(std::get<1>(param)) == seqLengthV);
+                                     });
+    if(allSameLength)
+        _prepareAndRunSimdAlignment(results, traces, seqH, seqV, scoringScheme, alignConfig, TGapModel(), SimdAlignEqualLength());
+    else
+        _prepareAndRunSimdAlignment(results, traces, seqH, seqV, scoringScheme, alignConfig, TGapModel(),
+                                    SimdAlignVariableLength<Nothing>());
+}
+
+// ----------------------------------------------------------------------------
+// Function _alignWrapperSimd(); Score; StringSet vs. StringSet
+// ----------------------------------------------------------------------------
+
+template <typename TString1, typename TSpec1,
+          typename TString2, typename TSpec2,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlignConfig,
+          typename TGapModel>
+inline auto
+_alignWrapperSimd(StringSet<TString1, TSpec1> const & stringsH,
+                  StringSet<TString2, TSpec2> const & stringsV,
+                  Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                  TAlignConfig const & config,
+                  TGapModel const & /*gaps*/)
+{
+    typedef typename SimdVector<int16_t>::Type TSimdAlign;
+
+    unsigned const numAlignments = length(stringsV);
+    unsigned const sizeBatch = LENGTH<TSimdAlign>::VALUE;
+    unsigned const fullSize = sizeBatch * ((numAlignments + sizeBatch - 1) / sizeBatch);
+
+    String<TScoreValue> results;
+    resize(results, numAlignments);
+
+    StringSet<String<Nothing> > trace;  // We need to declare it, but it will not be used.
+
+    // Create a SIMD scoring scheme.
+    Score<TSimdAlign, ScoreSimdWrapper<Score<TScoreValue, TScoreSpec> > > simdScoringScheme(scoringScheme);
+
+    for (auto pos = 0u; pos < fullSize; pos += sizeBatch)
+    {
+        TSimdAlign resultsBatch;
+        if (SEQAN_UNLIKELY(numAlignments < pos + sizeBatch))
+        {
+            StringSet<TString1, Dependent<> > depSetH;
+            StringSet<TString2, Dependent<> > depSetV;
+            for (unsigned i = pos; i < fullSize; ++i)
+            {
+                if (i >= numAlignments)
+                {
+                    appendValue(depSetH, back(stringsH));
+                    appendValue(depSetV, back(stringsV));
+                }
+                else
+                {
+                    appendValue(depSetH, stringsH[i]);
+                    appendValue(depSetV, stringsV[i]);
+                }
+            }
+            SEQAN_ASSERT_EQ(length(depSetH), sizeBatch);
+            SEQAN_ASSERT_EQ(length(depSetV), sizeBatch);
+
+            _prepareAndRunSimdAlignment(resultsBatch, trace, depSetH, depSetV, simdScoringScheme, config, TGapModel());
+        }
+        else
+        {
+            auto infSetH = infixWithLength(stringsH, pos, sizeBatch);
+            auto infSetV = infixWithLength(stringsV, pos, sizeBatch);
+
+            _prepareAndRunSimdAlignment(resultsBatch, trace, infSetH, infSetV, simdScoringScheme, config, TGapModel());
+        }
+
+        // TODO(rrahn): Could be parallelized!
+        for(auto x = pos; x < pos + sizeBatch && x < numAlignments; ++x)
+            results[x] = resultsBatch[x - pos];
+    }
+    return results;
+}
+
+// ----------------------------------------------------------------------------
+// Function _alignWrapperSimd(); Score; String vs. StringSet
+// ----------------------------------------------------------------------------
+
+template <typename TString1,
+          typename TString2, typename TSpec,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlignConfig,
+          typename TGapModel>
+inline auto
+_alignWrapperSimd(TString1 const & stringH,
+                  StringSet<TString2, TSpec> const & stringsV,
+                  Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                  TAlignConfig const & config,
+                  TGapModel const & /*gaps*/)
+{
+    typedef typename SimdVector<int16_t>::Type TSimdAlign;
+
+    unsigned const numAlignments = length(stringsV);
+    unsigned const sizeBatch = LENGTH<TSimdAlign>::VALUE;
+    unsigned const fullSize = sizeBatch * ((numAlignments + sizeBatch - 1) / sizeBatch);
+
+    String<TScoreValue> results;
+    resize(results, numAlignments);
+
+    // Prepare strings.
+    StringSet<TString1, Dependent<> > setH;
+    for (auto i = 0u; i < sizeBatch; ++i)
+        appendValue(setH, stringH);
+
+    StringSet<String<Nothing> > trace;  // We need to declare it, but it will not be used.
+
+    // Create a SIMD scoring scheme.
+    Score<TSimdAlign, ScoreSimdWrapper<Score<TScoreValue, TScoreSpec> > > simdScoringScheme(scoringScheme);
+
+    for (auto pos = 0u; pos < fullSize; pos += sizeBatch)
+    {
+        TSimdAlign resultsBatch;
+        if (SEQAN_UNLIKELY(numAlignments < pos + sizeBatch))
+        {
+            StringSet<TString2, Dependent<> > depSetV;
+            for (unsigned i = pos; i < fullSize; ++i)
+            {
+                if (i >= numAlignments)
+                    appendValue(depSetV, back(stringsV));
+                else
+                    appendValue(depSetV, stringsV[i]);
+            }
+            SEQAN_ASSERT_EQ(length(depSetV), sizeBatch);
+
+            _prepareAndRunSimdAlignment(resultsBatch, trace, setH, depSetV, simdScoringScheme, config, TGapModel());
+        }
+        else
+        {
+            auto infSetV = infixWithLength(stringsV, pos, sizeBatch);
+            _prepareAndRunSimdAlignment(resultsBatch, trace, setH, infSetV, simdScoringScheme, config, TGapModel());
+        }
+        // TODO(rrahn): Could be parallelized!
+        for(auto x = pos; x < pos + sizeBatch && x < numAlignments; ++x)
+            results[x] = resultsBatch[x - pos];
+    }
+    return results;
+}
+
+// ----------------------------------------------------------------------------
+// Function _alignWrapperSimd(); Gaps
+// ----------------------------------------------------------------------------
+
+template <typename TSequenceH, typename TGapsSpecH, typename TSetSpecH,
+          typename TSequenceV, typename TGapsSpecV, typename TSetSpecV,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlignConfig,
+          typename TGapModel>
+inline auto
+_alignWrapperSimd(StringSet<Gaps<TSequenceH, TGapsSpecH>, TSetSpecH> & gapSeqSetH,
+                  StringSet<Gaps<TSequenceV, TGapsSpecV>, TSetSpecV> & gapSeqSetV,
+                  Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                  TAlignConfig const & config,
+                  TGapModel const & /*gaps*/)
+{
+    typedef Gaps<TSequenceH, TGapsSpecH>                                TGapSequenceH;
+    typedef Gaps<TSequenceV, TGapsSpecV>                                TGapSequenceV;
+    typedef typename Size<TGapSequenceH>::Type                          TSize;
+    typedef typename Position<TGapSequenceH>::Type                      TPosition;
+    typedef TraceSegment_<TPosition, TSize>                             TTraceSegment;
+
+    typedef typename SimdVector<int16_t>::Type                          TSimdAlign;
+
+#if SEQAN_ALIGN_SIMD_PROFILE
+    timer = sysTime();
+#endif
+
+    unsigned const numAlignments = length(gapSeqSetH);
+    unsigned const sizeBatch = LENGTH<TSimdAlign>::VALUE;
+    unsigned const fullSize = sizeBatch * ((numAlignments + sizeBatch - 1) / sizeBatch);
+
+    String<TScoreValue> results;
+    resize(results, numAlignments);
+
+    // Create a SIMD scoring scheme.
+    Score<TSimdAlign, ScoreSimdWrapper<Score<TScoreValue, TScoreSpec> > > simdScoringScheme(scoringScheme);
+
+    // Prepare string sets with sequences.
+    StringSet<typename Source<TGapSequenceH>::Type, Dependent<> > depSetH;
+    StringSet<typename Source<TGapSequenceV>::Type, Dependent<> > depSetV;
+    reserve(depSetH, fullSize);
+    reserve(depSetV, fullSize);
+    for (unsigned i = 0; i < fullSize; ++i)
+    {
+        if (i >= numAlignments)
+        {
+            appendValue(depSetH, source(back(gapSeqSetH)));
+            appendValue(depSetV, source(back(gapSeqSetV)));
+        }
+        else
+        {
+            appendValue(depSetH, source(gapSeqSetH[i]));
+            appendValue(depSetV, source(gapSeqSetV[i]));
+        }
+    }
+
+    // Run alignments in batches.
+    for (auto pos = 0u; pos < fullSize; pos += sizeBatch)
+    {
+        auto infSetH = infixWithLength(depSetH, pos, sizeBatch);
+        auto infSetV = infixWithLength(depSetV, pos, sizeBatch);
+
+        TSimdAlign resultsBatch;
+
+        StringSet<String<TTraceSegment> > trace;
+        resize(trace, sizeBatch, Exact());
+
+        _prepareAndRunSimdAlignment(resultsBatch, trace, infSetH, infSetV, simdScoringScheme, config, TGapModel());
+
+        // copy results and finish traceback
+        // TODO(rrahn): Could be parallelized!
+        // to for_each call
+        for(auto x = pos; x < pos + sizeBatch && x < numAlignments; ++x)
+        {
+            results[x] = resultsBatch[x - pos];
+            _adaptTraceSegmentsTo(gapSeqSetH[x], gapSeqSetV[x], trace[x - pos]);
+        }
+#if SEQAN_ALIGN_SIMD_PROFILE
+        profile.traceTimer += sysTime() - timer;
+        timer = sysTime();
+#endif
+    }
+    return results;
+}
+
+}  // namespace seqan
+#endif  // #ifndef INCLUDE_SEQAN_ALIGN_DP_ALIGN_SIMD_HELPER_H_
+
diff --git a/include/seqan/align/dp_cell.h b/include/seqan/align/dp_cell.h
index ae84912..49f3b85 100644
--- a/include/seqan/align/dp_cell.h
+++ b/include/seqan/align/dp_cell.h
@@ -120,12 +120,29 @@ struct DPCellDefaultInfinity<DPCell_<TScoreValue, TGapCostFunction> >
 };
 
 template <typename TScoreValue, typename TGapCostFunction>
-const TScoreValue DPCellDefaultInfinity<DPCell_<TScoreValue, TGapCostFunction> >::VALUE = MinValue<TScoreValue>::VALUE / 2;
+    const TScoreValue DPCellDefaultInfinity<DPCell_<TScoreValue, TGapCostFunction> >::VALUE =
+        createVector<TScoreValue>(MinValue<typename Value<TScoreValue>::Type>::VALUE) / createVector<TScoreValue>(2);
 
 template <typename TScoreValue, typename TGapCostFunction>
 struct DPCellDefaultInfinity<DPCell_<TScoreValue, TGapCostFunction> const> :
     public DPCellDefaultInfinity<DPCell_<TScoreValue, TGapCostFunction> >{};
 
+// ----------------------------------------------------------------------------
+// Metafunction StringSpecForValue_
+// ----------------------------------------------------------------------------
+
+// Defines the default infinity value for a DPCell.
+template <typename TValue, typename TSpec>
+struct StringSpecForValue_<DPCell_<TValue, TSpec> >
+{
+    typedef typename If<Is<SimdVectorConcept<TValue> >, Alloc<OverAligned>, Alloc<> >::Type Type;
+};
+
+template <typename TValue, typename TSpec>
+struct StringSpecForValue_<DPCell_<TValue, TSpec> const> :
+    StringSpecForValue_<DPCell_<TValue, TSpec> >
+{};
+
 // ============================================================================
 // Functions
 // ============================================================================
@@ -160,6 +177,13 @@ _setScoreOfCell(DPCell_<TScoreValue, TGapCosts> & dpCell, TScoreValue const & ne
     dpCell._score = newScore;
 }
 
+template <typename TScoreValue, typename TGapCosts>
+inline void
+_setScoreOfCell(DPCell_<TScoreValue, TGapCosts> & dpCell, TScoreValue const & newScore, TScoreValue const & mask)
+{
+    dpCell._score = blend(dpCell._score, newScore, mask);
+}
+
 // ----------------------------------------------------------------------------
 // Function _verticalScoreOfCell()
 // ----------------------------------------------------------------------------
@@ -191,6 +215,13 @@ _setVerticalScoreOfCell(DPCell_<TScoreValue, TGapSpec> & /*dpCell*/, TScoreValue
     // no-op
 }
 
+template <typename TScoreValue, typename TGapSpec>
+inline void
+_setVerticalScoreOfCell(DPCell_<TScoreValue, TGapSpec> & /*dpCell*/, TScoreValue const & /*newVerticalScore*/, TScoreValue const & /*mask*/)
+{
+    // no-op
+}
+
 // ----------------------------------------------------------------------------
 // Function _horizontalScoreOfCell()
 // ----------------------------------------------------------------------------
@@ -222,6 +253,13 @@ _setHorizontalScoreOfCell(DPCell_<TScoreValue, TGapSpec> & /*dpCell*/, TScoreVal
     // no-op
 }
 
+template <typename TScoreValue, typename TGapSpec>
+inline void
+_setHorizontalScoreOfCell(DPCell_<TScoreValue, TGapSpec> & /*dpCell*/, TScoreValue const & /*newHorizontalScore*/, TScoreValue const & /*mask*/)
+{
+    // no-op
+}
+
 // ----------------------------------------------------------------------------
 // Function setGapExtension()
 // ----------------------------------------------------------------------------
@@ -233,6 +271,13 @@ setGapExtension(DPCell_<TScoreValue, TGapSpec> & /*dpCell*/, TF1 , TF2)
     // no-op
 }
 
+template <typename TScoreValue, typename TGapSpec, typename TF1, typename TF2>
+inline void
+setGapExtension(DPCell_<TScoreValue, TGapSpec> & /*dpCell*/, TF1 , TF2, TScoreValue)
+{
+    // no-op
+}
+
 }  // namespace seqan
 
 #endif  // #ifndef SEQAN_INCLUDE_SEQAN_ALIGN_DP_CELL_H_
diff --git a/include/seqan/align/dp_cell_affine.h b/include/seqan/align/dp_cell_affine.h
index 8e8ce05..c12990c 100644
--- a/include/seqan/align/dp_cell_affine.h
+++ b/include/seqan/align/dp_cell_affine.h
@@ -59,43 +59,41 @@ template <typename TScoreValue>
 class DPCell_<TScoreValue, AffineGaps>
 {
 public:
-    TScoreValue _score;
-    TScoreValue _horizontalScore;
-    TScoreValue _verticalScore;
-
-    // The default c'tor.
-    DPCell_() :
-        _score(DPCellDefaultInfinity<DPCell_>::VALUE),
-        _horizontalScore(DPCellDefaultInfinity<DPCell_>::VALUE),
-        _verticalScore(DPCellDefaultInfinity<DPCell_>::VALUE)
-    {}
-
-    // The copy c'tor.
+    TScoreValue _score              = DPCellDefaultInfinity<DPCell_>::VALUE;
+    TScoreValue _horizontalScore    = DPCellDefaultInfinity<DPCell_>::VALUE;
+    TScoreValue _verticalScore      = DPCellDefaultInfinity<DPCell_>::VALUE;
+    
+    DPCell_() = default;
+    // Copy c'tor.
     DPCell_(DPCell_<TScoreValue, AffineGaps> const & other) :
         _score(other._score),
         _horizontalScore(other._horizontalScore),
         _verticalScore(other._verticalScore)
     {}
+    
+    // Move c-tor
+    DPCell_(DPCell_ && other) : DPCell_()
+    {
+        swap(*this, other);
+    }
 
     // The assignment operator.
     DPCell_ &
-    operator=(DPCell_ const & other)
+    operator=(DPCell_ other)
     {
-        if (this != &other)
-        {
-            _score = other._score;
-            _horizontalScore = other._horizontalScore;
-            _verticalScore = other._verticalScore;
-        }
+        swap(*this, other);
         return *this;
     }
 
+    // Assign score to cell.
     DPCell_ &
     operator=(TScoreValue const & score)
     {
         _score = score;
         return *this;
     }
+
+    ~DPCell_() = default;
 };
 
 // ============================================================================
@@ -144,12 +142,19 @@ _verticalScoreOfCell(DPCell_<TScoreValue, AffineGaps> const & dpCell)
 
 // Returns the score of the matrix for vertical-gaps of the given cell.
 template <typename TScoreValue>
-inline void
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >,void)
 _setVerticalScoreOfCell(DPCell_<TScoreValue, AffineGaps> & dpCell, TScoreValue const & newVerticalScore)
 {
     dpCell._verticalScore = newVerticalScore;
 }
 
+template <typename TScoreValue>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >,void)
+_setVerticalScoreOfCell(DPCell_<TScoreValue, AffineGaps> & dpCell, TScoreValue const & newVerticalScore, TScoreValue const & mask)
+{
+    dpCell._verticalScore = blend(dpCell._verticalScore, newVerticalScore, mask);
+}
+
 // ----------------------------------------------------------------------------
 // Function _horizontalScoreOfCell()
 // ----------------------------------------------------------------------------
@@ -175,12 +180,29 @@ _horizontalScoreOfCell(DPCell_<TScoreValue, AffineGaps> const & dpCell)
 
 // Returns the score of the matrix for vertical-gaps of the given cell.
 template <typename TScoreValue>
-inline void
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >,void)
 _setHorizontalScoreOfCell(DPCell_<TScoreValue, AffineGaps> & dpCell, TScoreValue const & newHorizontalScore)
 {
     dpCell._horizontalScore = newHorizontalScore;
 }
 
+template <typename TScoreValue>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >,void)
+_setHorizontalScoreOfCell(DPCell_<TScoreValue, AffineGaps> & dpCell, TScoreValue const & newHorizontalScore, TScoreValue const & mask)
+{
+    dpCell._horizontalScore = blend(dpCell._horizontalScore, newHorizontalScore, mask);
+}
+
+template <typename TScoreValue>
+inline void 
+swap(DPCell_<TScoreValue, AffineGaps> & lhs, 
+     DPCell_<TScoreValue, AffineGaps> & rhs)
+{
+    std::swap(lhs._score, rhs._score);
+    std::swap(lhs._horizontalScore, rhs._horizontalScore);
+    std::swap(lhs._verticalScore, rhs._verticalScore);
+}
+
 }  // namespace seqan
 
 #endif  // #ifndef SEQAN_INCLUDE_SEQAN_ALIGN_DP_CELL_AFFINE_H_
diff --git a/include/seqan/align/dp_cell_dynamic.h b/include/seqan/align/dp_cell_dynamic.h
index b5b9c8d..567d5f9 100644
--- a/include/seqan/align/dp_cell_dynamic.h
+++ b/include/seqan/align/dp_cell_dynamic.h
@@ -45,6 +45,24 @@ namespace seqan {
 // Forwards
 // ============================================================================
 
+// ----------------------------------------------------------------------------
+// Metafunction GetFlagMaskType
+// ----------------------------------------------------------------------------
+
+namespace impl
+{
+namespace dp_cell
+{
+template <typename TScoreValue>
+struct FlagMaskType
+{
+    using Type = typename If<Is<SimdVectorConcept<TScoreValue> >,
+                             TScoreValue,
+                             uint8_t>::Type;
+};
+}  // namespace dp_cell
+}  // namespace impl
+
 // ============================================================================
 // Tags, Classes, Enums
 // ============================================================================
@@ -71,39 +89,43 @@ template <typename TScoreValue>
 class DPCell_<TScoreValue, DynamicGaps>
 {
 public:
-    TScoreValue _score;
-    char _flagMask;
+    using TFlagMaskType = typename impl::dp_cell::FlagMaskType<TScoreValue>::Type;
 
-    // The default c'tor.
-    DPCell_() : _score(DPCellDefaultInfinity<DPCell_>::VALUE), _flagMask(0)
-    {}
+    TScoreValue     _score      = DPCellDefaultInfinity<DPCell_>::VALUE;
+    TFlagMaskType   _flagMask   = TFlagMaskType();
 
-    // The copy c'tor.
-    DPCell_(DPCell_<TScoreValue, DynamicGaps> const & other) : _score(other._score), _flagMask(other._flagMask)
+    DPCell_() = default;
+    
+    // Copy c'tor.
+    DPCell_(DPCell_ const & other) : _score(other._score), _flagMask(other._flagMask)
     {}
 
-    // Implicit c'tor.
-    DPCell_(TScoreValue const & score) : _score(score), _flagMask(0)
-    {}
+    // Move c'tor.
+    DPCell_(DPCell_ && other) : DPCell_()
+    {
+        swap(*this, other);
+    }
 
-    // The assignment operator.
-    DPCell_ &
-    operator=(DPCell_<TScoreValue, DynamicGaps> const & other)
+    // Construct with score.
+    DPCell_(TScoreValue const & pScore) : _score(pScore)
+    {}
+    
+    // Assignment and move operator.
+    DPCell_& operator=(DPCell_ other)
     {
-        if (this != &other)
-        {
-            _score = other._score;
-            _flagMask = other._flagMask;
-        }
+        swap(*this, other);
         return *this;
     }
 
+    // Assignment of score.
     DPCell_ &
     operator=(TScoreValue const & score)
     {
         _score = score;
         return *this;
     }
+    
+    ~DPCell_() = default;
 };
 
 // ============================================================================
@@ -164,8 +186,9 @@ inline void _setBit(DPCell_<TScoreValue, DynamicGaps> & cell,
 }
 
 template <typename TScoreValue, typename TSpec>
-inline bool isGapExtension(DPCell_<TScoreValue, DynamicGaps> const & cell,
-                           TSpec const & /*spec*/)
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >,bool)
+isGapExtension(DPCell_<TScoreValue, DynamicGaps> const & cell,
+               TSpec const & /*spec*/)
 {
     if (IsSameType<TSpec, DynamicGapExtensionHorizontal>::VALUE)
         return cell._flagMask & MASK_HORIZONTAL_GAP;
@@ -173,15 +196,33 @@ inline bool isGapExtension(DPCell_<TScoreValue, DynamicGaps> const & cell,
         return cell._flagMask & MASK_VERTICAL_GAP;
 }
 
+template <typename TScoreValue, typename TSpec>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >,TScoreValue)
+isGapExtension(DPCell_<TScoreValue, DynamicGaps> const & cell,
+               TSpec const & /*spec*/)
+{
+    return blend(cell._flagMask & createVector<TScoreValue>(MASK_VERTICAL_GAP),
+                 cell._flagMask & createVector<TScoreValue>(MASK_HORIZONTAL_GAP),
+                 createVector<TScoreValue>(IsSameType<TSpec, DynamicGapExtensionHorizontal>::VALUE));
+}
+
 template <typename TScoreValue, typename TFlagV, typename TFlagH>
-inline void
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, void)
 setGapExtension(DPCell_<TScoreValue, DynamicGaps> & cell,
-                TFlagV const & /*vert*/,
-                TFlagH const & /*hori*/)
+                TFlagV const & /*vert*/, TFlagH const & /*hori*/)
 {
     cell._flagMask = SetGapExtension<DPCell_<TScoreValue, DynamicGaps>, TFlagV, TFlagH>::VALUE;
 }
 
+template <typename TScoreValue, typename TFlagV, typename TFlagH>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, void)
+setGapExtension(DPCell_<TScoreValue, DynamicGaps> & cell,
+                TFlagV const & /*vert*/, TFlagH const & /*hori*/,
+                TScoreValue const & cmp)
+{
+    cell._flagMask = blend(cell._flagMask, createVector<TScoreValue>(SetGapExtension<DPCell_<TScoreValue, DynamicGaps>, TFlagV, TFlagH>::VALUE), cmp);
+}
+
 // ----------------------------------------------------------------------------
 // Function operator<()
 // ----------------------------------------------------------------------------
@@ -194,6 +235,15 @@ inline bool operator<(DPCell_<TScoreValueLeft, DynamicGaps> const & left,
     return left._score < right._score;
 }
 
+template <typename TScoreValue>
+inline void
+swap(DPCell_<TScoreValue, DynamicGaps> & lhs,
+     DPCell_<TScoreValue, DynamicGaps> & rhs)
+{
+    std::swap(lhs._score, rhs._score);
+    std::swap(lhs._flagMask, rhs._flagMask);
+}
+
 }  // namespace seqan
 
 #endif  // INCLUDE_SEQAN_ALIGN_DP_CELL_DYNAMIC_H_
diff --git a/include/seqan/align/dp_cell_linear.h b/include/seqan/align/dp_cell_linear.h
index f246900..1a46fbe 100644
--- a/include/seqan/align/dp_cell_linear.h
+++ b/include/seqan/align/dp_cell_linear.h
@@ -60,34 +60,36 @@ template <typename TScoreValue>
 class DPCell_<TScoreValue, LinearGaps>
 {
 public:
+    TScoreValue _score = DPCellDefaultInfinity<DPCell_>::VALUE;
 
-    TScoreValue _score;
-
-    // The default c'tor.
-    DPCell_() :
-        _score(DPCellDefaultInfinity<DPCell_>::VALUE)
-    {}
-
-    // The copy c'tor.
-    DPCell_(DPCell_<TScoreValue, LinearGaps> const & other) :
-        _score(other._score)
+    DPCell_() = default;
+    
+    // Copy c'tor.
+    DPCell_(DPCell_ const & other) : _score(other._score)
     {}
-
-    // The assignment operator.
-    DPCell_ &
-    operator=(DPCell_<TScoreValue, LinearGaps> const & other)
+    
+    // Move c'tor.
+    DPCell_(DPCell_ && other) : DPCell_()
+    {
+        swap(*this, other);
+    }
+    
+    // Assignment & move operator
+    DPCell_& operator=(DPCell_ other)
     {
-        if (this != &other)
-            _score = other._score;
+        swap(*this, other);
         return *this;
     }
 
+    // Assignment of score.
     DPCell_ &
     operator=(TScoreValue const & score)
     {
         _score = score;
         return *this;
     }
+
+    ~DPCell_() = default;
 };
 
 // ============================================================================
@@ -110,6 +112,14 @@ inline bool operator<(DPCell_<TScoreValueLeft, LinearGaps> const & left,
     return left._score < right._score;
 }
 
+template <typename TScoreValue>
+inline void 
+swap(DPCell_<TScoreValue, LinearGaps> & lhs, 
+     DPCell_<TScoreValue, LinearGaps> & rhs)
+{
+    std::swap(lhs._score, rhs._score);
+}
+
 }  // namespace seqan
 
 #endif  // #ifndef SEQAN_INCLUDE_SEQAN_ALIGN_DP_CELL_LINEAR_H_
diff --git a/include/seqan/align/dp_context.h b/include/seqan/align/dp_context.h
index a286025..3049369 100644
--- a/include/seqan/align/dp_context.h
+++ b/include/seqan/align/dp_context.h
@@ -103,7 +103,7 @@ struct GetDPScoreMatrix<DPContext<TScoreValue, TGapCosts> const >
 template <typename TScoreValue, typename TGapCosts>
 struct GetDPTraceMatrix<DPContext<TScoreValue, TGapCosts> >
 {
-    typedef typename TraceBitMap_::TTraceValue TTraceValue_;
+    typedef typename TraceBitMap_<TScoreValue>::Type TTraceValue_;
     typedef DPMatrix_<TTraceValue_, FullDPMatrix> TDPScoreMatrix_;
 
     typedef typename Host<TDPScoreMatrix_>::Type Type;
@@ -112,7 +112,7 @@ struct GetDPTraceMatrix<DPContext<TScoreValue, TGapCosts> >
 template <typename TScoreValue, typename TGapCosts>
 struct GetDPTraceMatrix<DPContext<TScoreValue, TGapCosts> const >
 {
-    typedef typename TraceBitMap_::TTraceValue TTraceValue_;
+    typedef typename TraceBitMap_<TScoreValue>::Type TTraceValue_;
     typedef DPMatrix_<TTraceValue_, FullDPMatrix> TDPScoreMatrix_;
 
     typedef typename Host<TDPScoreMatrix_>::Type const Type;
diff --git a/include/seqan/align/dp_formula.h b/include/seqan/align/dp_formula.h
index 1b19fda..9ecd0ab 100644
--- a/include/seqan/align/dp_formula.h
+++ b/include/seqan/align/dp_formula.h
@@ -107,46 +107,12 @@ typedef Tag<RecursionDirectionZero_> RecursionDirectionZero;
 // ============================================================================
 
 // ----------------------------------------------------------------------------
-// Function _conditionalOrOnEquality()
-// ----------------------------------------------------------------------------
-
-// Function used to compare two trace values and to add a given state to the result
-// value if they are equal using a bit-or operation.
-template <typename TTraceValue, typename TScoreValue>
-inline void
-_conditionalOrOnEquality(TTraceValue & target,
-                         TScoreValue const & leftComp,
-                         TScoreValue const & rightComp,
-                         TTraceValue state)
-{
-    if (leftComp == rightComp)
-        target |= state;
-}
-
-// ----------------------------------------------------------------------------
-// Function _conditionalOrOnInequality()
-// ----------------------------------------------------------------------------
-
-// Function used to compare two trace values and to add a given state to the result
-// value if they are equal using a bit-or operation.
-template <typename TTraceValue, typename TScoreValue>
-inline void
-_conditionalOrOnInequality(TTraceValue & target,
-                           TScoreValue const & leftComp,
-                           TScoreValue const & rightComp,
-                           TTraceValue state)
-{
-    if (leftComp != rightComp)
-        target |= state;
-}
-
-// ----------------------------------------------------------------------------
 // Function _computeScore
 // ----------------------------------------------------------------------------
 
 template <typename TScoreValue, typename TGapCosts, typename TSequenceHValue, typename TSequenceVValue,
           typename TScoringScheme, typename TRecursionDirection, typename TDPProfile>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _computeScore(DPCell_<TScoreValue, TGapCosts> & activeCell,
               DPCell_<TScoreValue, TGapCosts> const & previousDiagonal,
               DPCell_<TScoreValue, TGapCosts> const & previousHorizontal,
@@ -157,7 +123,7 @@ _computeScore(DPCell_<TScoreValue, TGapCosts> & activeCell,
               TRecursionDirection const & recDir,
               TDPProfile const & dpProfile)
 {
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<TScoreValue>::Type TTraceValue;
 
     TTraceValue traceDir = _doComputeScore(activeCell, previousDiagonal, previousHorizontal, previousVertical, seqHVal,
                                            seqVVal, scoringScheme, recDir, dpProfile);
@@ -167,19 +133,48 @@ _computeScore(DPCell_<TScoreValue, TGapCosts> & activeCell,
             _setScoreOfCell(activeCell, static_cast<TScoreValue>(0));
             _setHorizontalScoreOfCell(activeCell, static_cast<TScoreValue>(0));
             _setVerticalScoreOfCell(activeCell, static_cast<TScoreValue>(0));
-            return TraceBitMap_::NONE;
+            return TraceBitMap_<TScoreValue>::NONE;
         }
 
     return traceDir;
 }
 
+template <typename TScoreValue, typename TGapCosts, typename TSequenceHValue, typename TSequenceVValue,
+          typename TScoringScheme, typename TRecursionDirection, typename TDPProfile>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_computeScore(DPCell_<TScoreValue, TGapCosts> & activeCell,
+              DPCell_<TScoreValue, TGapCosts> const & previousDiagonal,
+              DPCell_<TScoreValue, TGapCosts> const & previousHorizontal,
+              DPCell_<TScoreValue, TGapCosts> const & previousVertical,
+              TSequenceHValue const & seqHVal,
+              TSequenceVValue const & seqVVal,
+              TScoringScheme const & scoringScheme,
+              TRecursionDirection const & recDir,
+              TDPProfile const & dpProfile)
+{
+    typedef typename TraceBitMap_<TScoreValue>::Type TTraceValue;
+
+    TTraceValue traceDir = _doComputeScore(activeCell, previousDiagonal, previousHorizontal, previousVertical, seqHVal,
+                                           seqVVal, scoringScheme, recDir, dpProfile);
+    if (IsLocalAlignment_<TDPProfile>::VALUE)
+    {
+        TScoreValue cmp = cmpGt(createVector<TScoreValue>(1), activeCell._score);
+        _setScoreOfCell(activeCell, TraceBitMap_<TScoreValue>::NONE, cmp);
+        _setHorizontalScoreOfCell(activeCell, TraceBitMap_<TScoreValue>::NONE, cmp);
+        _setVerticalScoreOfCell(activeCell, TraceBitMap_<TScoreValue>::NONE, cmp);
+        return blend(traceDir, TraceBitMap_<TScoreValue>::NONE, cmp);
+    }
+
+    return traceDir;
+}
+
 // ----------------------------------------------------------------------------
 // Function _doComputeScore                        [RecursionDirectionDiagonal]
 // ----------------------------------------------------------------------------
 
 template <typename TScoreValue, typename TGapCosts, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
           typename TDPProfile>
-inline typename TraceBitMap_::TTraceValue
+inline typename TraceBitMap_<TScoreValue>::Type
 _doComputeScore(DPCell_<TScoreValue, TGapCosts> & activeCell,
                 DPCell_<TScoreValue, TGapCosts> const & previousDiagonal,
                 DPCell_<TScoreValue, TGapCosts> const & /*previousHorizontal*/,
@@ -191,11 +186,12 @@ _doComputeScore(DPCell_<TScoreValue, TGapCosts> & activeCell,
                 TDPProfile const &)
 {
     activeCell._score = _scoreOfCell(previousDiagonal) + score(scoringScheme, seqHVal, seqVVal);
-    setGapExtension(activeCell, False(), False());
+    setGapExtension(activeCell, False(), False(), createVector<TScoreValue>(-1));
+
     if (!IsTracebackEnabled_<TDPProfile>::VALUE)
-        return TraceBitMap_::NONE;
+        return TraceBitMap_<TScoreValue>::NONE;
 
-    return TraceBitMap_::DIAGONAL;
+    return TraceBitMap_<TScoreValue>::DIAGONAL;
 }
 
 // ----------------------------------------------------------------------------
@@ -204,7 +200,7 @@ _doComputeScore(DPCell_<TScoreValue, TGapCosts> & activeCell,
 
 template <typename TScoreValue, typename TGapCosts, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
           typename TAlgoTag, typename TTraceFlag>
-inline typename TraceBitMap_::TTraceValue
+inline typename TraceBitMap_<TScoreValue>::Type
 _doComputeScore(DPCell_<TScoreValue, TGapCosts> & activeCell,
                 DPCell_<TScoreValue, TGapCosts> const & /*previousDiagonal*/,
                 DPCell_<TScoreValue, TGapCosts> const & /*previousHorizontal*/,
@@ -215,8 +211,8 @@ _doComputeScore(DPCell_<TScoreValue, TGapCosts> & activeCell,
                 RecursionDirectionZero const &,
                 DPProfile_<TAlgoTag, TGapCosts, TTraceFlag> const &)
 {
-    _scoreOfCell(activeCell) = 0;
-    return TraceBitMap_::NONE;
+    _scoreOfCell(activeCell) = createVector<TScoreValue>(0);
+    return TraceBitMap_<TScoreValue>::NONE;
 }
 
 }  // namespace seqan
diff --git a/include/seqan/align/dp_formula_affine.h b/include/seqan/align/dp_formula_affine.h
index bf99453..2e22c0c 100644
--- a/include/seqan/align/dp_formula_affine.h
+++ b/include/seqan/align/dp_formula_affine.h
@@ -56,116 +56,11 @@ namespace seqan {
 // ============================================================================
 
 // ----------------------------------------------------------------------------
-// Function _retrieveTraceAffine                        [RecursionDirectionAll]
-// ----------------------------------------------------------------------------
-
-template <typename TScoreValue>
-inline TraceBitMap_::TTraceValue
-_retrieveTraceAffine(TScoreValue const & globalMax,
-                     TScoreValue const & diagScore,
-                     TScoreValue const & horiScore,
-                     TScoreValue const & horiOpenScore,
-                     TScoreValue const & vertiScore,
-                     TScoreValue const & vertiOpenScore,
-                     RecursionDirectionAll const &)
-{
-    typename TraceBitMap_::TTraceValue traceValue(TraceBitMap_::NONE);
-    _conditionalOrOnEquality(traceValue, globalMax, diagScore, TraceBitMap_::DIAGONAL);
-    _conditionalOrOnEquality(traceValue, globalMax, horiScore, TraceBitMap_::HORIZONTAL);
-    _conditionalOrOnEquality(traceValue, globalMax, horiOpenScore, TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
-    _conditionalOrOnEquality(traceValue, globalMax, vertiScore, TraceBitMap_::VERTICAL);
-    _conditionalOrOnEquality(traceValue, globalMax, vertiOpenScore, TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
-    return traceValue;
-}
-
-// ----------------------------------------------------------------------------
-// Function _retrieveTraceAffine              [RecursionDirectionUpperDiagonal]
-// ----------------------------------------------------------------------------
-
-template <typename TScoreValue>
-inline TraceBitMap_::TTraceValue
-_retrieveTraceAffine(TScoreValue const & globalMax,
-                     TScoreValue const & diagScore,
-                     TScoreValue const & horiScore,
-                     TScoreValue const & horiOpenScore,
-                     TScoreValue const &,
-                     TScoreValue const &,
-                     RecursionDirectionUpperDiagonal const &)
-{
-    typename TraceBitMap_::TTraceValue traceValue(TraceBitMap_::NONE);
-    _conditionalOrOnEquality(traceValue, globalMax, diagScore, TraceBitMap_::DIAGONAL);
-    _conditionalOrOnEquality(traceValue, globalMax, horiScore, TraceBitMap_::HORIZONTAL);
-    _conditionalOrOnEquality(traceValue, globalMax, horiOpenScore, TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
-    return traceValue;
-}
-
-// ----------------------------------------------------------------------------
-// Function _retrieveTraceAffine              [RecursionDirectionLowerDiagonal]
-// ----------------------------------------------------------------------------
-
-template <typename TScoreValue>
-inline TraceBitMap_::TTraceValue
-_retrieveTraceAffine(TScoreValue const & globalMax,
-                     TScoreValue const & diagScore,
-                     TScoreValue const &,
-                     TScoreValue const &,
-                     TScoreValue const & vertiScore,
-                     TScoreValue const & vertiOpenScore,
-                     RecursionDirectionLowerDiagonal const &)
-{
-    typename TraceBitMap_::TTraceValue traceValue(TraceBitMap_::NONE);
-    _conditionalOrOnEquality(traceValue, globalMax, diagScore, TraceBitMap_::DIAGONAL);
-    _conditionalOrOnEquality(traceValue, globalMax, vertiScore, TraceBitMap_::VERTICAL);
-    _conditionalOrOnEquality(traceValue, globalMax, vertiOpenScore, TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
-    return traceValue;
-}
-
-// ----------------------------------------------------------------------------
-// Function _retrieveTraceAffine                 [RecursionDirectionHorizontal]
-// ----------------------------------------------------------------------------
-
-template <typename TScoreValue>
-inline TraceBitMap_::TTraceValue
-_retrieveTraceAffine(TScoreValue const & globalMax,
-                     TScoreValue const &,
-                     TScoreValue const & horiScore,
-                     TScoreValue const & horiOpenScore,
-                     TScoreValue const &,
-                     TScoreValue const &,
-                     RecursionDirectionHorizontal const &)
-{
-    typename TraceBitMap_::TTraceValue traceValue(TraceBitMap_::NONE);
-    _conditionalOrOnEquality(traceValue, globalMax, horiScore, TraceBitMap_::HORIZONTAL);
-    _conditionalOrOnEquality(traceValue, globalMax, horiOpenScore, TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
-    return traceValue;
-}
-
-// ----------------------------------------------------------------------------
-// Function _retrieveTraceAffine                   [RecursionDirectionVertical]
-// ----------------------------------------------------------------------------
-
-template <typename TScoreValue>
-inline TraceBitMap_::TTraceValue
-_retrieveTraceAffine(TScoreValue const & globalMax,
-                     TScoreValue const &,
-                     TScoreValue const &,
-                     TScoreValue const &,
-                     TScoreValue const & vertiScore,
-                     TScoreValue const & vertiOpenScore,
-                     RecursionDirectionVertical const &)
-{
-    typename TraceBitMap_::TTraceValue traceValue(TraceBitMap_::NONE);
-    _conditionalOrOnEquality(traceValue, globalMax, vertiScore, TraceBitMap_::VERTICAL);
-    _conditionalOrOnEquality(traceValue, globalMax, vertiOpenScore, TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
-    return traceValue;
-}
-
-// ----------------------------------------------------------------------------
 // Function _internalComputeScore      [RecursionDirectionDiagonal, AffineGaps]
 // ----------------------------------------------------------------------------
 
 template <typename TScoreValue, typename TAffineGaps, typename TTraceValueL, typename TTraceValueGap>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, TAffineGaps> & activeCell,
                       TScoreValue const & rightCompare,
                       TTraceValueL,
@@ -175,11 +70,24 @@ _internalComputeScore(DPCell_<TScoreValue, TAffineGaps> & activeCell,
 {
     if(activeCell._score < rightCompare)
         activeCell._score = rightCompare;
-    return TraceBitMap_::NONE;
+    return TraceBitMap_<TScoreValue>::NONE;
+}
+
+template <typename TScoreValue, typename TAffineGaps, typename TTraceValueL, typename TTraceValueGap>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, TAffineGaps> & activeCell,
+                      TScoreValue const & rightCompare,
+                      TTraceValueL,
+                      TTraceValueGap,
+                      TracebackOff const &,
+                      RecursionDirectionDiagonal const &)
+{
+    activeCell._score = blend(activeCell._score, rightCompare, cmpGt(rightCompare, activeCell._score));
+    return TraceBitMap_<TScoreValue>::NONE;
 }
 
 template <typename TScoreValue, typename TAffineGaps, typename TTraceValueL, typename TTraceValueGap, typename TGapsPlacement>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, TAffineGaps> & activeCell,
                       TScoreValue const & rightCompare,
                       TTraceValueL leftTrace,
@@ -190,13 +98,29 @@ _internalComputeScore(DPCell_<TScoreValue, TAffineGaps> & activeCell,
     if(activeCell._score <= rightCompare)
     {
         activeCell._score = rightCompare;
-        return TraceBitMap_::DIAGONAL | leftTrace;
+        return TraceBitMap_<TScoreValue>::DIAGONAL | leftTrace;
     }
     return leftTrace | gapTrace;
 }
 
 template <typename TScoreValue, typename TAffineGaps, typename TTraceValueL, typename TTraceValueGap, typename TGapsPlacement>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, TAffineGaps> & activeCell,
+                      TScoreValue const & rightCompare,
+                      TTraceValueL const & leftTrace,
+                      TTraceValueGap const & gapTrace,
+                      TracebackOn<TracebackConfig_<SingleTrace, TGapsPlacement> > const &,
+                      RecursionDirectionDiagonal const &)
+{
+    TScoreValue cmp = cmpGt(activeCell._score, rightCompare);
+    activeCell._score = blend(rightCompare, activeCell._score, cmp);
+    return blend(TraceBitMap_<TScoreValue>::DIAGONAL | leftTrace,
+                 leftTrace | gapTrace,
+                 cmp);
+}
+
+template <typename TScoreValue, typename TAffineGaps, typename TTraceValueL, typename TTraceValueGap, typename TGapsPlacement>
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, TAffineGaps> & activeCell,
                       TScoreValue const & rightCompare,
                       TTraceValueL leftTrace,
@@ -207,19 +131,36 @@ _internalComputeScore(DPCell_<TScoreValue, TAffineGaps> & activeCell,
     if(activeCell._score < rightCompare)
     {
         activeCell._score = rightCompare;  // Maximal score comes from diagonal.
-        return TraceBitMap_::DIAGONAL | leftTrace;  // Return trace for Diagonal.
+        return TraceBitMap_<TScoreValue>::DIAGONAL | leftTrace;  // Return trace for Diagonal.
     }
     if (activeCell._score == rightCompare)      // Maximal score comes from previous computed directions and diagonal.
-        return leftTrace | TraceBitMap_::DIAGONAL | gapTrace;   // Return all directions inclusively the flag indicating max from gap.
+        return leftTrace | TraceBitMap_<TScoreValue>::DIAGONAL | gapTrace;   // Return all directions inclusively the flag indicating max from gap.
     return leftTrace | gapTrace; // Maximum comes from gap. Return gap value inclusively the flag indicating max from gap.
 }
 
+template <typename TScoreValue, typename TAffineGaps, typename TTraceValueL, typename TTraceValueGap, typename TGapsPlacement>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, TAffineGaps> & activeCell,
+                      TScoreValue const & rightCompare,
+                      TTraceValueL const & leftTrace,
+                      TTraceValueGap const & gapTrace,
+                      TracebackOn<TracebackConfig_<CompleteTrace, TGapsPlacement> >  const &,
+                      RecursionDirectionDiagonal const &)
+{
+    TScoreValue cmpG = cmpGt(rightCompare, activeCell._score);
+    TScoreValue cmpE = cmpEq(rightCompare, activeCell._score);
+    TScoreValue result = leftTrace | gapTrace;
+    activeCell._score = blend(activeCell._score, rightCompare, cmpG);
+    result = blend(result, TraceBitMap_<TScoreValue>::DIAGONAL | leftTrace, cmpG);
+    return blend(result, leftTrace | TraceBitMap_<TScoreValue>::DIAGONAL | gapTrace, cmpE);
+}
+
 // ----------------------------------------------------------------------------
 // Function _internalComputeScore    [RecursionDirectionHorizontal, AffineGaps]
 // ----------------------------------------------------------------------------
 
 template <typename TScoreValue, typename TTraceValueL, typename TTraceValueR>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                       TScoreValue const & rightCompare,
                       TTraceValueL,
@@ -231,11 +172,26 @@ _internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
         activeCell._score = activeCell._horizontalScore = rightCompare;
     else
         activeCell._score = activeCell._horizontalScore;
-    return TraceBitMap_::NONE;
+    return TraceBitMap_<TScoreValue>::NONE;
+}
+
+template <typename TScoreValue, typename TTraceValueL, typename TTraceValueR>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
+                      TScoreValue const & rightCompare,
+                      TTraceValueL,
+                      TTraceValueR,
+                      TracebackOff const &,
+                      RecursionDirectionHorizontal const &)
+{
+    TScoreValue cmp = cmpGt(rightCompare, activeCell._horizontalScore);
+    activeCell._horizontalScore = blend(activeCell._horizontalScore, rightCompare, cmp);
+    activeCell._score = activeCell._horizontalScore;
+    return TraceBitMap_<TScoreValue>::NONE;
 }
 
 template <typename TScoreValue, typename TTraceValueL, typename TTraceValueR, typename TGapsPlacement>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                       TScoreValue const & rightCompare,
                       TTraceValueL leftTrace,
@@ -253,7 +209,22 @@ _internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
 }
 
 template <typename TScoreValue, typename TTraceValueL, typename TTraceValueR, typename TGapsPlacement>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
+                      TScoreValue const & rightCompare,
+                      TTraceValueL leftTrace,
+                      TTraceValueR  rightTrace,
+                      TracebackOn<TracebackConfig_<SingleTrace, TGapsPlacement> >  const &,
+                      RecursionDirectionHorizontal const &)
+{
+    TScoreValue cmp = cmpGt(rightCompare, activeCell._horizontalScore);
+    activeCell._horizontalScore = blend(activeCell._horizontalScore, rightCompare, cmp);
+    activeCell._score = activeCell._horizontalScore;
+    return blend(leftTrace, rightTrace, cmp);
+}
+
+template <typename TScoreValue, typename TTraceValueL, typename TTraceValueR, typename TGapsPlacement>
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                       TScoreValue const & rightCompare,
                       TTraceValueL leftTrace,
@@ -272,12 +243,31 @@ _internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
     return leftTrace;
 }
 
+template <typename TScoreValue, typename TTraceValueL, typename TTraceValueR, typename TGapsPlacement>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
+                      TScoreValue const & rightCompare,
+                      TTraceValueL const & leftTrace,
+                      TTraceValueR const & rightTrace,
+                      TracebackOn<TracebackConfig_<CompleteTrace, TGapsPlacement> >  const &,
+                      RecursionDirectionHorizontal const &)
+{
+    TScoreValue cmpG = cmpGt(rightCompare, activeCell._horizontalScore);
+    TScoreValue cmpE = cmpEq(rightCompare, activeCell._horizontalScore);
+    activeCell._horizontalScore = blend(activeCell._horizontalScore, rightCompare, cmpG);
+    activeCell._score = activeCell._horizontalScore;
+
+    TScoreValue result = leftTrace;
+    result = blend(result, rightTrace, cmpG);
+    return blend(result, leftTrace | rightTrace, cmpE);
+}
+
 // ----------------------------------------------------------------------------
 // Function _internalComputeScore      [RecursionDirectionVertical, AffineGaps]
 // ----------------------------------------------------------------------------
 
 template <typename TScoreValue, typename TTraceValueL, typename TTraceValueR>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                       TScoreValue const & rightCompare,
                       TTraceValueL,
@@ -289,11 +279,26 @@ _internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
         activeCell._score = activeCell._verticalScore = rightCompare;
     else
         activeCell._score = activeCell._verticalScore;
-    return TraceBitMap_::NONE;
+    return TraceBitMap_<TScoreValue>::NONE;
+}
+
+template <typename TScoreValue, typename TTraceValueL, typename TTraceValueR>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
+                      TScoreValue const & rightCompare,
+                      TTraceValueL,
+                      TTraceValueR,
+                      TracebackOff const &,
+                      RecursionDirectionVertical const &)
+{
+    TScoreValue cmp = cmpGt(rightCompare, activeCell._verticalScore);
+    activeCell._verticalScore = blend(activeCell._verticalScore, rightCompare, cmp);
+    activeCell._score = activeCell._verticalScore;
+    return TraceBitMap_<TScoreValue>::NONE;
 }
 
 template <typename TScoreValue, typename TTraceValueL, typename TTraceValueR, typename TGapsPlacement>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                       TScoreValue const & rightCompare,
                       TTraceValueL leftTrace,
@@ -311,7 +316,22 @@ _internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
 }
 
 template <typename TScoreValue, typename TTraceValueL, typename TTraceValueR, typename TGapsPlacement>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
+                      TScoreValue const & rightCompare,
+                      TTraceValueL const & leftTrace,
+                      TTraceValueR const & rightTrace,
+                      TracebackOn<TracebackConfig_<SingleTrace, TGapsPlacement> >  const &,
+                      RecursionDirectionVertical const &)
+{
+    TScoreValue cmp = cmpGt(rightCompare, activeCell._verticalScore);
+    activeCell._verticalScore = blend(activeCell._verticalScore, rightCompare, cmp);
+    activeCell._score = activeCell._verticalScore;
+    return blend(leftTrace, rightTrace, cmp);
+}
+
+template <typename TScoreValue, typename TTraceValueL, typename TTraceValueR, typename TGapsPlacement>
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                       TScoreValue const & rightCompare,
                       TTraceValueL leftTrace,
@@ -330,46 +350,103 @@ _internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
     return leftTrace;
 }
 
+template <typename TScoreValue, typename TTraceValueL, typename TTraceValueR, typename TGapsPlacement>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
+                      TScoreValue const & rightCompare,
+                      TTraceValueL leftTrace,
+                      TTraceValueR rightTrace,
+                      TracebackOn<TracebackConfig_<CompleteTrace, TGapsPlacement> >  const &,
+                      RecursionDirectionVertical const &)
+{
+    TScoreValue cmpG = cmpGt(rightCompare, activeCell._verticalScore);
+    TScoreValue cmpE = cmpEq(rightCompare, activeCell._verticalScore);
+    activeCell._verticalScore = blend(activeCell._verticalScore, rightCompare, cmpG);
+    activeCell._score = activeCell._verticalScore;
+
+    TScoreValue result = leftTrace;
+    result = blend(result, rightTrace, cmpG);
+    return blend(result, leftTrace | rightTrace, cmpE);
+}
+
 // ----------------------------------------------------------------------------
 // Function _internalComputeScore          [Vertical vs Horizontal, AffineGaps]
 // ----------------------------------------------------------------------------
 
 template <typename TScoreValue>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                       TracebackOff const &)
 {
     if(activeCell._score < activeCell._horizontalScore)
         activeCell._score = activeCell._horizontalScore;
-    return TraceBitMap_::NONE;
+    return TraceBitMap_<TScoreValue>::NONE;
+}
+
+template <typename TScoreValue>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
+                      TracebackOff const &)
+{
+    activeCell._score = blend(activeCell._score, activeCell._horizontalScore,
+                              cmpGt(activeCell._horizontalScore, activeCell._score));
+    return TraceBitMap_<TScoreValue>::NONE;
 }
 
 template <typename TScoreValue, typename TGapsPlacement>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                       TracebackOn<TracebackConfig_<SingleTrace, TGapsPlacement> >  const &)
 {
     if(activeCell._score < activeCell._horizontalScore)
     {
         activeCell._score = activeCell._horizontalScore;
-        return TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
+        return TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX;
     }
-    return TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
+    return TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX;
 }
 
 template <typename TScoreValue, typename TGapsPlacement>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
+                      TracebackOn<TracebackConfig_<SingleTrace, TGapsPlacement> >  const &)
+{
+    TScoreValue cmp = cmpGt(activeCell._horizontalScore, activeCell._score);
+    activeCell._score = blend(activeCell._score, activeCell._horizontalScore, cmp);
+    return blend(TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX,
+                 TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX,
+                 cmp);
+}
+
+template <typename TScoreValue, typename TGapsPlacement>
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                       TracebackOn<TracebackConfig_<CompleteTrace, TGapsPlacement> >  const &)
 {
     if(activeCell._score < activeCell._horizontalScore)
     {
         activeCell._score = activeCell._horizontalScore;
-        return TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
+        return TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX;
     }
     if (activeCell._score == activeCell._horizontalScore)
-        return TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    return TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
+        return TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX;
+    return TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX;
+}
+
+template <typename TScoreValue, typename TGapsPlacement>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
+                      TracebackOn<TracebackConfig_<CompleteTrace, TGapsPlacement> >  const &)
+{
+    TScoreValue cmpG = cmpGt(activeCell._horizontalScore, activeCell._score);
+    TScoreValue cmpE = cmpEq(activeCell._horizontalScore, activeCell._score);
+    activeCell._score = blend(activeCell._score, activeCell._horizontalScore, cmpG);
+
+    return blend(blend(TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX,
+                       TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX,
+                       cmpG),
+                 TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX,
+                 cmpE);
 }
 
 // ----------------------------------------------------------------------------
@@ -378,7 +455,7 @@ _internalComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
 
 template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
           typename TAlgorithm, typename TTracebackConfig>
-inline typename TraceBitMap_::TTraceValue
+inline typename TraceBitMap_<TScoreValue>::Type
 _doComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                 DPCell_<TScoreValue, AffineGaps> const & previousDiagonal,
                 DPCell_<TScoreValue, AffineGaps> const & previousHorizontal,
@@ -389,20 +466,27 @@ _doComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                 RecursionDirectionAll const &,
                 DPProfile_<TAlgorithm, AffineGaps, TTracebackConfig> const &)
 {
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<TScoreValue>::Type TTraceValue;
 
     // Now we have to find a smart version to solve this problem. Which is not as easy I would think.
-
-    activeCell._horizontalScore = _horizontalScoreOfCell(previousHorizontal) +
-                                        scoreGapExtendHorizontal(scoringScheme, seqHVal, seqVVal);
+    activeCell._horizontalScore = _horizontalScoreOfCell(previousHorizontal) + scoreGapExtendHorizontal(scoringScheme, seqHVal, seqVVal);
     TScoreValue tmpScore = _scoreOfCell(previousHorizontal) + scoreGapOpenHorizontal(scoringScheme, seqHVal, seqVVal);
-
-    TTraceValue tvGap = _internalComputeScore(activeCell, tmpScore, TraceBitMap_::HORIZONTAL, TraceBitMap_::HORIZONTAL_OPEN, TTracebackConfig(), RecursionDirectionHorizontal());
+    TTraceValue tvGap = _internalComputeScore(activeCell,
+                                              tmpScore,
+                                              TraceBitMap_<TScoreValue>::HORIZONTAL,
+                                              TraceBitMap_<TScoreValue>::HORIZONTAL_OPEN,
+                                              TTracebackConfig(),
+                                              RecursionDirectionHorizontal());
 
     // Now we can decide for the optimal score in horizontal score or not?
     activeCell._verticalScore = _verticalScoreOfCell(previousVertical) + scoreGapExtendVertical(scoringScheme, seqHVal, seqVVal);
     tmpScore = _scoreOfCell(previousVertical) + scoreGapOpenVertical(scoringScheme, seqHVal, seqVVal);
-    tvGap |= _internalComputeScore(activeCell, tmpScore, TraceBitMap_::VERTICAL, TraceBitMap_::VERTICAL_OPEN, TTracebackConfig(), RecursionDirectionVertical());
+    tvGap |= _internalComputeScore(activeCell,
+                                   tmpScore,
+                                   TraceBitMap_<TScoreValue>::VERTICAL,
+                                   TraceBitMap_<TScoreValue>::VERTICAL_OPEN,
+                                   TTracebackConfig(),
+                                   RecursionDirectionVertical());
 
     // Finds the maximum between the vertical and the horizontal matrix. Stores the flag for coming from a potential direction.
     TTraceValue tvMax = _internalComputeScore(activeCell, TTracebackConfig());  // Stores from where the maximal score comes.
@@ -416,7 +500,7 @@ _doComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
 
 template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
           typename TAlgorithm, typename TTracebackConfig>
-inline typename TraceBitMap_::TTraceValue
+inline typename TraceBitMap_<TScoreValue>::Type
 _doComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                 DPCell_<TScoreValue, AffineGaps> const & previousDiagonal,
                 DPCell_<TScoreValue, AffineGaps> const & previousHorizontal,
@@ -427,15 +511,24 @@ _doComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                 RecursionDirectionUpperDiagonal const &,
                 DPProfile_<TAlgorithm, AffineGaps, TTracebackConfig> const &)
 {
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
-    activeCell._horizontalScore = _horizontalScoreOfCell(previousHorizontal)
-                                         + scoreGapExtendHorizontal(scoringScheme, seqHVal, seqVVal);
+    typedef typename TraceBitMap_<TScoreValue>::Type TTraceValue;
 
+    activeCell._horizontalScore = _horizontalScoreOfCell(previousHorizontal) + scoreGapExtendHorizontal(scoringScheme, seqHVal, seqVVal);
     activeCell._verticalScore = DPCellDefaultInfinity<DPCell_<TScoreValue, AffineGaps> >::VALUE;
     TScoreValue tmpScore = _scoreOfCell(previousHorizontal) + scoreGapOpenHorizontal(scoringScheme, seqHVal, seqVVal);
-    TTraceValue tv = _internalComputeScore(activeCell, tmpScore, TraceBitMap_::HORIZONTAL, TraceBitMap_::HORIZONTAL_OPEN, TTracebackConfig(), RecursionDirectionHorizontal());
+    TTraceValue tv = _internalComputeScore(activeCell,
+                                           tmpScore,
+                                           TraceBitMap_<TScoreValue>::HORIZONTAL,
+                                           TraceBitMap_<TScoreValue>::HORIZONTAL_OPEN,
+                                           TTracebackConfig(),
+                                           RecursionDirectionHorizontal());
     tmpScore = _scoreOfCell(previousDiagonal) + score(scoringScheme, seqHVal, seqVVal);
-    return _internalComputeScore(activeCell, tmpScore, tv, TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX, TTracebackConfig(), RecursionDirectionDiagonal());
+    return _internalComputeScore(activeCell,
+                                 tmpScore,
+                                 tv,
+                                 TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX,
+                                 TTracebackConfig(),
+                                 RecursionDirectionDiagonal());
 }
 
 // ----------------------------------------------------------------------------
@@ -444,7 +537,7 @@ _doComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
 
 template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
           typename TAlgorithm, typename TTracebackConfig>
-inline typename TraceBitMap_::TTraceValue
+inline typename TraceBitMap_<TScoreValue>::Type
 _doComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                 DPCell_<TScoreValue, AffineGaps> const & previousDiagonal,
                 DPCell_<TScoreValue, AffineGaps> const & /*previousHorizontal*/,
@@ -455,19 +548,28 @@ _doComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                 RecursionDirectionLowerDiagonal const &,
                 DPProfile_<TAlgorithm, AffineGaps, TTracebackConfig> const &)
 {
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<TScoreValue>::Type TTraceValue;
 
-    activeCell._verticalScore = _verticalScoreOfCell(previousVertical) +
-                                        scoreGapExtendVertical(scoringScheme, seqHVal, seqVVal);
+    activeCell._verticalScore = _verticalScoreOfCell(previousVertical) + scoreGapExtendVertical(scoringScheme, seqHVal, seqVVal);
     TScoreValue tmpScore = _scoreOfCell(previousVertical) + scoreGapOpenVertical(scoringScheme, seqHVal, seqVVal);
 
     activeCell._horizontalScore = DPCellDefaultInfinity<DPCell_<TScoreValue, AffineGaps> >::VALUE;
     // This computes the difference between the vertical extend and vertical open.
-    TTraceValue tv = _internalComputeScore(activeCell, tmpScore, TraceBitMap_::VERTICAL, TraceBitMap_::VERTICAL_OPEN, TTracebackConfig(), RecursionDirectionVertical());
+    TTraceValue tv = _internalComputeScore(activeCell,
+                                           tmpScore,
+                                           TraceBitMap_<TScoreValue>::VERTICAL,
+                                           TraceBitMap_<TScoreValue>::VERTICAL_OPEN,
+                                           TTracebackConfig(),
+                                           RecursionDirectionVertical());
 
     // Up to here, activeCell stores the highest value of vertical or vertical open.
     tmpScore = _scoreOfCell(previousDiagonal) + score(scoringScheme, seqHVal, seqVVal);
-    return _internalComputeScore(activeCell, tmpScore, tv, TraceBitMap_::MAX_FROM_VERTICAL_MATRIX, TTracebackConfig(), RecursionDirectionDiagonal());  // Now we have this problem. How do we determine if the max comes from the vertical distance.
+    return _internalComputeScore(activeCell,
+                                 tmpScore,
+                                 tv,
+                                 TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX,
+                                 TTracebackConfig(),
+                                 RecursionDirectionDiagonal());  // Now we have this problem. How do we determine if the max comes from the vertical distance.
 }
 
 // ----------------------------------------------------------------------------
@@ -476,7 +578,7 @@ _doComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
 
 template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
           typename TAlgorithm, typename TTracebackConfig>
-inline typename TraceBitMap_::TTraceValue
+inline typename TraceBitMap_<TScoreValue>::Type
 _doComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                 DPCell_<TScoreValue, AffineGaps> const & /*previousDiagonal*/,
                 DPCell_<TScoreValue, AffineGaps> const & previousHorizontal,
@@ -487,12 +589,16 @@ _doComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                 RecursionDirectionHorizontal const &,
                 DPProfile_<TAlgorithm, AffineGaps, TTracebackConfig> const &)
 {
-    //typedef typename TraceBitMap_::TTraceValue TTraceValue;
     TScoreValue tmpGapOpenHorizontal = _scoreOfCell(previousHorizontal) + scoreGapOpenHorizontal(scoringScheme, seqHVal, seqVVal);
     activeCell._horizontalScore = _horizontalScoreOfCell(previousHorizontal) + scoreGapExtendHorizontal(scoringScheme, seqHVal, seqVVal);
 
     activeCell._verticalScore = DPCellDefaultInfinity<DPCell_<TScoreValue, AffineGaps> >::VALUE;
-    return _internalComputeScore(activeCell, tmpGapOpenHorizontal, TraceBitMap_::HORIZONTAL, TraceBitMap_::HORIZONTAL_OPEN, TTracebackConfig(), RecursionDirectionHorizontal()) | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
+    return _internalComputeScore(activeCell,
+                                tmpGapOpenHorizontal,
+                                TraceBitMap_<TScoreValue>::HORIZONTAL,
+                                TraceBitMap_<TScoreValue>::HORIZONTAL_OPEN,
+                                TTracebackConfig(),
+                                RecursionDirectionHorizontal()) | TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX;
 }
 
 // ----------------------------------------------------------------------------
@@ -501,7 +607,7 @@ _doComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
 
 template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
           typename TAlgorithm, typename TTracebackConfig>
-inline typename TraceBitMap_::TTraceValue
+inline typename TraceBitMap_<TScoreValue>::Type
 _doComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                 DPCell_<TScoreValue, AffineGaps> const & /*previousDiagonal*/,
                 DPCell_<TScoreValue, AffineGaps> const & /*previousHorizontal*/,
@@ -512,13 +618,17 @@ _doComputeScore(DPCell_<TScoreValue, AffineGaps> & activeCell,
                 RecursionDirectionVertical const &,
                 DPProfile_<TAlgorithm, AffineGaps, TTracebackConfig> const &)
 {
-    //typedef typename TraceBitMap_::TTraceValue TTraceValue;
     TScoreValue tmpGapOpenVertical = _scoreOfCell(previousVertical) + scoreGapOpenVertical(scoringScheme, seqHVal, seqVVal);
     activeCell._verticalScore = _verticalScoreOfCell(previousVertical) + scoreGapExtendVertical(scoringScheme, seqHVal, seqVVal);
 
     // Here we distinguish between vertical and vertical open.
     activeCell._horizontalScore = DPCellDefaultInfinity<DPCell_<TScoreValue, AffineGaps> >::VALUE;
-    return _internalComputeScore(activeCell, tmpGapOpenVertical, TraceBitMap_::VERTICAL, TraceBitMap_::VERTICAL_OPEN, TTracebackConfig(), RecursionDirectionVertical()) | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
+    return _internalComputeScore(activeCell,
+                                 tmpGapOpenVertical,
+                                 TraceBitMap_<TScoreValue>::VERTICAL,
+                                 TraceBitMap_<TScoreValue>::VERTICAL_OPEN,
+                                 TTracebackConfig(),
+                                 RecursionDirectionVertical()) | TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX;
 }
 
 }  // namespace seqan
diff --git a/include/seqan/align/dp_formula_dynamic.h b/include/seqan/align/dp_formula_dynamic.h
index be4a79c..1c8fe8b 100644
--- a/include/seqan/align/dp_formula_dynamic.h
+++ b/include/seqan/align/dp_formula_dynamic.h
@@ -62,7 +62,7 @@ namespace seqan {
 // ----------------------------------------------------------------------------
 
 template <typename TScoreValue, typename TTraceValueL, typename TTraceValueGap>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                       TScoreValue const & diagCompare,
                       TTraceValueL,
@@ -74,13 +74,28 @@ _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
     {
         activeCell._score = diagCompare;
         setGapExtension(activeCell, False(), False());
-        return TraceBitMap_::NONE;
+        return TraceBitMap_<TScoreValue>::NONE;
     }
-    return TraceBitMap_::NONE;
+    return TraceBitMap_<TScoreValue>::NONE;
+}
+
+template <typename TScoreValue, typename TTraceValueL, typename TTraceValueGap>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
+                      TScoreValue const & diagCompare,
+                      TTraceValueL,
+                      TTraceValueGap,
+                      TracebackOff const &,
+                      RecursionDirectionDiagonal const &)
+{
+    TScoreValue cmp = cmpGt(diagCompare, _scoreOfCell(activeCell));
+    activeCell._score = blend(activeCell._score, diagCompare, cmp);
+    setGapExtension(activeCell, False(), False(), cmp);
+    return TraceBitMap_<TScoreValue>::NONE;
 }
 
 template <typename TScoreValue, typename TTraceValueL, typename TTraceValueGap, typename TGapsPlacement>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                       TScoreValue const & diagCompare,
                       TTraceValueL leftTrace,
@@ -92,13 +107,30 @@ _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
     {
         activeCell._score = diagCompare;
         setGapExtension(activeCell, False(), False());
-        return TraceBitMap_::DIAGONAL | leftTrace;
+        return TraceBitMap_<TScoreValue>::DIAGONAL | leftTrace;
     }
     return leftTrace | gapTrace;
 }
 
 template <typename TScoreValue, typename TTraceValueL, typename TTraceValueGap, typename TGapsPlacement>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
+                      TScoreValue const & diagCompare,
+                      TTraceValueL const & leftTrace,
+                      TTraceValueGap const & gapTrace,
+                      TracebackOn<TracebackConfig_<SingleTrace, TGapsPlacement> > const &,
+                      RecursionDirectionDiagonal const &)
+{
+    TScoreValue cmp = cmpGt(_scoreOfCell(activeCell), diagCompare);
+    activeCell._score = blend(diagCompare, activeCell._score, cmp);
+    setGapExtension(activeCell, False(), False(), cmp);
+    return blend(TraceBitMap_<TScoreValue>::DIAGONAL | leftTrace,
+                 leftTrace | gapTrace,
+                 cmp);
+}
+
+template <typename TScoreValue, typename TTraceValueL, typename TTraceValueGap, typename TGapsPlacement>
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                       TScoreValue const & diagCompare,
                       TTraceValueL leftTrace,
@@ -110,20 +142,39 @@ _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
     {
         activeCell._score = diagCompare;  // Maximal score comes from diagonal.
         setGapExtension(activeCell, False(), False());
-        return TraceBitMap_::DIAGONAL | leftTrace;  // Return trace for Diagonal.
+        return TraceBitMap_<TScoreValue>::DIAGONAL | leftTrace;  // Return trace for Diagonal.
     }
     if (_scoreOfCell(activeCell) == diagCompare)  // Maximal score comes from previous computed directions and diagonal.
-        return leftTrace | TraceBitMap_::DIAGONAL | gapTrace;  // Return all directions inclusively the flag indicating max from gap.
+        return leftTrace | TraceBitMap_<TScoreValue>::DIAGONAL | gapTrace;  // Return all directions inclusively the flag indicating max from gap.
 
     return leftTrace | gapTrace;  // Maximum comes from gap. Return gap value inclusively the flag indicating max from gap.
 }
 
+template <typename TScoreValue, typename TTraceValueL, typename TTraceValueGap, typename TGapsPlacement>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
+                      TScoreValue const & diagCompare,
+                      TTraceValueL const & leftTrace,
+                      TTraceValueGap const & gapTrace,
+                      TracebackOn<TracebackConfig_<CompleteTrace, TGapsPlacement> >  const &,
+                      RecursionDirectionDiagonal const &)
+{
+    TScoreValue cmp = cmpGt(diagCompare, _scoreOfCell(activeCell));
+    activeCell._score = blend(activeCell._score, diagCompare, cmp);
+    setGapExtension(activeCell, False(), False(), cmp);
+    return blend(blend(leftTrace | gapTrace,
+                       TraceBitMap_<TScoreValue>::DIAGONAL | leftTrace,
+                       cmp),
+                 leftTrace | TraceBitMap_<TScoreValue>::DIAGONAL | gapTrace,
+                 cmpEq(_scoreOfCell(activeCell), diagCompare));
+}
+
 // ----------------------------------------------------------------------------
 // Function _internalComputeScore    [RecursionDirectionHorizontal, DynamicGaps]
 // ----------------------------------------------------------------------------
 
 template <typename TScoreValue, typename TValueH, typename TValueV, typename TScore>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                       DPCell_<TScoreValue, DynamicGaps> const & prevCell,
                       TValueH const & valH,
@@ -134,11 +185,26 @@ _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
 {
     if(!isGapExtension(prevCell, DynamicGapExtensionHorizontal()))
         activeCell._score = _scoreOfCell(prevCell) + scoreGapOpenHorizontal(score, valH, valV);
-    return TraceBitMap_::NONE;
+    return TraceBitMap_<TScoreValue>::NONE;
+}
+
+template <typename TScoreValue, typename TValueH, typename TValueV, typename TScore>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
+                      DPCell_<TScoreValue, DynamicGaps> const & prevCell,
+                      TValueH const & valH,
+                      TValueV const & valV,
+                      TScore const & score,
+                      TracebackOff const &,
+                      RecursionDirectionHorizontal const &)
+{
+    activeCell._score = blend(_scoreOfCell(prevCell) + scoreGapOpenHorizontal(score, valH, valV), activeCell._score,
+                              isGapExtension(prevCell, DynamicGapExtensionHorizontal()));
+    return TraceBitMap_<TScoreValue>::NONE;
 }
 
 template <typename TScoreValue, typename TValueH, typename TValueV, typename TScore, typename TTraceConfig>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                       DPCell_<TScoreValue, DynamicGaps> const & prevCell,
                       TValueH const & valH,
@@ -150,9 +216,24 @@ _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
     if (!isGapExtension(prevCell, DynamicGapExtensionHorizontal()))
     {
         activeCell._score = _scoreOfCell(prevCell) + scoreGapOpenHorizontal(score, valH, valV);
-        return TraceBitMap_::HORIZONTAL_OPEN;
+        return TraceBitMap_<TScoreValue>::HORIZONTAL_OPEN;
     }
-    return TraceBitMap_::HORIZONTAL;
+    return TraceBitMap_<TScoreValue>::HORIZONTAL;
+}
+
+template <typename TScoreValue, typename TValueH, typename TValueV, typename TScore, typename TTraceConfig>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
+                      DPCell_<TScoreValue, DynamicGaps> const & prevCell,
+                      TValueH const & valH,
+                      TValueV const & valV,
+                      TScore const & score,
+                      TracebackOn<TTraceConfig> const &,
+                      RecursionDirectionHorizontal const &)
+{
+    activeCell._score = blend(_scoreOfCell(prevCell) + scoreGapOpenHorizontal(score, valH, valV), activeCell._score,
+                              isGapExtension(prevCell, DynamicGapExtensionHorizontal()));
+    return TraceBitMap_<TScoreValue>::HORIZONTAL;
 }
 
 // ----------------------------------------------------------------------------
@@ -160,7 +241,7 @@ _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
 // ----------------------------------------------------------------------------
 
 template <typename TScoreValue, typename TValueH, typename TValueV, typename TScore>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                       DPCell_<TScoreValue, DynamicGaps> const & prevCell,
                       TValueH const & valH,
@@ -171,11 +252,26 @@ _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
 {
     if(!isGapExtension(prevCell, DynamicGapExtensionVertical()))
         activeCell._score = _scoreOfCell(prevCell) + scoreGapOpenVertical(score, valH, valV);
-    return TraceBitMap_::NONE;
+    return TraceBitMap_<TScoreValue>::NONE;
+}
+
+template <typename TScoreValue, typename TValueH, typename TValueV, typename TScore>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
+                      DPCell_<TScoreValue, DynamicGaps> const & prevCell,
+                      TValueH const & valH,
+                      TValueV const & valV,
+                      TScore const & score,
+                      TracebackOff const &,
+                      RecursionDirectionVertical const &)
+{
+    activeCell._score = blend(_scoreOfCell(prevCell) + scoreGapOpenVertical(score, valH, valV), activeCell._score,
+                              isGapExtension(prevCell, DynamicGapExtensionVertical()));
+    return TraceBitMap_<TScoreValue>::NONE;
 }
 
 template <typename TScoreValue, typename TValueH, typename TValueV, typename TScore, typename TTraceConfig>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                       DPCell_<TScoreValue, DynamicGaps> const & prevCell,
                       TValueH const & valH,
@@ -187,9 +283,26 @@ _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
     if (!isGapExtension(prevCell, DynamicGapExtensionVertical()))
     {
         activeCell._score = _scoreOfCell(prevCell) + scoreGapOpenVertical(score, valH, valV);
-        return TraceBitMap_::VERTICAL_OPEN;
+        return TraceBitMap_<TScoreValue>::VERTICAL_OPEN;
     }
-    return TraceBitMap_::VERTICAL;
+    return TraceBitMap_<TScoreValue>::VERTICAL;
+}
+
+template <typename TScoreValue, typename TValueH, typename TValueV, typename TScore, typename TTraceConfig>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
+                      DPCell_<TScoreValue, DynamicGaps> const & prevCell,
+                      TValueH const & valH,
+                      TValueV const & valV,
+                      TScore const & score,
+                      TracebackOn<TTraceConfig> const &,
+                      RecursionDirectionVertical const &)
+{
+    TScoreValue cmp = isGapExtension(prevCell, DynamicGapExtensionVertical());
+    activeCell._score = blend(_scoreOfCell(prevCell) + scoreGapOpenVertical(score, valH, valV), activeCell._score, cmp);
+    return blend(TraceBitMap_<TScoreValue>::VERTICAL_OPEN,
+                 TraceBitMap_<TScoreValue>::VERTICAL,
+                 cmp);
 }
 
 // ----------------------------------------------------------------------------
@@ -197,7 +310,7 @@ _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
 // ----------------------------------------------------------------------------
 
 template <typename TScoreValue>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                       TScoreValue const & horizontalComp,
                       TracebackOff const &)
@@ -206,14 +319,27 @@ _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
     {
         activeCell._score = horizontalComp;
         setGapExtension(activeCell, False(), True());
-        return TraceBitMap_::NONE;
+        return TraceBitMap_<TScoreValue>::NONE;
     }
     setGapExtension(activeCell, True(), False());
-    return TraceBitMap_::NONE;
+    return TraceBitMap_<TScoreValue>::NONE;
+}
+
+template <typename TScoreValue>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
+                      TScoreValue const & horizontalComp,
+                      TracebackOff const &)
+{
+    TScoreValue cmp = cmpGt(horizontalComp, _scoreOfCell(activeCell));
+    activeCell._score = blend(activeCell._score, horizontalComp, cmp);
+    setGapExtension(activeCell, False(), True(), cmp);
+    setGapExtension(activeCell, True(), False(), cmpEq(cmp, TraceBitMap_<TScoreValue>::NONE));
+    return TraceBitMap_<TScoreValue>::NONE;
 }
 
 template <typename TScoreValue, typename TGapsPlacement>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                       TScoreValue const & horizontalComp,
                       TracebackOn<TracebackConfig_<SingleTrace, TGapsPlacement> >  const &)
@@ -222,14 +348,29 @@ _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
     {
         activeCell._score = horizontalComp;
         setGapExtension(activeCell, False(), True());
-        return TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
+        return TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX;
     }
     setGapExtension(activeCell, True(), False());
-    return TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
+    return TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX;
+}
+
+template <typename TScoreValue, typename TGapsPlacement>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
+                      TScoreValue const & horizontalComp,
+                      TracebackOn<TracebackConfig_<SingleTrace, TGapsPlacement> >  const &)
+{
+    TScoreValue cmp = cmpGt(horizontalComp, _scoreOfCell(activeCell));
+    activeCell._score = blend(activeCell._score, horizontalComp, cmp);
+    setGapExtension(activeCell, False(), True(), cmp);
+    setGapExtension(activeCell, True(), False(), cmpEq(cmp, TraceBitMap_<TScoreValue>::NONE));
+    return blend(TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX,
+                 TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX,
+                 cmp);
 }
 
 template <typename TScoreValue, typename TGapsPlacement>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                       TScoreValue const & horizontalComp,
                       TracebackOn<TracebackConfig_<CompleteTrace, TGapsPlacement> >  const &)
@@ -238,15 +379,37 @@ _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
     {
         setGapExtension(activeCell, False(), True());
         activeCell._score = horizontalComp;
-        return TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
+        return TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX;
     }
     if (_scoreOfCell(activeCell) == horizontalComp)
     {
         setGapExtension(activeCell, True(), True());
-        return TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
+        return TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX;
     }
     setGapExtension(activeCell, True(), False());
-    return TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
+    return TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX;
+}
+
+template <typename TScoreValue, typename TGapsPlacement>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
+                      TScoreValue const & horizontalComp,
+                      TracebackOn<TracebackConfig_<CompleteTrace, TGapsPlacement> >  const &)
+{
+    TScoreValue cmpG = cmpGt(horizontalComp, _scoreOfCell(activeCell));
+    TScoreValue cmpE = cmpEq(horizontalComp, _scoreOfCell(activeCell));
+    setGapExtension(activeCell, True(), False(), createVector<TScoreValue>(-1));
+    setGapExtension(activeCell, False(), True(), cmpG);
+    setGapExtension(activeCell, True(), True(), cmpE);
+
+    TScoreValue result = TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX;
+    result = blend(result,
+                   TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX,
+                   cmpG);
+    return blend(result,
+                 TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX
+                    | TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX,
+                 cmpE);
 }
 
 // ----------------------------------------------------------------------------
@@ -255,7 +418,39 @@ _internalComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
 
 template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
           typename TAlgorithm, typename TTracebackConfig>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
+_doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
+                DPCell_<TScoreValue, DynamicGaps> const & previousDiagonal,
+                DPCell_<TScoreValue, DynamicGaps> const & previousHorizontal,
+                DPCell_<TScoreValue, DynamicGaps> const & previousVertical,
+                TSequenceHValue const & seqHVal,
+                TSequenceVValue const & seqVVal,
+                TScoringScheme const & scoringScheme,
+                RecursionDirectionAll const &,
+                DPProfile_<TAlgorithm, DynamicGaps, TTracebackConfig> const &)
+{
+    typedef typename TraceBitMap_<TScoreValue>::Type TTraceValue;
+    typedef typename std::decay<decltype(activeCell)>::type TCell;
+
+    // Compute best alignment from either horizontal open or extension.
+    TCell tmpScore(_scoreOfCell(previousHorizontal) + scoreGapExtendHorizontal(scoringScheme, seqHVal, seqVVal));
+    TTraceValue tvGap = _internalComputeScore(tmpScore, previousHorizontal, seqHVal, seqVVal, scoringScheme,
+                                              TTracebackConfig(), RecursionDirectionHorizontal());
+
+    // Compute best alignment between vertical and vertical open gap.
+    activeCell._score = _scoreOfCell(previousVertical) + scoreGapExtendVertical(scoringScheme, seqHVal, seqVVal);
+    tvGap |= _internalComputeScore(activeCell, previousVertical, seqHVal, seqVVal, scoringScheme,
+                                   TTracebackConfig(), RecursionDirectionVertical());
+
+    // Finds the maximum between the vertical and the horizontal matrix. Stores the flag for coming from a potential direction.
+    TTraceValue tvMax = _internalComputeScore(activeCell, tmpScore._score, TTracebackConfig());  // Stores from where the maximal score comes.
+    tmpScore._score = _scoreOfCell(previousDiagonal) + score(scoringScheme, seqHVal, seqVVal);
+    return _internalComputeScore(activeCell, tmpScore._score, tvGap, tvMax, TTracebackConfig(), RecursionDirectionDiagonal());
+}
+
+template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
+          typename TAlgorithm, typename TTracebackConfig>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
 _doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                 DPCell_<TScoreValue, DynamicGaps> const & previousDiagonal,
                 DPCell_<TScoreValue, DynamicGaps> const & previousHorizontal,
@@ -266,10 +461,12 @@ _doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                 RecursionDirectionAll const &,
                 DPProfile_<TAlgorithm, DynamicGaps, TTracebackConfig> const &)
 {
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<TScoreValue>::Type TTraceValue;
+    typedef typename std::decay<decltype(activeCell)>::type TCell;
 
     // Compute best alignment from either horizontal open or extension.
-    DPCell_<TScoreValue, DynamicGaps> tmpScore = _scoreOfCell(previousHorizontal) + scoreGapExtendHorizontal(scoringScheme, seqHVal, seqVVal);
+    TCell tmpScore = {_scoreOfCell(previousHorizontal) + scoreGapExtendHorizontal(scoringScheme, seqHVal, seqVVal),
+                      typename TCell::TFlagMaskType()};
     TTraceValue tvGap = _internalComputeScore(tmpScore, previousHorizontal, seqHVal, seqVVal, scoringScheme,
                                               TTracebackConfig(), RecursionDirectionHorizontal());
 
@@ -290,7 +487,7 @@ _doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
 
 template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
           typename TAlgorithm, typename TTracebackConfig>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                 DPCell_<TScoreValue, DynamicGaps> const & previousDiagonal,
                 DPCell_<TScoreValue, DynamicGaps> const & previousHorizontal,
@@ -301,7 +498,7 @@ _doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                 RecursionDirectionUpperDiagonal const &,
                 DPProfile_<TAlgorithm, DynamicGaps, TTracebackConfig> const &)
 {
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<TScoreValue>::Type TTraceValue;
 
     // This computes the difference between the horizontal extend and horizontal open.
     activeCell._score = _scoreOfCell(previousHorizontal) + scoreGapExtendHorizontal(scoringScheme, seqHVal, seqVVal);
@@ -310,8 +507,39 @@ _doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
 
     setGapExtension(activeCell, False(), True());
     TScoreValue tmpScore = _scoreOfCell(previousDiagonal) + score(scoringScheme, seqHVal, seqVVal);
-    return _internalComputeScore(activeCell, tmpScore, tv, TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX,
-                                 TTracebackConfig(), RecursionDirectionDiagonal());
+    return _internalComputeScore(activeCell, tmpScore, tv, TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX,
+                                 TTracebackConfig(),RecursionDirectionDiagonal());
+}
+
+
+template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
+          typename TAlgorithm, typename TTracebackConfig>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
+                DPCell_<TScoreValue, DynamicGaps> const & previousDiagonal,
+                DPCell_<TScoreValue, DynamicGaps> const & previousHorizontal,
+                DPCell_<TScoreValue, DynamicGaps> const & /*previousVertical*/,
+                TSequenceHValue const & seqHVal,
+                TSequenceVValue const & seqVVal,
+                TScoringScheme const & scoringScheme,
+                RecursionDirectionUpperDiagonal const &,
+                DPProfile_<TAlgorithm, DynamicGaps, TTracebackConfig> const &)
+{
+    typedef typename TraceBitMap_<TScoreValue>::Type TTraceValue;
+
+    // This computes the difference between the horizontal extend and horizontal open.
+    activeCell._score = _scoreOfCell(previousHorizontal) + scoreGapExtendHorizontal(scoringScheme, seqHVal, seqVVal);
+    TTraceValue tv = _internalComputeScore(activeCell, previousHorizontal, seqHVal, seqVVal, scoringScheme,
+                                           TTracebackConfig(), RecursionDirectionHorizontal());
+
+    setGapExtension(activeCell, False(), True(), createVector<TScoreValue>(-1));
+    TScoreValue tmpScore = _scoreOfCell(previousDiagonal) + score(scoringScheme, seqHVal, seqVVal);
+    return _internalComputeScore(activeCell,
+                                 tmpScore,
+                                 tv,
+                                 TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX,
+                                 TTracebackConfig(),
+                                 RecursionDirectionDiagonal());
 }
 
 // ----------------------------------------------------------------------------
@@ -320,7 +548,7 @@ _doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
 
 template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
           typename TAlgorithm, typename TTracebackConfig>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                 DPCell_<TScoreValue, DynamicGaps> const & previousDiagonal,
                 DPCell_<TScoreValue, DynamicGaps> const & /*previousHorizontal*/,
@@ -331,7 +559,7 @@ _doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                 RecursionDirectionLowerDiagonal const &,
                 DPProfile_<TAlgorithm, DynamicGaps, TTracebackConfig> const &)
 {
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<TScoreValue>::Type TTraceValue;
 
     // This computes the difference between the vertical extend and vertical open.
     activeCell._score = _scoreOfCell(previousVertical) + scoreGapExtendVertical(scoringScheme, seqHVal, seqVVal);
@@ -339,17 +567,46 @@ _doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                                            TTracebackConfig(), RecursionDirectionVertical());
     setGapExtension(activeCell, True(), False());
     TScoreValue tmpScore = _scoreOfCell(previousDiagonal) + score(scoringScheme, seqHVal, seqVVal);
-    return _internalComputeScore(activeCell, tmpScore, tv, TraceBitMap_::MAX_FROM_VERTICAL_MATRIX,
+    return _internalComputeScore(activeCell, tmpScore, tv, TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX,
                                  TTracebackConfig(), RecursionDirectionDiagonal());
 }
 
+template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
+          typename TAlgorithm, typename TTracebackConfig>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
+                DPCell_<TScoreValue, DynamicGaps> const & previousDiagonal,
+                DPCell_<TScoreValue, DynamicGaps> const & /*previousHorizontal*/,
+                DPCell_<TScoreValue, DynamicGaps> const & previousVertical,
+                TSequenceHValue const & seqHVal,
+                TSequenceVValue const & seqVVal,
+                TScoringScheme const & scoringScheme,
+                RecursionDirectionLowerDiagonal const &,
+                DPProfile_<TAlgorithm, DynamicGaps, TTracebackConfig> const &)
+{
+    typedef typename TraceBitMap_<TScoreValue>::Type TTraceValue;
+
+    // This computes the difference between the vertical extend and vertical open.
+    activeCell._score = _scoreOfCell(previousVertical) + scoreGapExtendVertical(scoringScheme, seqHVal, seqVVal);
+    TTraceValue tv = _internalComputeScore(activeCell, previousVertical, seqHVal, seqVVal, scoringScheme,
+                                           TTracebackConfig(), RecursionDirectionVertical());
+    setGapExtension(activeCell, True(), False(), createVector<TScoreValue>(-1));
+    TScoreValue tmpScore = _scoreOfCell(previousDiagonal) + score(scoringScheme, seqHVal, seqVVal);
+    return _internalComputeScore(activeCell,
+                                 tmpScore,
+                                 tv,
+                                 TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX,
+                                 TTracebackConfig(),
+                                 RecursionDirectionDiagonal());
+}
+
 // ----------------------------------------------------------------------------
 // Function _doComputeScore                      [RecursionHorizontalDirection]
 // ----------------------------------------------------------------------------
 
 template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
           typename TAlgorithm, typename TTracebackConfig>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                 DPCell_<TScoreValue, DynamicGaps> const & /*previousDiagonal*/,
                 DPCell_<TScoreValue, DynamicGaps> const & previousHorizontal,
@@ -363,7 +620,26 @@ _doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
     activeCell._score = _scoreOfCell(previousHorizontal) + scoreGapExtendHorizontal(scoringScheme, seqHVal, seqVVal);
     setGapExtension(activeCell, False(), True());
     return _internalComputeScore(activeCell, previousHorizontal, seqHVal, seqVVal, scoringScheme,
-                                 TTracebackConfig(), tag) | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
+                                 TTracebackConfig(), tag) | TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX;
+}
+
+template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
+          typename TAlgorithm, typename TTracebackConfig>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
+                DPCell_<TScoreValue, DynamicGaps> const & /*previousDiagonal*/,
+                DPCell_<TScoreValue, DynamicGaps> const & previousHorizontal,
+                DPCell_<TScoreValue, DynamicGaps> const & /*previousVertical*/,
+                TSequenceHValue const & seqHVal,
+                TSequenceVValue const & seqVVal,
+                TScoringScheme const & scoringScheme,
+                RecursionDirectionHorizontal const & tag,
+                DPProfile_<TAlgorithm, DynamicGaps, TTracebackConfig> const &)
+{
+    activeCell._score = _scoreOfCell(previousHorizontal) + scoreGapExtendHorizontal(scoringScheme, seqHVal, seqVVal);
+    setGapExtension(activeCell, False(), True(), createVector<TScoreValue>(-1));
+    return _internalComputeScore(activeCell, previousHorizontal, seqHVal, seqVVal, scoringScheme,
+                                 TTracebackConfig(), tag) | TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX;
 }
 
 // ----------------------------------------------------------------------------
@@ -372,7 +648,7 @@ _doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
 
 template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
           typename TAlgorithm, typename TTracebackConfig>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
                 DPCell_<TScoreValue, DynamicGaps> const & /*previousDiagonal*/,
                 DPCell_<TScoreValue, DynamicGaps> const & /*previousHorizontal*/,
@@ -386,7 +662,26 @@ _doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
     activeCell._score = _scoreOfCell(previousVertical) + scoreGapExtendVertical(scoringScheme, seqHVal, seqVVal);
     setGapExtension(activeCell, True(), False());
     return _internalComputeScore(activeCell, previousVertical, seqHVal, seqVVal, scoringScheme,
-                                 TTracebackConfig(), tag) | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
+                                 TTracebackConfig(), tag) | TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX;
+}
+
+template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
+          typename TAlgorithm, typename TTracebackConfig>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_doComputeScore(DPCell_<TScoreValue, DynamicGaps> & activeCell,
+                DPCell_<TScoreValue, DynamicGaps> const & /*previousDiagonal*/,
+                DPCell_<TScoreValue, DynamicGaps> const & /*previousHorizontal*/,
+                DPCell_<TScoreValue, DynamicGaps> const & previousVertical,
+                TSequenceHValue const & seqHVal,
+                TSequenceVValue const & seqVVal,
+                TScoringScheme const & scoringScheme,
+                RecursionDirectionVertical const & tag,
+                DPProfile_<TAlgorithm, DynamicGaps, TTracebackConfig> const &)
+{
+    activeCell._score = _scoreOfCell(previousVertical) + scoreGapExtendVertical(scoringScheme, seqHVal, seqVVal);
+    setGapExtension(activeCell, True(), False(), createVector<TScoreValue>(-1));
+    return _internalComputeScore(activeCell, previousVertical, seqHVal, seqVVal, scoringScheme,
+                                 TTracebackConfig(), tag) | TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX;
 }
 
 }  // namespace seqan
diff --git a/include/seqan/align/dp_formula_linear.h b/include/seqan/align/dp_formula_linear.h
index b2d3384..45ed936 100644
--- a/include/seqan/align/dp_formula_linear.h
+++ b/include/seqan/align/dp_formula_linear.h
@@ -56,68 +56,11 @@ namespace seqan {
 // ============================================================================
 
 // ----------------------------------------------------------------------------
-// Function _computeTraceLinear                        [RecursionDirectionAll]
-// ----------------------------------------------------------------------------
-
-template <typename TScoreValue>
-inline TraceBitMap_::TTraceValue
-_computeTraceLinear(TScoreValue const & globalMax,
-                    TScoreValue const & diagScore,
-                    TScoreValue const & horiScore,
-                    TScoreValue const & vertiScore,
-                    RecursionDirectionAll const &)
-{
-    typename TraceBitMap_::TTraceValue traceValue(TraceBitMap_::NONE);
-
-    _conditionalOrOnEquality(traceValue, globalMax, diagScore, TraceBitMap_::DIAGONAL);
-    _conditionalOrOnEquality(traceValue, globalMax, horiScore, TraceBitMap_::HORIZONTAL);
-    _conditionalOrOnEquality(traceValue, globalMax, vertiScore, TraceBitMap_::VERTICAL);
-    return traceValue;
-}
-
-// ----------------------------------------------------------------------------
-// Function _computeTraceLinear              [RecursionDirectionUpperDiagonal]
-// ----------------------------------------------------------------------------
-
-template <typename TScoreValue>
-inline TraceBitMap_::TTraceValue
-_computeTraceLinear(TScoreValue const & globalMax,
-                    TScoreValue const & diagScore,
-                    TScoreValue const & horiScore,
-                    TScoreValue const &,
-                    RecursionDirectionUpperDiagonal const &)
-{
-    typename TraceBitMap_::TTraceValue traceValue(TraceBitMap_::NONE);
-
-    _conditionalOrOnEquality(traceValue, globalMax, diagScore, TraceBitMap_::DIAGONAL);
-    _conditionalOrOnEquality(traceValue, globalMax, horiScore, TraceBitMap_::HORIZONTAL);
-    return traceValue;
-}
-
-// ----------------------------------------------------------------------------
-// Function _computeTraceLinear              [RecursionDirectionLowerDiagonal]
-// ----------------------------------------------------------------------------
-
-template <typename TScoreValue>
-inline TraceBitMap_::TTraceValue
-_computeTraceLinear(TScoreValue const & globalMax,
-                    TScoreValue const & diagScore,
-                    TScoreValue const &,
-                    TScoreValue const & vertiScore,
-                    RecursionDirectionLowerDiagonal const &)
-{
-    typename TraceBitMap_::TTraceValue traceValue(TraceBitMap_::NONE);
-    _conditionalOrOnEquality(traceValue, globalMax, diagScore, TraceBitMap_::DIAGONAL);
-    _conditionalOrOnEquality(traceValue, globalMax, vertiScore, TraceBitMap_::VERTICAL);
-    return traceValue;
-}
-
-// ----------------------------------------------------------------------------
 // Function _internalComputeScore()
 // ----------------------------------------------------------------------------
 
 template <typename TScoreValue, typename TTraceValueL, typename TTraceValueR>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
                       TScoreValue const & rightCompare,
                       TTraceValueL,
@@ -126,11 +69,24 @@ _internalComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
 {
     if (activeCell._score < rightCompare)
         activeCell._score = rightCompare;
-    return TraceBitMap_::NONE;
+    return TraceBitMap_<TScoreValue>::NONE;
+}
+
+template <typename TScoreValue, typename TTraceValueL, typename TTraceValueR>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
+                      TScoreValue const & rightCompare,
+                      TTraceValueL,
+                      TTraceValueR,
+                      TracebackOff const &)
+{
+    TScoreValue cmp = cmpGt(rightCompare, activeCell._score);
+    activeCell._score = blend(activeCell._score, rightCompare, cmp);
+    return TraceBitMap_<TScoreValue>::NONE;
 }
 
 template <typename TScoreValue, typename TTraceValueL, typename TTraceValueR, typename TGapsPlacement>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
                       TScoreValue const & rightCompare,
                       TTraceValueL leftTrace,
@@ -146,21 +102,48 @@ _internalComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
 }
 
 template <typename TScoreValue, typename TTraceValueL, typename TTraceValueR, typename TGapsPlacement>
-inline typename TraceBitMap_::TTraceValue
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
+                      TScoreValue const & rightCompare,
+                      TTraceValueL const & leftTrace,
+                      TTraceValueR const & rightTrace,
+                      TracebackOn<TracebackConfig_<SingleTrace, TGapsPlacement> > const &)
+{
+    TScoreValue cmp = cmpGt(rightCompare, activeCell._score);
+    activeCell._score = blend(activeCell._score, rightCompare, cmp);
+    return blend(leftTrace, rightTrace, cmp);
+}
+
+template <typename TScoreValue, typename TTraceValueL, typename TTraceValueR, typename TGapsPlacement>
+    inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TScoreValue> > >, typename TraceBitMap_<TScoreValue>::Type)
 _internalComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
                       TScoreValue const & rightCompare,
                       TTraceValueL leftTrace,
                       TTraceValueR rightTrace,
                       TracebackOn<TracebackConfig_<CompleteTrace, TGapsPlacement> > const &)
 {
-    if (activeCell._score <= rightCompare)
+    if (activeCell._score < rightCompare)
     {
-        if (activeCell._score == rightCompare)
-            return leftTrace | rightTrace;
         activeCell._score = rightCompare;
         return rightTrace;
     }
-    return leftTrace;
+    return (activeCell._score == rightCompare) ? (rightTrace | leftTrace) : (leftTrace);
+}
+
+template <typename TScoreValue, typename TTraceValueL, typename TTraceValueR, typename TGapsPlacement>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TScoreValue> >, typename TraceBitMap_<TScoreValue>::Type)
+_internalComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
+                      TScoreValue const & rightCompare,
+                      TTraceValueL const & leftTrace,
+                      TTraceValueR const & rightTrace,
+                      TracebackOn<TracebackConfig_<CompleteTrace, TGapsPlacement> > const &)
+{
+    // Check for greater values.
+    TScoreValue cmp = cmpGt(activeCell._score, rightCompare);  // cmp greater
+    activeCell._score = blend(rightCompare, activeCell._score, cmp);  // activeCell._score
+
+    // Check for equality.
+    return blend(blend(rightTrace, leftTrace, cmp), leftTrace | rightTrace, cmpEq(rightCompare, activeCell._score));
 }
 
 // ----------------------------------------------------------------------------
@@ -169,7 +152,7 @@ _internalComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
 
 template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
           typename TAlgorithm, typename TTracebackConfig>
-inline typename TraceBitMap_::TTraceValue
+inline typename TraceBitMap_<TScoreValue>::Type
 _doComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
                 DPCell_<TScoreValue, LinearGaps> const & previousDiagonal,
                 DPCell_<TScoreValue, LinearGaps> const & previousHorizontal,
@@ -180,14 +163,22 @@ _doComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
                 RecursionDirectionAll const &,
                 DPProfile_<TAlgorithm, LinearGaps, TTracebackConfig> const &)
 {
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<TScoreValue>::Type TTraceValue;
     activeCell._score = _scoreOfCell(previousDiagonal) + score(scoringScheme, seqHVal, seqVVal);
 
     TScoreValue tmpScore = _scoreOfCell(previousVertical) + scoreGapExtendVertical(scoringScheme, seqHVal, seqVVal);
 
-    TTraceValue tv = _internalComputeScore(activeCell, tmpScore, TraceBitMap_::DIAGONAL, TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX, TTracebackConfig());
+    TTraceValue tv = _internalComputeScore(activeCell,
+                                           tmpScore,
+                                           TraceBitMap_<TScoreValue>::DIAGONAL,
+                                           TraceBitMap_<TScoreValue>::VERTICAL | TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX,
+                                           TTracebackConfig());
     tmpScore = _scoreOfCell(previousHorizontal) + scoreGapExtendHorizontal(scoringScheme, seqHVal, seqVVal);
-    return _internalComputeScore(activeCell, tmpScore, tv, TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX, TTracebackConfig());
+    return _internalComputeScore(activeCell,
+                                 tmpScore,
+                                 tv,
+                                 TraceBitMap_<TScoreValue>::HORIZONTAL | TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX,
+                                 TTracebackConfig());
 }
 
 // ----------------------------------------------------------------------------
@@ -196,7 +187,7 @@ _doComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
 
 template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
           typename TAlgorithm, typename TTracebackConfig>
-inline typename TraceBitMap_::TTraceValue
+inline typename TraceBitMap_<TScoreValue>::Type
 _doComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
                 DPCell_<TScoreValue, LinearGaps> const & previousDiagonal,
                 DPCell_<TScoreValue, LinearGaps> const & previousHorizontal,
@@ -208,10 +199,12 @@ _doComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
                 DPProfile_<TAlgorithm, LinearGaps, TTracebackConfig> const &)
 {
     activeCell._score = _scoreOfCell(previousDiagonal) + score(scoringScheme, seqHVal, seqVVal);
-    TScoreValue tmpScore = _scoreOfCell(previousHorizontal)
-                          + scoreGapExtendHorizontal(scoringScheme, seqHVal, seqVVal);
-
-    return _internalComputeScore(activeCell, tmpScore, TraceBitMap_::DIAGONAL, TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX, TTracebackConfig());
+    TScoreValue tmpScore = _scoreOfCell(previousHorizontal) + scoreGapExtendHorizontal(scoringScheme, seqHVal, seqVVal);
+    return _internalComputeScore(activeCell,
+                                 tmpScore,
+                                 TraceBitMap_<TScoreValue>::DIAGONAL,
+                                 TraceBitMap_<TScoreValue>::HORIZONTAL | TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX,
+                                 TTracebackConfig());
 }
 
 // ----------------------------------------------------------------------------
@@ -220,7 +213,7 @@ _doComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
 
 template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
           typename TAlgorithm, typename TTracebackConfig>
-inline typename TraceBitMap_::TTraceValue
+inline typename TraceBitMap_<TScoreValue>::Type
 _doComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
                 DPCell_<TScoreValue, LinearGaps> const & previousDiagonal,
                 DPCell_<TScoreValue, LinearGaps> const & /*previousHorizontal*/,
@@ -232,10 +225,13 @@ _doComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
                 DPProfile_<TAlgorithm, LinearGaps, TTracebackConfig> const &)
 {
     activeCell._score = _scoreOfCell(previousDiagonal) + score(scoringScheme, seqHVal, seqVVal);
-    TScoreValue tmpScore = _scoreOfCell(previousVertical)
-                           + scoreGapExtendVertical(scoringScheme, seqHVal, seqVVal);
+    TScoreValue tmpScore = _scoreOfCell(previousVertical) + scoreGapExtendVertical(scoringScheme, seqHVal, seqVVal);
 
-    return _internalComputeScore(activeCell, tmpScore, TraceBitMap_::DIAGONAL, TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX, TTracebackConfig());
+    return _internalComputeScore(activeCell,
+                                 tmpScore,
+                                 TraceBitMap_<TScoreValue>::DIAGONAL,
+                                 TraceBitMap_<TScoreValue>::VERTICAL | TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX,
+                                 TTracebackConfig());
 }
 
 // ----------------------------------------------------------------------------
@@ -244,7 +240,7 @@ _doComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
 
 template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
           typename TAlgorithm, typename TTracebackConfig>
-inline typename TraceBitMap_::TTraceValue
+inline typename TraceBitMap_<TScoreValue>::Type
 _doComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
                 DPCell_<TScoreValue, LinearGaps> const & /*previousDiagonal*/,
                 DPCell_<TScoreValue, LinearGaps> const & previousHorizontal,
@@ -255,13 +251,13 @@ _doComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
                 RecursionDirectionHorizontal const &,
                 DPProfile_<TAlgorithm, LinearGaps, TTracebackConfig> const &)
 {
-    activeCell._score = _scoreOfCell(previousHorizontal)
-                        + scoreGapExtendHorizontal(scoringScheme, seqHVal, seqVVal);
+    activeCell._score = _scoreOfCell(previousHorizontal) + scoreGapExtendHorizontal(scoringScheme, seqHVal, seqVVal);
 
     if (!IsTracebackEnabled_<TTracebackConfig>::VALUE)
-        return TraceBitMap_::NONE;
+        return TraceBitMap_<TScoreValue>::NONE;
 
-    return TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
+    return TraceBitMap_<TScoreValue>::HORIZONTAL
+                | TraceBitMap_<TScoreValue>::MAX_FROM_HORIZONTAL_MATRIX;
 }
 
 // ----------------------------------------------------------------------------
@@ -270,7 +266,7 @@ _doComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
 
 template <typename TScoreValue, typename TSequenceHValue, typename TSequenceVValue, typename TScoringScheme,
           typename TAlgorithm, typename TTracebackConfig>
-inline typename TraceBitMap_::TTraceValue
+inline typename TraceBitMap_<TScoreValue>::Type
 _doComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
                 DPCell_<TScoreValue, LinearGaps> const & /*previousDiagonal*/,
                 DPCell_<TScoreValue, LinearGaps> const & /*previousHorizontal*/,
@@ -281,13 +277,13 @@ _doComputeScore(DPCell_<TScoreValue, LinearGaps> & activeCell,
                 RecursionDirectionVertical const &,
                 DPProfile_<TAlgorithm, LinearGaps, TTracebackConfig> const &)
 {
-    activeCell._score = _scoreOfCell(previousVertical)
-                        + scoreGapExtendVertical(scoringScheme, seqHVal, seqVVal);
+    activeCell._score = _scoreOfCell(previousVertical) + scoreGapExtendVertical(scoringScheme, seqHVal, seqVVal);
 
     if (!IsTracebackEnabled_<TTracebackConfig>::VALUE)
-        return TraceBitMap_::NONE;
+        return TraceBitMap_<TScoreValue>::NONE;
 
-    return TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
+    return TraceBitMap_<TScoreValue>::VERTICAL
+                | TraceBitMap_<TScoreValue>::MAX_FROM_VERTICAL_MATRIX;
 }
 
 }  // namespace seqan
diff --git a/include/seqan/align/dp_matrix_navigator_score_matrix.h b/include/seqan/align/dp_matrix_navigator_score_matrix.h
index c6c8200..9110b49 100644
--- a/include/seqan/align/dp_matrix_navigator_score_matrix.h
+++ b/include/seqan/align/dp_matrix_navigator_score_matrix.h
@@ -64,25 +64,13 @@ public:
     typedef typename Pointer_<TDPMatrix_>::Type TDPMatrixPointer_;
     typedef typename Iterator<TDPMatrix_, Standard>::Type TDPMatrixIterator;
 
-    TDPMatrixPointer_ _ptrDataContainer;        // Pointer to the matrix this navigator is working on.
-    int _laneLeap;                              // Stores the jump to the next column
-    TDPMatrixIterator _activeColIterator;       // The active column iterator.
-    TDPMatrixIterator _prevColIterator;         // The previous column iterator.
-    TValue _prevCellDiagonal;                   // The previous diagonal cell
-    TValue _prevCellHorizontal;                 // The previous Horizontal cell
-    TValue _prevCellVertical;                   // The previous Vertical cell
-
-
-
-    DPMatrixNavigator_() :
-        _ptrDataContainer(TDPMatrixPointer_(0)),
-        _laneLeap(0),
-        _activeColIterator(),
-        _prevColIterator(),
-        _prevCellDiagonal(),
-        _prevCellHorizontal(),
-        _prevCellVertical()
-    {}
+    TDPMatrixPointer_ _ptrDataContainer     = nullptr;  // Pointer to the matrix this navigator is working on.
+    int _laneLeap                           = 0;  // Stores the jump to the next column
+    TDPMatrixIterator _activeColIterator    = TDPMatrixIterator();  // The active column iterator.
+    TDPMatrixIterator _prevColIterator      = TDPMatrixIterator();  // The previous column iterator.
+    TValue _prevCellDiagonal                = TValue();  // The previous diagonal cell
+    TValue _prevCellHorizontal              = TValue();  // The previous Horizontal cell
+    TValue _prevCellVertical                = TValue();  // The previous Vertical cell
 };
 
 // ============================================================================
diff --git a/include/seqan/align/dp_matrix_navigator_score_matrix_sparse.h b/include/seqan/align/dp_matrix_navigator_score_matrix_sparse.h
index b784fcd..acc3267 100644
--- a/include/seqan/align/dp_matrix_navigator_score_matrix_sparse.h
+++ b/include/seqan/align/dp_matrix_navigator_score_matrix_sparse.h
@@ -62,25 +62,13 @@ public:
     typedef typename Pointer_<TDPMatrix_>::Type TDPMatrixPointer_;
     typedef typename Iterator<TDPMatrix_, Standard>::Type TDPMatrixIterator;
 
-    TDPMatrixPointer_ _ptrDataContainer;        // Pointer to the underlying matrix to navigate on.
-    int _laneLeap;                              // The distance to leap when going to the next column.
-    TDPMatrixIterator _activeColIterator;       // The iterator over the active column.
-    TDPMatrixIterator _prevColIterator;         // The iterator over the previous column.
-    TValue _prevCellDiagonal;                   // The previous value in diagonal direction.
-    TValue _prevCellHorizontal;                 // The previous value in horizontal direction.
-    TValue _prevCellVertical;                   // The previous value in vertical direction.
-
-
-
-    DPMatrixNavigator_() :
-        _ptrDataContainer(TDPMatrixPointer_(0)),
-        _laneLeap(0),
-        _activeColIterator(),
-        _prevColIterator(),
-        _prevCellDiagonal(),
-        _prevCellHorizontal(),
-        _prevCellVertical()
-    {}
+    TDPMatrixPointer_ _ptrDataContainer     = nullptr;  // Pointer to the underlying matrix to navigate on.
+    int _laneLeap                           = 0;  // The distance to leap when going to the next column.
+    TDPMatrixIterator _activeColIterator    = TDPMatrixIterator();  // The iterator over the active column.
+    TDPMatrixIterator _prevColIterator      = TDPMatrixIterator();  // The iterator over the previous column.
+    TValue _prevCellDiagonal                = TValue();  // The previous value in diagonal direction.
+    TValue _prevCellHorizontal              = TValue();  // The previous value in horizontal direction.
+    TValue _prevCellVertical                = TValue();  // The previous value in vertical direction.
 };
 
 // ============================================================================
diff --git a/include/seqan/align/dp_matrix_navigator_trace_matrix.h b/include/seqan/align/dp_matrix_navigator_trace_matrix.h
index 7e4b60f..0fc7233 100644
--- a/include/seqan/align/dp_matrix_navigator_trace_matrix.h
+++ b/include/seqan/align/dp_matrix_navigator_trace_matrix.h
@@ -73,16 +73,10 @@ public:
     typedef typename Pointer_<TDPMatrix_>::Type TDPMatrixPointer_;
     typedef typename Iterator<TDPMatrix_, Standard>::Type TDPMatrixIterator;
 
-    TDPMatrixPointer_ _ptrDataContainer;        // The pointer to the underlying Matrix.
-    int _laneLeap;                              // Keeps track of the jump size from one column to another.
-    TDPMatrixIterator _activeColIterator;       // The current column iterator.
-
-
-    DPMatrixNavigator_() :
-        _ptrDataContainer(TDPMatrixPointer_(0)),
-        _laneLeap(0),
-        _activeColIterator()
-    {}
+    TDPMatrixPointer_   _ptrDataContainer  = nullptr;  // The pointer to the underlying Matrix.
+    int                 _laneLeap          = 0;  // Keeps track of the jump size from one column to another.
+    unsigned            _simdLane          = 0;  // Used for tracing the correct cell in case of simd vectors.
+    TDPMatrixIterator   _activeColIterator = TDPMatrixIterator();  // The current column iterator.
 };
 
 // ============================================================================
@@ -346,6 +340,8 @@ _setToPosition(DPMatrixNavigator_<DPMatrix_<TValue, FullDPMatrix>, DPTraceMatrix
     if (IsSameType<TTraceFlag, TracebackOff>::VALUE)
         return;
 
+    SEQAN_ASSERT_LT(hostPosition, static_cast<TPosition>(length(container(dpNavigator))));
+
     dpNavigator._activeColIterator = begin(*dpNavigator._ptrDataContainer, Standard()) + hostPosition;
 }
 
@@ -361,6 +357,8 @@ _setToPosition(DPMatrixNavigator_<DPMatrix_<TValue, FullDPMatrix>, DPTraceMatrix
 {
     if (IsSameType<TTraceFlag, TracebackOff>::VALUE)
         return;
+    SEQAN_ASSERT_LT(horizontalPosition, static_cast<TPositionH>(length(container(dpNavigator), +DPMatrixDimension_::HORIZONTAL)));
+    SEQAN_ASSERT_LT(verticalPosition, static_cast<TPositionV>(length(container(dpNavigator), +DPMatrixDimension_::VERTICAL)));
 
     TPositionH  hostPosition = horizontalPosition * _dataFactors(container(dpNavigator))[+DPMatrixDimension_::HORIZONTAL] + verticalPosition;
     dpNavigator._activeColIterator = begin(*dpNavigator._ptrDataContainer, Standard()) + hostPosition;
@@ -382,9 +380,43 @@ assignValue(DPMatrixNavigator_<TDPMatrix, DPTraceMatrix<TTraceFlag>, TNavigation
 }
 
 // ----------------------------------------------------------------------------
+// Function scalarValue(); Helper to switch between simd and scalar.
+// ----------------------------------------------------------------------------
+
+// SIMD Version. Returns always a copy and never a reference.
+template <typename TValue, typename TPos>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TValue> >, typename Value<TValue>::Type)
+_scalarValue(TValue const & vec,
+             TPos const pos)
+{
+    return value(vec, pos);
+}
+
+// Non-simd variant. Identity version.
+template <typename TValue, typename TPos>
+inline SEQAN_FUNC_ENABLE_IF(Not<Is<SimdVectorConcept<TValue> > >, TValue &)
+_scalarValue(TValue & val,
+             TPos const /*pos*/)
+{
+    return val;
+}
+
+// Wrapper to get the scalar value.
+template <typename TDPMatrix, typename TTraceFlag, typename TNavigationSpec>
+inline auto
+scalarValue(DPMatrixNavigator_<TDPMatrix, DPTraceMatrix<TTraceFlag>, TNavigationSpec> const & dpNavigator)
+{
+    if (IsSameType<TTraceFlag, TracebackOff>::VALUE)
+        SEQAN_ASSERT_FAIL("Try to access uninitialized object!");
+
+    return _scalarValue(*dpNavigator._activeColIterator, dpNavigator._simdLane);
+}
+
+// ----------------------------------------------------------------------------
 // Function value()
 // ----------------------------------------------------------------------------
 
+// Current position.
 template <typename TDPMatrix, typename TTraceFlag, typename TNavigationSpec>
 inline typename Reference<DPMatrixNavigator_<TDPMatrix, DPTraceMatrix<TTraceFlag>, TNavigationSpec> >::Type
 value(DPMatrixNavigator_<TDPMatrix, DPTraceMatrix<TTraceFlag>, TNavigationSpec> & dpNavigator)
@@ -392,39 +424,40 @@ value(DPMatrixNavigator_<TDPMatrix, DPTraceMatrix<TTraceFlag>, TNavigationSpec>
     if (IsSameType<TTraceFlag, TracebackOff>::VALUE)
         SEQAN_ASSERT_FAIL("Try to access uninitialized object!");
 
-    return value(dpNavigator._activeColIterator);
+    return *dpNavigator._activeColIterator;
 }
 
 template <typename TDPMatrix, typename TTraceFlag, typename TNavigationSpec>
-inline typename Reference<DPMatrixNavigator_<TDPMatrix, DPTraceMatrix<TTraceFlag>, TNavigationSpec> const>::Type
+inline typename Reference<DPMatrixNavigator_<TDPMatrix, DPTraceMatrix<TTraceFlag>, TNavigationSpec> const >::Type
 value(DPMatrixNavigator_<TDPMatrix, DPTraceMatrix<TTraceFlag>, TNavigationSpec> const & dpNavigator)
 {
     if (IsSameType<TTraceFlag, TracebackOff>::VALUE)
         SEQAN_ASSERT_FAIL("Try to access uninitialized object!");
 
-    return value(dpNavigator._activeColIterator);
+    return *dpNavigator._activeColIterator;
 }
 
+// At specified position.
 template <typename TDPMatrix, typename TTraceFlag, typename TNavigationSpec, typename TPosition>
 inline typename Reference<DPMatrixNavigator_<TDPMatrix, DPTraceMatrix<TTraceFlag>, TNavigationSpec> >::Type
 value(DPMatrixNavigator_<TDPMatrix, DPTraceMatrix<TTraceFlag>, TNavigationSpec> & dpNavigator,
-      TPosition const & postition)
+      TPosition const & position)
 {
     if (IsSameType<TTraceFlag, TracebackOff>::VALUE)
         SEQAN_ASSERT_FAIL("Try to access uninitialized object!");
 
-    return value(begin(*dpNavigator._ptrDataContainer) + postition);
+    return *(begin(*dpNavigator._ptrDataContainer) + position);
 }
 
 template <typename TDPMatrix, typename TTraceFlag, typename TNavigationSpec, typename TPosition>
-inline typename Reference<DPMatrixNavigator_<TDPMatrix, DPTraceMatrix<TTraceFlag>, TNavigationSpec> const>::Type
+inline typename Reference<DPMatrixNavigator_<TDPMatrix, DPTraceMatrix<TTraceFlag>, TNavigationSpec> const >::Type
 value(DPMatrixNavigator_<TDPMatrix, DPTraceMatrix<TTraceFlag>, TNavigationSpec> const & dpNavigator,
       TPosition const & position)
 {
     if (IsSameType<TTraceFlag, TracebackOff>::VALUE)
         SEQAN_ASSERT_FAIL("Try to access uninitialized object!");
 
-    return value(begin(*dpNavigator._ptrDataContainer) + position);
+    return *(begin(*dpNavigator._ptrDataContainer) + position);
 }
 
 // ----------------------------------------------------------------------------
@@ -465,6 +498,20 @@ position(DPMatrixNavigator_<TDPMatrix, DPTraceMatrix<TTraceFlag>, TNavigationSpe
     return position(dpNavigator._activeColIterator, *dpNavigator._ptrDataContainer);
 }
 
+// ----------------------------------------------------------------------------
+// Function _setSimdLane()
+// ----------------------------------------------------------------------------
+
+template <typename TDPMatrix, typename TTraceFlag, typename TNavigationSpec, typename TPos>
+inline void
+_setSimdLane(DPMatrixNavigator_<TDPMatrix, DPTraceMatrix<TTraceFlag>, TNavigationSpec> & dpNavigator,
+             TPos const pos)
+{
+    SEQAN_ASSERT_LT(pos, static_cast<TPos>(LENGTH<typename Value<TDPMatrix>::Type>::VALUE));
+
+    dpNavigator._simdLane = pos;
+}
+
 }  // namespace seqan
 
 #endif  // #ifndef SEQAN_INCLUDE_SEQAN_ALIGN_DP_MATRIX_NAVIGATOR_TRACE_MATRIX_H_
diff --git a/include/seqan/align/dp_meta_info.h b/include/seqan/align/dp_meta_info.h
index d9d5aa7..dab1bdc 100644
--- a/include/seqan/align/dp_meta_info.h
+++ b/include/seqan/align/dp_meta_info.h
@@ -444,6 +444,38 @@ template <typename TDPMetaColumn>
 struct TrackingEnabled_<TDPMetaColumn, LastCell>:
     IsTrackingEnabled_<typename TDPMetaColumn::TLastCell_>{};
 
+// ----------------------------------------------------------------------------
+// Metafunction LastColumnEnabled_
+// ----------------------------------------------------------------------------
+
+template <typename TAlgo, typename TColumnDescriptor>
+struct LastColumnEnabled_
+{
+    typedef typename IsSameType<typename TColumnDescriptor::TColumnProperty, DPLastColumn>::Type Type;
+};
+
+template <typename TAlgo, typename TGapSpec, typename TTraceSpec, typename TColumnDescriptor>
+struct LastColumnEnabled_<DPProfile_<TAlgo, TGapSpec, TTraceSpec>, TColumnDescriptor> :
+    LastColumnEnabled_<TAlgo, TColumnDescriptor>
+{};
+
+// ----------------------------------------------------------------------------
+// Metafunction LastRowEnabled_
+// ----------------------------------------------------------------------------
+
+template <typename TAlgo, typename TCellDescriptor, typename TColumnDescriptor>
+struct LastRowEnabled_
+{
+    typedef typename And<IsSameType<TCellDescriptor, LastCell>,
+                         Or<IsSameType<typename TColumnDescriptor::TLocation, PartialColumnBottom>,
+                            IsSameType<typename TColumnDescriptor::TLocation, FullColumn> > >::Type Type;
+};
+
+template <typename TAlgo, typename TGapSpec, typename TTraceSpec, typename TCellDescriptor, typename TColumnDescriptor>
+struct LastRowEnabled_<DPProfile_<TAlgo, TGapSpec, TTraceSpec>, TCellDescriptor, TColumnDescriptor> :
+    LastRowEnabled_<TAlgo, TCellDescriptor, TColumnDescriptor>
+{};
+
 // ============================================================================
 // Functions
 // ============================================================================
diff --git a/include/seqan/align/dp_profile.h b/include/seqan/align/dp_profile.h
index e31bdfd..f57e161 100644
--- a/include/seqan/align/dp_profile.h
+++ b/include/seqan/align/dp_profile.h
@@ -108,27 +108,91 @@ struct LocalAlignment_;
 typedef LocalAlignment_<> DPLocal;
 typedef LocalAlignment_<SuboptimalAlignment> DPLocalEnumerate;
 
-// ----------------------------------------------------------------------------
-// Class TraceBitMap_
-// ----------------------------------------------------------------------------
+// Use macro expansion to define all possible SIMD initialization types.
+
+template <typename TVector, __uint8 FILL_VALUE, unsigned SIZE>
+struct InitSimdTrace_;
+
+#define SEQAN_SIMD_INIT_FILL_VALUE_2_ FILL_VALUE, FILL_VALUE
+#define SEQAN_SIMD_INIT_FILL_VALUE_4_ SEQAN_SIMD_INIT_FILL_VALUE_2_, SEQAN_SIMD_INIT_FILL_VALUE_2_
+#define SEQAN_SIMD_INIT_FILL_VALUE_8_ SEQAN_SIMD_INIT_FILL_VALUE_4_, SEQAN_SIMD_INIT_FILL_VALUE_4_
+#define SEQAN_SIMD_INIT_FILL_VALUE_16_ SEQAN_SIMD_INIT_FILL_VALUE_8_, SEQAN_SIMD_INIT_FILL_VALUE_8_
+#define SEQAN_SIMD_INIT_FILL_VALUE_32_ SEQAN_SIMD_INIT_FILL_VALUE_16_, SEQAN_SIMD_INIT_FILL_VALUE_16_
+
+#define SEQAN_SIMD_TRACE_SETUP_2_(SIZE, ...)                                                        \
+template <typename TVector, __uint8 FILL_VALUE>                                                     \
+struct InitSimdTrace_<TVector, FILL_VALUE, SIZE>                                                    \
+{                                                                                                   \
+    static const TVector VALUE;                                                                     \
+};                                                                                                  \
+                                                                                                    \
+template <typename TVector, __uint8 FILL_VALUE>                                                     \
+const TVector InitSimdTrace_<TVector, FILL_VALUE, SIZE>::VALUE = TVector{__VA_ARGS__};
+
+#define SEQAN_SIMD_TRACE_SETUP_1_(SIZE, MACRO) SEQAN_SIMD_TRACE_SETUP_2_(SIZE, MACRO)
+#define SEQAN_SIMD_TRACE_SETUP_(SIZE) SEQAN_SIMD_TRACE_SETUP_1_(SIZE, SEQAN_SIMD_INIT_FILL_VALUE_ ## SIZE ## _)
+
+SEQAN_SIMD_TRACE_SETUP_(2)
+SEQAN_SIMD_TRACE_SETUP_(4)
+SEQAN_SIMD_TRACE_SETUP_(8)
+SEQAN_SIMD_TRACE_SETUP_(16)
+SEQAN_SIMD_TRACE_SETUP_(32)
+
+// Scalar version.
+template <typename TValue, typename TIsSimdVector>
+struct TraceValue_
+{
+    typedef uint8_t Type;
+    static const Type NONE = 0u;                         //0000000
+    static const Type DIAGONAL = 1u;                     //0000001
+    static const Type HORIZONTAL = 2u;                   //0000010
+    static const Type VERTICAL = 4u;                     //0000100
+    static const Type HORIZONTAL_OPEN = 8u;              //0001000
+    static const Type VERTICAL_OPEN = 16u;               //0010000
+    static const Type MAX_FROM_HORIZONTAL_MATRIX = 32u;  //0100000
+    static const Type MAX_FROM_VERTICAL_MATRIX = 64u;    //1000000
+    static const Type NO_VERTICAL_TRACEBACK = ~(VERTICAL | VERTICAL_OPEN);
+    static const Type NO_HORIZONTAL_TRACEBACK = ~(HORIZONTAL | HORIZONTAL_OPEN);
+};
 
-// Used to globally ditinguish different traceback directions and the underlying
-// type to store the values.
-struct TraceBitMap_
+// SIMD Vector version.
+template <typename TVector>
+struct TraceValue_<TVector, True>
 {
-    typedef uint8_t TTraceValue;
-    static const TTraceValue NONE = 0u;                         //0000000
-    static const TTraceValue DIAGONAL = 1u;                     //0000001
-    static const TTraceValue HORIZONTAL = 2u;                   //0000010
-    static const TTraceValue VERTICAL = 4u;                     //0000100
-    static const TTraceValue HORIZONTAL_OPEN = 8u;              //0001000
-    static const TTraceValue VERTICAL_OPEN = 16u;               //0010000
-    static const TTraceValue MAX_FROM_HORIZONTAL_MATRIX = 32u;  //0100000
-    static const TTraceValue MAX_FROM_VERTICAL_MATRIX = 64u;    //1000000
-    static const TTraceValue NO_VERTICAL_TRACEBACK = ~(VERTICAL | VERTICAL_OPEN);
-    static const TTraceValue NO_HORIZONTAL_TRACEBACK = ~(HORIZONTAL | HORIZONTAL_OPEN);
+    typedef TVector Type;
+    static const Type NONE;
+    static const Type DIAGONAL;
+    static const Type HORIZONTAL;
+    static const Type VERTICAL;
+    static const Type HORIZONTAL_OPEN;
+    static const Type VERTICAL_OPEN;
+    static const Type MAX_FROM_HORIZONTAL_MATRIX;
+    static const Type MAX_FROM_VERTICAL_MATRIX;
+    static const Type NO_HORIZONTAL_TRACEBACK;
+    static const Type NO_VERTICAL_TRACEBACK;
 };
 
+// Macro expansion to define out-of-class initialization of static members.
+
+#define SEQAN_SIMD_TRACE_OUT_OF_CLASS_INIT_(TRACE_VALUE)                             \
+    template <typename TVector>                                                      \
+    const TVector TraceValue_<TVector, True>::TRACE_VALUE = InitSimdTrace_<TVector, TraceValue_<__uint8, False>::TRACE_VALUE, LENGTH<TVector>::VALUE>::VALUE;
+
+SEQAN_SIMD_TRACE_OUT_OF_CLASS_INIT_(NONE)
+SEQAN_SIMD_TRACE_OUT_OF_CLASS_INIT_(DIAGONAL)
+SEQAN_SIMD_TRACE_OUT_OF_CLASS_INIT_(HORIZONTAL)
+SEQAN_SIMD_TRACE_OUT_OF_CLASS_INIT_(VERTICAL)
+SEQAN_SIMD_TRACE_OUT_OF_CLASS_INIT_(HORIZONTAL_OPEN)
+SEQAN_SIMD_TRACE_OUT_OF_CLASS_INIT_(VERTICAL_OPEN)
+SEQAN_SIMD_TRACE_OUT_OF_CLASS_INIT_(MAX_FROM_HORIZONTAL_MATRIX)
+SEQAN_SIMD_TRACE_OUT_OF_CLASS_INIT_(MAX_FROM_VERTICAL_MATRIX)
+SEQAN_SIMD_TRACE_OUT_OF_CLASS_INIT_(NO_HORIZONTAL_TRACEBACK)
+SEQAN_SIMD_TRACE_OUT_OF_CLASS_INIT_(NO_VERTICAL_TRACEBACK)
+
+// Type alias to choose between scalar and simd version of trace value.
+template <typename TValue = __uint8>
+using TraceBitMap_ = TraceValue_<TValue, typename Is<SimdVectorConcept<TValue> >::Type >;
+
 // ----------------------------------------------------------------------------
 // Tag GapsLeft
 // ----------------------------------------------------------------------------
@@ -183,6 +247,14 @@ typedef Tag<TracebackOff_> TracebackOff;
 // Tag LinearGaps
 // ----------------------------------------------------------------------------
 
+/*!
+ * @tag AlignmentAlgorithmTags#LinearGaps
+ * @headerfile <seqan/align.h>
+ * @brief Tag for selecting linear gap cost model. This tag can be used for all standard DP algorithms.
+ *
+ * @signature struct LinearGaps_;
+ * @signature typedef Tag<LinearGaps_> LinearGaps;
+ */
 struct LinearGaps_;
 typedef Tag<LinearGaps_> LinearGaps;
 
@@ -190,6 +262,14 @@ typedef Tag<LinearGaps_> LinearGaps;
 // Tag AffineGaps
 // ----------------------------------------------------------------------------
 
+/*!
+ * @tag AlignmentAlgorithmTags#AffineGaps
+ * @headerfile <seqan/align.h>
+ * @brief Tag for selecting affine gap cost model. This tag can be used for all standard DP algorithms.
+ *
+ * @signature struct AffineGaps_;
+ * @signature typedef Tag<AffineGaps_> AffineGaps;
+ */
 struct AffineGaps_;
 typedef Tag<AffineGaps_> AffineGaps;
 
diff --git a/include/seqan/align/dp_scout.h b/include/seqan/align/dp_scout.h
index ee35767..4642f9d 100644
--- a/include/seqan/align/dp_scout.h
+++ b/include/seqan/align/dp_scout.h
@@ -93,29 +93,14 @@ template <typename TDPCell, typename TSpec>
 class DPScout_
 {
 public:
-    typedef typename Value<TDPCell>::Type TScoreValue;
-//    TScoreValue _maxScore;          // The maximal score.
-    TDPCell _maxScore;
-    unsigned int _maxHostPosition;  // The corresponding host position within the underlying dp-matrix.
+    using TScoreValue = typename Value<TDPCell>::Type;
 
-    DPScout_() : _maxScore(), _maxHostPosition(0) {}
+    TDPCell _maxScore         = TDPCell();
+    uint32_t _maxHostPosition = DPCellDefaultInfinity<TScoreValue>::VALUE; // The corresponding host position within the underlying dp-matrix.
 
-    DPScout_(DPScoutState_<Default> const & /*state*/) :
-        _maxScore(), _maxHostPosition(0) {}
-
-    DPScout_(DPScout_ const & other) :
-        _maxScore(other._maxScore), _maxHostPosition(other._maxHostPosition) {}
-
-    DPScout_ & operator=(DPScout_ const & other)
-    {
-        if (this != &other)
-        {
-            _maxScore = other._maxScore;
-            _maxHostPosition = other._maxHostPosition;
-        }
-        return *this;
-    }
+    DPScout_() = default;
 
+    DPScout_(DPScoutState_<Default> const & /*state*/) {}
 };
 
 // Terminator_ Specialization
@@ -125,37 +110,16 @@ class DPScout_<TDPCell, Terminator_<TSpec> >
 {
 public:
     typedef DPScout_<TDPCell, Default>  TParent;
-    bool terminationCriteriumMet;
-    DPScoutState_<Terminator_<TSpec> > * state;
 
-    DPScout_()
-        : TParent(),
-          terminationCriteriumMet(false),
-          state(0)
-    {}
+    DPScoutState_<Terminator_<TSpec> > * state = nullptr;
+    bool terminationCriteriumMet               = false;
 
-    DPScout_(DPScoutState_<Terminator_<TSpec> > & state)
-        : TParent(),
-          terminationCriteriumMet(false),
-          state(&state)
-    {}
+    DPScout_() = default;
 
-    DPScout_(DPScout_ const & other)
-        : TParent(static_cast<TParent const &>(other)),
-          terminationCriteriumMet(other.terminationCriteriumMet),
-          state(other.state)
+    DPScout_(DPScoutState_<Terminator_<TSpec> > & pState) :
+        DPScout_<TDPCell, Default>(),
+        state(&pState)
     {}
-
-    DPScout_ & operator=(DPScout_ const & other)
-    {
-        if (this != &other)
-        {
-            *static_cast<TParent*>(this) = other;
-            terminationCriteriumMet = other.terminationCriteriumMet;
-            state = other.state;
-        }
-        return *this;
-    }
 };
 
 // ============================================================================
@@ -169,7 +133,7 @@ public:
 // Given an alignment algorithm tag such as GlobalAlignment_ or LocalAlignment_, returns the specialization tag for the
 // corresponding DPScout_ specialization.
 
-template <typename TAlignmentAlgorithm>
+template <typename TAlignmentAlgorithm, typename TScoutState>
 struct ScoutSpecForAlignmentAlgorithm_
 {
     typedef If<HasTerminationCriterium_<TAlignmentAlgorithm>,
@@ -207,7 +171,6 @@ _scoutBestScore(DPScout_<TDPCell, TSpec> & dpScout,
                 TIsLastColumn const & /**/,
                 TIsLastRow const & /**/)
 {
-
     if (_scoreOfCell(activeCell) > _scoreOfCell(dpScout._maxScore))
     {
         dpScout._maxScore = activeCell;
@@ -223,8 +186,7 @@ _scoutBestScore(DPScout_<TDPCell, TSpec> & dpScout,
                 TTraceMatrixNavigator const & navigator,
                 TIsLastColumn const & /**/)
 {
-    return _scoutBestScore(dpScout, activeCell, navigator, TIsLastColumn(),
-                           False());
+    _scoutBestScore(dpScout, activeCell, navigator, TIsLastColumn(), False());
 }
 
 // TODO(rmaerker): Why is this needed?
@@ -234,7 +196,7 @@ _scoutBestScore(DPScout_<TDPCell, TSpec> & dpScout,
                 TDPCell const & activeCell,
                 TTraceMatrixNavigator const & navigator)
 {
-    return _scoutBestScore(dpScout, activeCell, navigator, False(), False());
+    _scoutBestScore(dpScout, activeCell, navigator, False(), False());
 }
 
 // ----------------------------------------------------------------------------
@@ -283,7 +245,95 @@ terminateScout(DPScout_<TDPCell, Terminator_<TSpec> > & scout)
     scout.terminationCriteriumMet = true;
 }
 
+// ----------------------------------------------------------------------------
+// Function _preInitScoutHorizontal()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TSpec>
+inline void
+_preInitScoutHorizontal(DPScout_<TDPCell, TSpec> const & /*scout*/)
+{
+    // no-op.
+}
+
+// ----------------------------------------------------------------------------
+// Function _reachedHorizontalEndPoint()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TSpec, typename TIter>
+constexpr inline bool
+_reachedHorizontalEndPoint(DPScout_<TDPCell, TSpec> const & /*scout*/,
+                           TIter const & /*hIt*/)
+{
+    return false;
+}
+
+// ----------------------------------------------------------------------------
+// Function _preInitScoutVertical()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TSpec>
+inline void
+_preInitScoutVertical(DPScout_<TDPCell, TSpec> const & /*scout*/)
+{
+    // no-op.
+}
+
+// ----------------------------------------------------------------------------
+// Function _reachedVerticalEndPoint()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TSpec, typename TIter>
+constexpr inline bool
+_reachedVerticalEndPoint(DPScout_<TDPCell, TSpec> const & /*scout*/,
+                         TIter const & /*iter*/)
+{
+    return false;
+}
+
+// ----------------------------------------------------------------------------
+// Function _nextHorizontalEndPos()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TSpec>
+inline void
+_nextHorizontalEndPos(DPScout_<TDPCell, TSpec> const & /*scout*/)
+{
+    // no-op.
+}
+
+// ----------------------------------------------------------------------------
+// Function _nextVerticalEndPos()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TSpec>
+inline void
+_nextVerticalEndPos(DPScout_<TDPCell, TSpec> const & /*scout*/)
+{
+    // no-op.
+}
+
+// ----------------------------------------------------------------------------
+// Function _incHorizontalPos()
+// ----------------------------------------------------------------------------
 
+template <typename TDPCell, typename TSpec>
+inline void
+_incHorizontalPos(DPScout_<TDPCell, TSpec> const & /*scout*/)
+{
+    // no-op.
+}
+
+// ----------------------------------------------------------------------------
+// Function _incVerticalPos()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TSpec>
+inline void
+_incVerticalPos(DPScout_<TDPCell, TSpec> const & /*scout*/)
+{
+    // no-op.
+}
 
 }  // namespace seqan
 
diff --git a/include/seqan/align/dp_scout_simd.h b/include/seqan/align/dp_scout_simd.h
new file mode 100644
index 0000000..bd5cf86
--- /dev/null
+++ b/include/seqan/align/dp_scout_simd.h
@@ -0,0 +1,454 @@
+// ==========================================================================
+//                 SeqAn - The Library for Sequence Analysis
+// ==========================================================================
+// Copyright (c) 2006-2015, Knut Reinert, FU Berlin
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
+//       its contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+//
+// ==========================================================================
+// Author: Stefan Budach <budach at molgen.mpg.de>
+// ==========================================================================
+// DPScout_ specialization for the SIMD alignment implementation.
+// ==========================================================================
+
+#ifndef SEQAN_INCLUDE_SEQAN_ALIGN_SIMD_DP_SCOUT_SIMD_H_
+#define SEQAN_INCLUDE_SEQAN_ALIGN_SIMD_DP_SCOUT_SIMD_H_
+
+namespace seqan {
+
+// ============================================================================
+// Forwards
+// ============================================================================
+
+// ============================================================================
+// Tags, Classes, Enums
+// ============================================================================
+
+struct SimdAlignEqualLength_;
+typedef Tag<SimdAlignEqualLength_> SimdAlignEqualLength;
+
+template <typename TTraits>
+struct SimdAlignVariableLength
+{};
+
+template <typename TSpec = SimdAlignEqualLength>
+struct SimdAlignmentScout {};
+
+// ----------------------------------------------------------------------------
+// Class DPScoutState_
+// ----------------------------------------------------------------------------
+
+template <>
+class DPScoutState_<SimdAlignEqualLength>
+{};
+
+template <typename TTraits>
+class DPScoutState_<SimdAlignVariableLength<TTraits> >
+{
+public:
+    using TSizeH = typename Size<typename TTraits::TSeqH>::Type;
+    using TSizeV = typename Size<typename TTraits::TSeqV>::Type;
+
+    String<typename TTraits::TSimdVector, Alloc<OverAligned> > masksH;
+    String<typename TTraits::TSimdVector, Alloc<OverAligned> > masksV;
+    String<typename TTraits::TSimdVector, Alloc<OverAligned> > masks;
+
+    String<size_t> endsH;
+    String<size_t> endsV;
+    ModifiedString<String<size_t>, ModPos<String<size_t> > > sortedEndsH;
+    ModifiedString<String<size_t>, ModPos<String<size_t> > > sortedEndsV;
+
+    decltype(begin(sortedEndsH, Standard())) nextEndsH;
+    decltype(begin(sortedEndsV, Standard())) nextEndsV;
+
+    size_t dimV;
+    size_t posH;
+    size_t posV;
+    bool right;
+    bool bottom;
+    bool isLocalAlignment;
+
+    // ----------------------------------------------------------------------------
+    // Function DPScout_#updateMasksRight()
+    // ----------------------------------------------------------------------------
+
+    inline void updateMasksRight()
+    {
+        for(size_t pos = dimV - 2; pos != MaxValue<size_t>::VALUE; --pos)
+            masks[pos] |= masks[pos + 1];
+    }
+
+    // ----------------------------------------------------------------------------
+    // Function DPScout_#updateMasksBottom()
+    // ----------------------------------------------------------------------------
+
+    inline void updateMasksBottom()
+    {
+        for (auto pos : sortedEndsV)
+            for (auto it = nextEndsH; it != end(sortedEndsH, Standard()); ++it)
+            {
+                masks[pos] |= (masksH[*it] & masksV[pos]);
+            }
+    }
+
+    // ----------------------------------------------------------------------------
+    // Function DPScout_#updateMasks()
+    // ----------------------------------------------------------------------------
+
+    inline void updateMasks()
+    {
+        for(size_t pos = 0; pos < dimV; ++pos)
+            masks[pos] = masksH[posH] & masksV[pos];
+        //for local alignments the BOTTOM parameter must be checked first
+        if(isLocalAlignment)
+        {
+            updateMasksBottom();
+            updateMasksRight();
+        }
+        else
+        {
+            if(right && posH == *nextEndsH)
+                updateMasksRight();
+            if(bottom)
+                updateMasksBottom();
+        }
+    }
+};
+
+// ----------------------------------------------------------------------------
+// Class DPScout_
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TSpec>
+class DPScout_<TDPCell, SimdAlignmentScout<TSpec> > :
+    public DPScout_<TDPCell, Default>
+{
+public:
+    using TBase       = DPScout_<TDPCell, Default>;
+    using TScoutState = DPScoutState_<TSpec>;
+
+    //used in the SIMD version to keep track of all host positions
+    //SIMD register size divided by 16bit is the amount of alignments
+    //so we need two vectors of type 32bit to save the host for all alignments
+
+    // TODO(rrahn): Abstract into a struct, so we can model different configurations.
+    SimdVector<int32_t>::Type _maxHostLow; //first half of alignments
+    SimdVector<int32_t>::Type _maxHostHigh; //other half
+    TScoutState * state = nullptr;
+    unsigned _simdLane  = 0;
+
+    DPScout_(TScoutState & pState) : TBase(), state(&pState)
+    {}
+};
+
+// ============================================================================
+// Metafunctions
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// Metafunction ScoutSpecForSimdAlignment_
+// ----------------------------------------------------------------------------
+
+template<typename TAlignmentAlgorithm>
+struct ScoutSpecForAlignmentAlgorithm_<TAlignmentAlgorithm, DPScoutState_<SimdAlignEqualLength> >
+{
+    typedef SimdAlignmentScout<SimdAlignEqualLength> Type;
+};
+
+template<typename TAlignmentAlgorithm, typename TTraits>
+struct ScoutSpecForAlignmentAlgorithm_<TAlignmentAlgorithm, DPScoutState_<SimdAlignVariableLength<TTraits> > >
+{
+    typedef SimdAlignmentScout<SimdAlignVariableLength<TTraits> > Type;
+};
+
+// ============================================================================
+// Functions
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// Function _copySimdCell()
+// ----------------------------------------------------------------------------
+
+template <typename TValue, typename TSpec, typename TScoreValue>
+inline void
+_copySimdCell(DPScout_<DPCell_<TValue, LinearGaps>, SimdAlignmentScout<TSpec> > & dpScout,
+              DPCell_<TValue, LinearGaps> const & activeCell,
+              TScoreValue const & cmp)
+{
+    dpScout._maxScore._score = blend(dpScout._maxScore._score, activeCell._score, cmp);
+}
+
+template <typename TValue, typename TSpec, typename TScoreValue>
+inline void
+_copySimdCell(DPScout_<DPCell_<TValue, AffineGaps>, SimdAlignmentScout<TSpec> > & dpScout,
+              DPCell_<TValue, AffineGaps> const & activeCell,
+              TScoreValue const & cmp)
+{
+    dpScout._maxScore._score = blend(dpScout._maxScore._score, activeCell._score, cmp);
+    dpScout._maxScore._horizontalScore = blend(dpScout._maxScore._horizontalScore, activeCell._horizontalScore, cmp);
+    dpScout._maxScore._verticalScore = blend(dpScout._maxScore._verticalScore, activeCell._verticalScore, cmp);
+}
+
+template <typename TValue, typename TSpec, typename TScoreValue>
+inline void
+_copySimdCell(DPScout_<DPCell_<TValue, DynamicGaps>, SimdAlignmentScout<TSpec> > & dpScout,
+              DPCell_<TValue, DynamicGaps> const & activeCell,
+              TScoreValue const & cmp)
+{
+    dpScout._maxScore._score = blend(dpScout._maxScore._score, activeCell._score, cmp);
+    dpScout._maxScore._flagMask = blend(dpScout._maxScore._flagMask, activeCell._flagMask, cmp);
+}
+
+// ----------------------------------------------------------------------------
+// Function _updateHostPositions()
+// ----------------------------------------------------------------------------
+
+template<typename TDPCell, typename TScoutSpec, typename TSimdVec>
+inline void
+_updateHostPositions(DPScout_<TDPCell, TScoutSpec> & dpScout,
+                     TSimdVec & cmp,
+                     SimdVector<int32_t>::Type positionNavigator)
+{
+// TODO(rrahn): Refactor!
+#if defined(__AVX2__)
+    dpScout._maxHostLow = blend(dpScout._maxHostLow, positionNavigator,
+                                _mm256_cvtepi16_epi32(_mm256_castsi256_si128(reinterpret_cast<__m256i&>(cmp))));
+    dpScout._maxHostHigh = blend(dpScout._maxHostHigh, positionNavigator,
+                                 _mm256_cvtepi16_epi32(_mm256_extractf128_si256(reinterpret_cast<__m256i&>(cmp),1)));
+#elif defined(__SSE3__)
+    dpScout._maxHostLow = blend(dpScout._maxHostLow, positionNavigator,
+                                _mm_unpacklo_epi16(reinterpret_cast<__m128i&>(cmp), reinterpret_cast<__m128i&>(cmp)));
+    dpScout._maxHostHigh = blend(dpScout._maxHostHigh, positionNavigator,
+                                 _mm_unpackhi_epi16(reinterpret_cast<__m128i&>(cmp), reinterpret_cast<__m128i&>(cmp)));
+#endif
+}
+
+// ----------------------------------------------------------------------------
+// Function _scoutBestScore()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TTraceMatrixNavigator, typename TIsLastColumn, typename TIsLastRow>
+inline void
+_scoutBestScore(DPScout_<TDPCell, SimdAlignmentScout<SimdAlignEqualLength> > & dpScout,
+                TDPCell const & activeCell,
+                TTraceMatrixNavigator const & navigator,
+                TIsLastColumn const & /**/,
+                TIsLastRow const & /**/)
+{
+    auto cmp = cmpGt(_scoreOfCell(activeCell), _scoreOfCell(dpScout._maxScore));
+    _copySimdCell(dpScout, activeCell, cmp);
+    _updateHostPositions(dpScout, cmp, createVector<SimdVector<int32_t>::Type>(position(navigator)));
+}
+
+template <typename TDPCell, typename TTraits,
+          typename TTraceMatrixNavigator,
+          typename TIsLastColumn,
+          typename TIsLastRow>
+inline void
+_scoutBestScore(DPScout_<TDPCell, SimdAlignmentScout<SimdAlignVariableLength<TTraits> > > & dpScout,
+                TDPCell const & activeCell,
+                TTraceMatrixNavigator const & navigator,
+                TIsLastColumn const & /**/,
+                TIsLastRow const & /**/)
+{
+    auto cmp = cmpGt(_scoreOfCell(activeCell), _scoreOfCell(dpScout._maxScore));
+    cmp &= dpScout.state->masks[dpScout.state->posV];
+    _copySimdCell(dpScout, activeCell, cmp);
+    _updateHostPositions(dpScout, cmp, createVector<SimdVector<int32_t>::Type>(position(navigator)));
+}
+
+// ----------------------------------------------------------------------------
+// Function maxHostPosition()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TScoutSpec>
+inline unsigned int
+maxHostPosition(DPScout_<TDPCell, SimdAlignmentScout<TScoutSpec> > const & dpScout)
+{
+    if(dpScout._simdLane < LENGTH<SimdVector<int32_t>::Type>::VALUE)
+        return value(dpScout._maxHostLow, dpScout._simdLane);
+    else
+        return value(dpScout._maxHostHigh, dpScout._simdLane - LENGTH<SimdVector<int32_t>::Type>::VALUE);
+}
+
+// ----------------------------------------------------------------------------
+// Function _setSimdLane()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TScoutSpec, typename TPosition>
+inline void
+_setSimdLane(DPScout_<TDPCell, TScoutSpec> & dpScout, TPosition const pos)
+{
+    dpScout._simdLane = pos;
+}
+
+// ----------------------------------------------------------------------------
+// Function _preInitScoutHorizontal()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TTraits>
+inline void
+_preInitScoutHorizontal(DPScout_<TDPCell, SimdAlignmentScout<SimdAlignVariableLength<TTraits> > > & scout)
+{
+    scout.state->nextEndsH = begin(scout.state->sortedEndsH, Standard());
+    scout.state->posH = 0;
+}
+
+// ----------------------------------------------------------------------------
+// Function _preInitScoutVertical()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TTraits>
+inline void
+_preInitScoutVertical(DPScout_<TDPCell, SimdAlignmentScout<SimdAlignVariableLength<TTraits> > > & scout)
+{
+    scout.state->updateMasks();
+    scout.state->nextEndsV = begin(scout.state->sortedEndsV, Standard());
+    scout.state->posV = 0;
+}
+
+// ----------------------------------------------------------------------------
+// Function _reachedHorizontalEndPoint()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TTraits, typename TIter>
+inline bool
+_reachedHorizontalEndPoint(DPScout_<TDPCell, SimdAlignmentScout<SimdAlignVariableLength<TTraits> > > & scout,
+                           TIter const & hIt)
+{
+    return *(scout.state->nextEndsH) == position(hIt);
+}
+
+// ----------------------------------------------------------------------------
+// Function _reachedVerticalEndPoint()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TTraits, typename TIter>
+inline bool
+_reachedVerticalEndPoint(DPScout_<TDPCell, SimdAlignmentScout<SimdAlignVariableLength<TTraits> > > & scout,
+                         TIter const & vIt)
+{
+    return *(scout.state->nextEndsV) == position(vIt);
+}
+
+// ----------------------------------------------------------------------------
+// Function _nextHorizontalEndPos()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TTraits>
+inline void
+_nextHorizontalEndPos(DPScout_<TDPCell, SimdAlignmentScout<SimdAlignVariableLength<TTraits> > > & scout)
+{
+    auto oldLength = *scout.state->nextEndsH;
+    while (scout.state->nextEndsH != end(scout.state->sortedEndsH, Standard()) &&
+           *scout.state->nextEndsH == oldLength)
+    {
+        ++scout.state->nextEndsH;
+    }
+}
+
+// ----------------------------------------------------------------------------
+// Function _nextVerticalEndPos()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TTraits>
+inline void
+_nextVerticalEndPos(DPScout_<TDPCell, SimdAlignmentScout<SimdAlignVariableLength<TTraits> > > & scout)
+{
+    auto oldLength = *scout.state->nextEndsV;
+    while (scout.state->nextEndsV != end(scout.state->sortedEndsV, Standard()) &&
+           *scout.state->nextEndsV == oldLength)
+    {
+        ++scout.state->nextEndsV;
+    }
+}
+
+// ----------------------------------------------------------------------------
+// Function _incHorizontalPos()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TTraits>
+inline void
+_incHorizontalPos(DPScout_<TDPCell, SimdAlignmentScout<SimdAlignVariableLength<TTraits> > > & scout)
+{
+    ++scout.state->posH;
+}
+
+// ----------------------------------------------------------------------------
+// Function _incVerticalPos()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TTraits>
+inline void
+_incVerticalPos(DPScout_<TDPCell, SimdAlignmentScout<SimdAlignVariableLength<TTraits> > > & scout)
+{
+    ++scout.state->posV;
+}
+
+// ----------------------------------------------------------------------------
+// Function _hostLengthH()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TSeqH>
+inline auto
+_hostLengthH(DPScout_<TDPCell, SimdAlignmentScout<SimdAlignEqualLength> > const & /*scout*/,
+             TSeqH const & seqH)
+{
+    return length(seqH);
+}
+
+template <typename TDPCell, typename TTraits, typename TSeqH>
+inline auto
+_hostLengthH(DPScout_<TDPCell, SimdAlignmentScout<SimdAlignVariableLength<TTraits> > > const & scout,
+             TSeqH const & /*seqH*/)
+{
+    return host(scout.state->sortedEndsH)[scout._simdLane] + 1;
+}
+
+// ----------------------------------------------------------------------------
+// Function _hostLengthV()
+// ----------------------------------------------------------------------------
+
+template <typename TDPCell, typename TSeqV>
+inline auto
+_hostLengthV(DPScout_<TDPCell, SimdAlignmentScout<SimdAlignEqualLength> > const & /*scout*/,
+             TSeqV const & seqV)
+{
+    return length(seqV);
+}
+
+template <typename TDPCell, typename TTraits, typename TSeqV>
+inline auto
+_hostLengthV(DPScout_<TDPCell, SimdAlignmentScout<SimdAlignVariableLength<TTraits> > > const & scout,
+             TSeqV const & /*seqV*/)
+{
+    return host(scout.state->sortedEndsV)[scout._simdLane] + 1;
+}
+
+}  // namespace seqan
+
+#endif  // #ifndef SEQAN_INCLUDE_SEQAN_ALIGN_SIMD_DP_SCOUT_SIMD_H_
+
diff --git a/include/seqan/align/dp_setup.h b/include/seqan/align/dp_setup.h
index 4d46cbc..29bf429 100644
--- a/include/seqan/align/dp_setup.h
+++ b/include/seqan/align/dp_setup.h
@@ -263,12 +263,16 @@ _usesAffineGaps(TScoringScheme const & scoringScheme,
 // Function _setUpAndRunAlignment()
 // ----------------------------------------------------------------------------
 
-template <typename TScoreValue, typename TDPScoutStateSpec, typename TTraceSegment, typename TSpec,
-          typename TSequenceH, typename TSequenceV, typename TScoreValue2, typename TScoreSpec, typename TDPType,
-          typename TBand, typename TFreeEndGaps, typename TTraceConfig>
+template <typename TScoreValue, typename TGapModel,
+          typename TDPScoutStateSpec,
+          typename TTrace,
+          typename TSequenceH,
+          typename TSequenceV,
+          typename TScoreValue2, typename TScoreSpec,
+          typename TDPType, typename TBand, typename TFreeEndGaps, typename TTraceConfig>
 typename Value<Score<TScoreValue2, TScoreSpec> >::Type
-_setUpAndRunAlignment(DPContext<TScoreValue, AffineGaps> & dpContext,
-                      String<TTraceSegment, TSpec> & traceSegments,
+_setUpAndRunAlignment(DPContext<TScoreValue, TGapModel> & dpContext,
+                      TTrace & traceSegments,
                       DPScoutState_<TDPScoutStateSpec> & dpScoutState,
                       TSequenceH const & seqH,
                       TSequenceV const & seqV,
@@ -278,56 +282,20 @@ _setUpAndRunAlignment(DPContext<TScoreValue, AffineGaps> & dpContext,
     SEQAN_ASSERT_GEQ(length(seqH), 1u);
     SEQAN_ASSERT_GEQ(length(seqV), 1u);
 
-    typedef typename SetupAlignmentProfile_<TDPType, TFreeEndGaps, AffineGaps, TTraceConfig>::Type TDPProfile;
+    typedef typename SetupAlignmentProfile_<TDPType, TFreeEndGaps, TGapModel, TTraceConfig>::Type TDPProfile;
     return _computeAlignment(dpContext, traceSegments, dpScoutState, seqH, seqV, scoringScheme, alignConfig._band,
                              TDPProfile());
 }
 
-template <typename TScoreValue, typename TDPScoutStateSpec, typename TTraceSegment, typename TSpec,
-          typename TSequenceH, typename TSequenceV, typename TScoreValue2, typename TScoreSpec, typename TDPType,
-          typename TBand, typename TFreeEndGaps, typename TTraceConfig>
+template <typename TTrace,
+          typename TDPScoutStateSpec,
+          typename TSequenceH,
+          typename TSequenceV,
+          typename TScoreValue2, typename TScoreSpec,
+          typename TDPType, typename TBand, typename TFreeEndGaps, typename TTraceConfig,
+          typename TGapModel>
 typename Value<Score<TScoreValue2, TScoreSpec> >::Type
-_setUpAndRunAlignment(DPContext<TScoreValue, LinearGaps> & dpContext,
-                      String<TTraceSegment, TSpec> & traceSegments,
-                      DPScoutState_<TDPScoutStateSpec> & dpScoutState,
-                      TSequenceH const & seqH,
-                      TSequenceV const & seqV,
-                      Score<TScoreValue2, TScoreSpec> const & scoringScheme,
-                      AlignConfig2<TDPType, TBand, TFreeEndGaps, TTraceConfig> const & alignConfig)
-{
-    SEQAN_ASSERT_GEQ(length(seqH), 1u);
-    SEQAN_ASSERT_GEQ(length(seqV), 1u);
-
-    typedef typename SetupAlignmentProfile_<TDPType, TFreeEndGaps, LinearGaps, TTraceConfig>::Type TDPProfile;
-    return _computeAlignment(dpContext, traceSegments, dpScoutState, seqH, seqV, scoringScheme, alignConfig._band,
-                             TDPProfile());
-}
-
-template <typename TScoreValue, typename TDPScoutStateSpec, typename TTraceSegment, typename TSpec,
-          typename TSequenceH, typename TSequenceV, typename TScoreValue2, typename TScoreSpec, typename TDPType,
-          typename TBand, typename TFreeEndGaps, typename TTraceConfig>
-typename Value<Score<TScoreValue2, TScoreSpec> >::Type
-_setUpAndRunAlignment(DPContext<TScoreValue, DynamicGaps> & dpContext,
-                      String<TTraceSegment, TSpec> & traceSegments,
-                      DPScoutState_<TDPScoutStateSpec> & dpScoutState,
-                      TSequenceH const & seqH,
-                      TSequenceV const & seqV,
-                      Score<TScoreValue2, TScoreSpec> const & scoringScheme,
-                      AlignConfig2<TDPType, TBand, TFreeEndGaps, TTraceConfig> const & alignConfig)
-{
-    SEQAN_ASSERT_GEQ(length(seqH), 1u);
-    SEQAN_ASSERT_GEQ(length(seqV), 1u);
-
-    typedef typename SetupAlignmentProfile_<TDPType, TFreeEndGaps, DynamicGaps, TTraceConfig>::Type TDPProfile;
-    return _computeAlignment(dpContext, traceSegments, dpScoutState, seqH, seqV, scoringScheme, alignConfig._band,
-                             TDPProfile());
-}
-
-template <typename TTraceSegment, typename TSpec, typename TDPScoutStateSpec,
-          typename TSequenceH, typename TSequenceV, typename TScoreValue2, typename TScoreSpec, typename TDPType,
-          typename TBand, typename TFreeEndGaps, typename TTraceConfig, typename TGapModel>
-typename Value<Score<TScoreValue2, TScoreSpec> >::Type
-_setUpAndRunAlignment(String<TTraceSegment, TSpec> & traceSegments,
+_setUpAndRunAlignment(TTrace & traceSegments,
                       DPScoutState_<TDPScoutStateSpec> & dpScoutState,
                       TSequenceH const & seqH,
                       TSequenceV const & seqV,
@@ -335,28 +303,18 @@ _setUpAndRunAlignment(String<TTraceSegment, TSpec> & traceSegments,
                       AlignConfig2<TDPType, TBand, TFreeEndGaps, TTraceConfig> const & alignConfig,
                       TGapModel const & /**/)
 {
-    if (IsSameType<TGapModel, LinearGaps>::VALUE)
-    {
-        DPContext<TScoreValue2, LinearGaps> dpContext;
-        return _setUpAndRunAlignment(dpContext, traceSegments, dpScoutState, seqH, seqV, scoringScheme, alignConfig);
-    }
-    else if (IsSameType<TGapModel, AffineGaps>::VALUE)
-    {
-        DPContext<TScoreValue2, AffineGaps> dpContext;
-        return _setUpAndRunAlignment(dpContext, traceSegments, dpScoutState, seqH, seqV, scoringScheme, alignConfig);
-    }
-    else
-    {
-        DPContext<TScoreValue2, DynamicGaps> dpContext;
-        return _setUpAndRunAlignment(dpContext, traceSegments, dpScoutState, seqH, seqV, scoringScheme, alignConfig);
-    }
+    DPContext<TScoreValue2, TGapModel> dpContext;
+    return _setUpAndRunAlignment(dpContext, traceSegments, dpScoutState, seqH, seqV, scoringScheme, alignConfig);
 }
 
-template <typename TTraceSegment, typename TSpec, typename TDPScoutStateSpec,
-          typename TSequenceH, typename TSequenceV, typename TScoreValue2, typename TScoreSpec, typename TDPType,
-          typename TBand, typename TFreeEndGaps, typename TTraceConfig>
+template <typename TTrace,
+          typename TDPScoutStateSpec,
+          typename TSequenceH,
+          typename TSequenceV,
+          typename TScoreValue2, typename TScoreSpec,
+          typename TDPType, typename TBand, typename TFreeEndGaps, typename TTraceConfig>
 typename Value<Score<TScoreValue2, TScoreSpec> >::Type
-_setUpAndRunAlignment(String<TTraceSegment, TSpec> & traceSegments,
+_setUpAndRunAlignment(TTrace & traceSegments,
                       DPScoutState_<TDPScoutStateSpec> & dpScoutState,
                       TSequenceH const & seqH,
                       TSequenceV const & seqV,
diff --git a/include/seqan/align/dp_trace_segment.h b/include/seqan/align/dp_trace_segment.h
index f71bc8c..2b591be 100644
--- a/include/seqan/align/dp_trace_segment.h
+++ b/include/seqan/align/dp_trace_segment.h
@@ -61,7 +61,7 @@ template <typename TPosition, typename TSize>
 class TraceSegment_
 {
 public:
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
 
     TPosition _horizontalBeginPos;      // the begin position in horizontal dimension
     TPosition _verticalBeginPos;        // the begin position in vertical dimension
@@ -69,7 +69,7 @@ public:
     TTraceValue _traceValue;            // the trace direction
 
     TraceSegment_() :
-        _horizontalBeginPos(0), _verticalBeginPos(0), _length(0), _traceValue(+TraceBitMap_::NONE){}
+        _horizontalBeginPos(0), _verticalBeginPos(0), _length(0), _traceValue(+TraceBitMap_<TTraceValue>::NONE){}
 
     TraceSegment_(TraceSegment_ const & other) :
         _horizontalBeginPos(other._horizontalBeginPos),
@@ -169,7 +169,8 @@ template <typename TPosition, typename TSize>
 inline TPosition
 _getEndHorizontal(TraceSegment_<TPosition, TSize> const & traceSegment)
 {
-    if (traceSegment._traceValue & (TraceBitMap_::HORIZONTAL | TraceBitMap_::DIAGONAL))
+    typedef typename std::remove_const<decltype(traceSegment._traceValue)>::type TTraceValue;
+    if (traceSegment._traceValue & (TraceBitMap_<TTraceValue>::HORIZONTAL | TraceBitMap_<TTraceValue>::DIAGONAL))
     {
         return traceSegment._horizontalBeginPos + traceSegment._length;
     }
@@ -185,7 +186,8 @@ template <typename TPosition, typename TSize>
 inline TPosition
 _getEndVertical(TraceSegment_<TPosition, TSize> const & traceSegment)
 {
-    if (traceSegment._traceValue & (TraceBitMap_::VERTICAL | TraceBitMap_::DIAGONAL))
+    typedef typename std::remove_const<decltype(traceSegment._traceValue)>::type TTraceValue;
+    if (traceSegment._traceValue & (TraceBitMap_<TTraceValue>::VERTICAL | TraceBitMap_<TTraceValue>::DIAGONAL))
     {
         return traceSegment._verticalBeginPos + traceSegment._length;
     }
@@ -228,8 +230,6 @@ _setLength(TraceSegment_<TPosition, TSize> & traceSegment, TSize newLength)
     traceSegment._length = newLength;
 }
 
-
-
 // ----------------------------------------------------------------------------
 // Function _translateTraceValue()
 // ----------------------------------------------------------------------------
@@ -242,22 +242,22 @@ String<char> _translateTraceValue(TTraceValue const & traceValue)
 {
     String<char> transcript;
 
-    if ((traceValue & TraceBitMap_::DIAGONAL) == TraceBitMap_::DIAGONAL)
+    if ((traceValue & TraceBitMap_<TTraceValue>::DIAGONAL) == TraceBitMap_<TTraceValue>::DIAGONAL)
         append(transcript, 'D');
-    if ((traceValue & TraceBitMap_::VERTICAL) == TraceBitMap_::VERTICAL)
+    if ((traceValue & TraceBitMap_<TTraceValue>::VERTICAL) == TraceBitMap_<TTraceValue>::VERTICAL)
         append(transcript, 'V');
-    if ((traceValue & TraceBitMap_::HORIZONTAL) == TraceBitMap_::HORIZONTAL)
+    if ((traceValue & TraceBitMap_<TTraceValue>::HORIZONTAL) == TraceBitMap_<TTraceValue>::HORIZONTAL)
         append(transcript, 'H');
-    if ((traceValue & TraceBitMap_::VERTICAL_OPEN) == TraceBitMap_::VERTICAL_OPEN)
+    if ((traceValue & TraceBitMap_<TTraceValue>::VERTICAL_OPEN) == TraceBitMap_<TTraceValue>::VERTICAL_OPEN)
         append(transcript, 'v');
-    if ((traceValue & TraceBitMap_::HORIZONTAL_OPEN) == TraceBitMap_::HORIZONTAL_OPEN)
+    if ((traceValue & TraceBitMap_<TTraceValue>::HORIZONTAL_OPEN) == TraceBitMap_<TTraceValue>::HORIZONTAL_OPEN)
         append(transcript, 'h');
-    if ((traceValue & TraceBitMap_::MAX_FROM_VERTICAL_MATRIX) == TraceBitMap_::MAX_FROM_VERTICAL_MATRIX)
+    if ((traceValue & TraceBitMap_<TTraceValue>::MAX_FROM_VERTICAL_MATRIX) == TraceBitMap_<TTraceValue>::MAX_FROM_VERTICAL_MATRIX)
         append(transcript, '|');
-    if ((traceValue & TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX) == TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX)
+    if ((traceValue & TraceBitMap_<TTraceValue>::MAX_FROM_HORIZONTAL_MATRIX) == TraceBitMap_<TTraceValue>::MAX_FROM_HORIZONTAL_MATRIX)
         append(transcript, '-');
 
-    if ((traceValue) == TraceBitMap_::NONE)
+    if ((traceValue) == TraceBitMap_<TTraceValue>::NONE)
         append(transcript, '0');
     return transcript;
 }
@@ -327,12 +327,12 @@ inline void _recordSegment(TTraceSegments & traceSegments,
     if (segmentLength == 0)
         return;  // we don't store empty segments
 
-    if (traceValue & TraceBitMap_::DIAGONAL)
-        appendValue(traceSegments, TTraceSegment(horizontalBeginPos, verticalBeginPos, segmentLength, +TraceBitMap_::DIAGONAL));
-    else if (traceValue & TraceBitMap_::VERTICAL)
-        appendValue(traceSegments, TTraceSegment(horizontalBeginPos, verticalBeginPos, segmentLength, +TraceBitMap_::VERTICAL));
-    else if (traceValue & TraceBitMap_::HORIZONTAL)
-        appendValue(traceSegments, TTraceSegment(horizontalBeginPos, verticalBeginPos, segmentLength, +TraceBitMap_::HORIZONTAL));
+    if (traceValue & TraceBitMap_<TTraceValue>::DIAGONAL)
+        appendValue(traceSegments, TTraceSegment(horizontalBeginPos, verticalBeginPos, segmentLength, +TraceBitMap_<TTraceValue>::DIAGONAL));
+    else if (traceValue & TraceBitMap_<TTraceValue>::VERTICAL)
+        appendValue(traceSegments, TTraceSegment(horizontalBeginPos, verticalBeginPos, segmentLength, +TraceBitMap_<TTraceValue>::VERTICAL));
+    else if (traceValue & TraceBitMap_<TTraceValue>::HORIZONTAL)
+        appendValue(traceSegments, TTraceSegment(horizontalBeginPos, verticalBeginPos, segmentLength, +TraceBitMap_<TTraceValue>::HORIZONTAL));
     // everything else is not tracked.
 }
 
diff --git a/include/seqan/align/dp_traceback_adaptor.h b/include/seqan/align/dp_traceback_adaptor.h
index 57f5fd8..f9e495f 100644
--- a/include/seqan/align/dp_traceback_adaptor.h
+++ b/include/seqan/align/dp_traceback_adaptor.h
@@ -100,11 +100,11 @@ _adaptTraceSegmentsTo(Gaps<TSourceHorizontal, TGapsSpecHorizontal> & gapsHorizon
         TSize segmentSize = value(srcIter)._length;
         switch (value(srcIter)._traceValue)
         {
-        case TraceBitMap_::HORIZONTAL:
+        case TraceBitMap_<>::HORIZONTAL:
             insertGaps(it1, segmentSize);
             break;
 
-        case TraceBitMap_::VERTICAL:
+        case TraceBitMap_<>::VERTICAL:
             insertGaps(it0, segmentSize);
             break;
         }
@@ -149,16 +149,16 @@ _adaptTraceSegmentsTo(Graph<Alignment<TStringSet, TCargo, TSpec> > & g,
 
         switch (traceSegments[i]._traceValue)
         {
-        case TraceBitMap_::DIAGONAL:
+        case TraceBitMap_<>::DIAGONAL:
             addEdge(g, addVertex(g, seqHId, traceSegments[i]._horizontalBeginPos, traceSegments[i]._length),
                     addVertex(g, seqVId, traceSegments[i]._verticalBeginPos, traceSegments[i]._length));
             break;
 
-        case TraceBitMap_::VERTICAL:
+        case TraceBitMap_<>::VERTICAL:
             addVertex(g, seqVId, traceSegments[i]._verticalBeginPos, traceSegments[i]._length);
             break;
 
-        case TraceBitMap_::HORIZONTAL:
+        case TraceBitMap_<>::HORIZONTAL:
             addVertex(g, seqHId, traceSegments[i]._horizontalBeginPos, traceSegments[i]._length);
         }
     }
@@ -191,7 +191,7 @@ _adaptTraceSegmentsTo(TFile & file,
     {
         switch (traceSegments[k - 1]._traceValue)
         {
-            case TraceBitMap_::DIAGONAL:
+            case TraceBitMap_<>::DIAGONAL:
             {
                 int j = traceSegments[k - 1]._verticalBeginPos;
                 for (int i = traceSegments[k - 1]._horizontalBeginPos; i < (int) (traceSegments[k - 1]._horizontalBeginPos + traceSegments[k - 1]._length); ++i)
@@ -202,14 +202,14 @@ _adaptTraceSegmentsTo(TFile & file,
                 break;
             }
 
-            case TraceBitMap_::VERTICAL:
+            case TraceBitMap_<>::VERTICAL:
             {
                 for (int i = traceSegments[k - 1]._verticalBeginPos; i < (int) (traceSegments[k - 1]._verticalBeginPos + traceSegments[k - 1]._length); ++i)
                     _writeTraceSegmentToFile(file, gapValue<char>(), seqV[i]);
                 break;
             }
 
-            case TraceBitMap_::HORIZONTAL:
+            case TraceBitMap_<>::HORIZONTAL:
             {
                 for (int i = traceSegments[k - 1]._horizontalBeginPos; i < (int) (traceSegments[k - 1]._horizontalBeginPos + traceSegments[k - 1]._length); ++i)
                     _writeTraceSegmentToFile(file, seqH[i], gapValue<char>());
@@ -233,7 +233,7 @@ _adaptTraceSegmentsTo(String<Fragment<TSize, TFragmentSpec>, TStringSpec> & matc
     typedef Fragment<TSize, TFragmentSpec> TFragment;
 
     for (TSize2 i = 0; i < length(traceSegments); ++i)
-        if (traceSegments[i]._traceValue == TraceBitMap_::DIAGONAL)
+        if (traceSegments[i]._traceValue == TraceBitMap_<>::DIAGONAL)
             appendValue(
                 matches,
                 TFragment(seqHId, traceSegments[i]._horizontalBeginPos, seqVId,
diff --git a/include/seqan/align/dp_traceback_impl.h b/include/seqan/align/dp_traceback_impl.h
index 6b1e407..a2439f9 100644
--- a/include/seqan/align/dp_traceback_impl.h
+++ b/include/seqan/align/dp_traceback_impl.h
@@ -200,16 +200,16 @@ _doTracebackGoDiagonal(TTarget & target,
                        TracebackCoordinator_<TPosition> & tracebackCoordinator,
                        TGapCosts const &)
 {
-    if (!(lastTraceValue & TraceBitMap_::DIAGONAL)) // the old trace value was not diagonal
+    if (!(lastTraceValue & TraceBitMap_<>::DIAGONAL)) // the old trace value was not diagonal
     {
         _recordSegment(target, tracebackCoordinator._currColumn, tracebackCoordinator._currRow, fragmentLength,
                        lastTraceValue);
 
-        lastTraceValue = TraceBitMap_::DIAGONAL;
+        lastTraceValue = TraceBitMap_<>::DIAGONAL;
         fragmentLength = 0;
     }
     _traceDiagonal(matrixNavigator, _isInBand(tracebackCoordinator));
-    traceValue = value(matrixNavigator);
+    traceValue = scalarValue(matrixNavigator);
     --tracebackCoordinator._currColumn;
     --tracebackCoordinator._currRow;
     ++fragmentLength;
@@ -230,35 +230,35 @@ _doTracebackGoVertical(TTarget & target,
                        TracebackCoordinator_<TPosition> & tracebackCoordinator,
                        TGapCosts const &)
 {
-    if (!(lastTraceValue & TraceBitMap_::VERTICAL)) // the old trace value was not diagonal
+    if (!(lastTraceValue & TraceBitMap_<>::VERTICAL)) // the old trace value was not diagonal
     {
         _recordSegment(target, tracebackCoordinator._currColumn, tracebackCoordinator._currRow, fragmentLength,
                        lastTraceValue);
 
-        lastTraceValue = TraceBitMap_::VERTICAL;
+        lastTraceValue = TraceBitMap_<>::VERTICAL;
         fragmentLength = 0;
     }
     // We are in a vertical gap. So continue after we reach the end of the vertical gap.
     if (IsSameType<TGapCosts, AffineGaps>::VALUE)
     {
-        while ((!(traceValue & TraceBitMap_::VERTICAL_OPEN) || (traceValue & TraceBitMap_::VERTICAL)) && (tracebackCoordinator._currRow != 1))
+        while ((!(traceValue & TraceBitMap_<>::VERTICAL_OPEN) || (traceValue & TraceBitMap_<>::VERTICAL)) && (tracebackCoordinator._currRow != 1))
         {
             _traceVertical(matrixNavigator, _isInBand(tracebackCoordinator));
-            traceValue = value(matrixNavigator);
+            traceValue = scalarValue(matrixNavigator);
             --tracebackCoordinator._currRow;
             ++fragmentLength;
         }
         // We have to ensure, that we do not continue in vertical direction if we reached a vertical_open sign.
         _traceVertical(matrixNavigator, _isInBand(tracebackCoordinator));
         // Forbid continuing in vertical direction.
-        traceValue = value(matrixNavigator); // & (TraceBitMap_::NO_VERTICAL_TRACEBACK | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        traceValue = scalarValue(matrixNavigator); // & (TraceBitMap_<>::NO_VERTICAL_TRACEBACK | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         --tracebackCoordinator._currRow;
         ++fragmentLength;
     }
     else
     {
         _traceVertical(matrixNavigator, _isInBand(tracebackCoordinator));
-        traceValue = value(matrixNavigator);
+        traceValue = scalarValue(matrixNavigator);
         --tracebackCoordinator._currRow;
         ++fragmentLength;
     }
@@ -279,16 +279,16 @@ _doTracebackMaxFromVertical(TTarget & target,
                             TracebackCoordinator_<TPosition> & tracebackCoordinator,
                             TGapCosts const &)
 {
-    if (!(lastTraceValue & TraceBitMap_::VERTICAL)) // the old trace value was not diagonal
+    if (!(lastTraceValue & TraceBitMap_<>::VERTICAL)) // the old trace value was not diagonal
     {
         _recordSegment(target, tracebackCoordinator._currColumn, tracebackCoordinator._currRow, fragmentLength,
                        lastTraceValue);
-        lastTraceValue = TraceBitMap_::VERTICAL;
+        lastTraceValue = TraceBitMap_<>::VERTICAL;
         fragmentLength = 0;
     }
     _traceVertical(matrixNavigator, _isInBand(tracebackCoordinator));
     // Forbid continuing in vertical direction.
-    traceValue = value(matrixNavigator); // & (TraceBitMap_::NO_VERTICAL_TRACEBACK | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+    traceValue = scalarValue(matrixNavigator); // & (TraceBitMap_<>::NO_VERTICAL_TRACEBACK | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
     --tracebackCoordinator._currRow;
     ++fragmentLength;
 }
@@ -308,33 +308,33 @@ _doTracebackGoHorizontal(TTarget & target,
                          TracebackCoordinator_<TPosition> & tracebackCoordinator,
                          TGapCosts const &)
 {
-    if (!(lastTraceValue & TraceBitMap_::HORIZONTAL)) // the old trace value was not diagonal
+    if (!(lastTraceValue & TraceBitMap_<>::HORIZONTAL)) // the old trace value was not diagonal
     {
         _recordSegment(target, tracebackCoordinator._currColumn, tracebackCoordinator._currRow, fragmentLength,
                        lastTraceValue);
 
-        lastTraceValue = TraceBitMap_::HORIZONTAL;
+        lastTraceValue = TraceBitMap_<>::HORIZONTAL;
         fragmentLength = 0;
     }
     if (IsSameType<TGapCosts, AffineGaps>::VALUE)
     {
-        while ((!(traceValue & TraceBitMap_::HORIZONTAL_OPEN) || (traceValue & TraceBitMap_::HORIZONTAL)) && (tracebackCoordinator._currColumn != 1))
+        while ((!(traceValue & TraceBitMap_<>::HORIZONTAL_OPEN) || (traceValue & TraceBitMap_<>::HORIZONTAL)) && (tracebackCoordinator._currColumn != 1))
         {
             _traceHorizontal(matrixNavigator, _isInBand(tracebackCoordinator));
-            traceValue = value(matrixNavigator);
+            traceValue = scalarValue(matrixNavigator);
             --tracebackCoordinator._currColumn;
             ++fragmentLength;
         }
         _traceHorizontal(matrixNavigator, _isInBand(tracebackCoordinator));
         // Forbid continuing in horizontal direction.
-        traceValue = value(matrixNavigator);  // & (TraceBitMap_::NO_HORIZONTAL_TRACEBACK | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        traceValue = scalarValue(matrixNavigator);  // & (TraceBitMap_<>::NO_HORIZONTAL_TRACEBACK | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         --tracebackCoordinator._currColumn;
         ++fragmentLength;
     }
     else
     {
         _traceHorizontal(matrixNavigator, _isInBand(tracebackCoordinator));
-        traceValue = value(matrixNavigator);
+        traceValue = scalarValue(matrixNavigator);
         --tracebackCoordinator._currColumn;
         ++fragmentLength;
     }
@@ -355,16 +355,16 @@ _doTracebackMaxFromHorizontal(TTarget & target,
                               TracebackCoordinator_<TPosition> & tracebackCoordinator,
                               TGapCosts const &)
 {
-    if (!(lastTraceValue & TraceBitMap_::HORIZONTAL)) // the old trace value was not diagonal
+    if (!(lastTraceValue & TraceBitMap_<>::HORIZONTAL)) // the old trace value was not diagonal
     {
         _recordSegment(target, tracebackCoordinator._currColumn, tracebackCoordinator._currRow, fragmentLength,
                        lastTraceValue);
-        lastTraceValue = TraceBitMap_::HORIZONTAL;
+        lastTraceValue = TraceBitMap_<>::HORIZONTAL;
         fragmentLength = 0;
     }
     _traceHorizontal(matrixNavigator, _isInBand(tracebackCoordinator));
     // Forbid continuing in horizontal direction.
-    traceValue = value(matrixNavigator); // & (TraceBitMap_::NO_HORIZONTAL_TRACEBACK | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+    traceValue = scalarValue(matrixNavigator); // & (TraceBitMap_<>::NO_HORIZONTAL_TRACEBACK | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
     --tracebackCoordinator._currColumn;
     ++fragmentLength;
 }
@@ -387,29 +387,29 @@ _doTraceback(TTarget & target,
 {
     if (TIsGapsLeft::VALUE)  // Gaps should be placed on the left.
     {
-        if (traceValue & TraceBitMap_::DIAGONAL)
+        if (traceValue & TraceBitMap_<>::DIAGONAL)
         {
             _doTracebackGoDiagonal(target, matrixNavigator, traceValue, lastTraceValue, fragmentLength, tracebackCoordinator, gapsCost);
         }  // In case of Gotoh we prefer the longest possible way in this direction.
-        else if (traceValue & TraceBitMap_::MAX_FROM_VERTICAL_MATRIX && traceValue & TraceBitMap_::VERTICAL)
+        else if (traceValue & TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX && traceValue & TraceBitMap_<>::VERTICAL)
         {
             _doTracebackGoVertical(target, matrixNavigator, traceValue, lastTraceValue, fragmentLength, tracebackCoordinator, gapsCost);
         }
-        else if (traceValue & TraceBitMap_::MAX_FROM_VERTICAL_MATRIX && traceValue & TraceBitMap_::VERTICAL_OPEN)
+        else if (traceValue & TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX && traceValue & TraceBitMap_<>::VERTICAL_OPEN)
         {
             _doTracebackMaxFromVertical(target, matrixNavigator, traceValue, lastTraceValue, fragmentLength, tracebackCoordinator, gapsCost);
         }
-        else if (traceValue & TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX && traceValue & TraceBitMap_::HORIZONTAL)
+        else if (traceValue & TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX && traceValue & TraceBitMap_<>::HORIZONTAL)
         {
             _doTracebackGoHorizontal(target, matrixNavigator, traceValue, lastTraceValue, fragmentLength, tracebackCoordinator, gapsCost);
         }
-        else if (traceValue & TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX && traceValue & TraceBitMap_::HORIZONTAL_OPEN)
+        else if (traceValue & TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX && traceValue & TraceBitMap_<>::HORIZONTAL_OPEN)
         {
             _doTracebackMaxFromHorizontal(target, matrixNavigator, traceValue, lastTraceValue, fragmentLength, tracebackCoordinator, gapsCost);
         }  // In case of Gotoh we prefer the longest possible way in this direction.
         else // the trace back is either NONE or something else
         {
-            if (traceValue == TraceBitMap_::NONE)
+            if (traceValue == TraceBitMap_<>::NONE)
             {
                 return;
             }
@@ -418,29 +418,29 @@ _doTraceback(TTarget & target,
     }
     else  // Gaps should be placed on the right.
     {
-        if (traceValue & TraceBitMap_::MAX_FROM_VERTICAL_MATRIX && traceValue & TraceBitMap_::VERTICAL)
+        if (traceValue & TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX && traceValue & TraceBitMap_<>::VERTICAL)
         {
             _doTracebackGoVertical(target, matrixNavigator, traceValue, lastTraceValue, fragmentLength, tracebackCoordinator, gapsCost);
         }
-        else if (traceValue & TraceBitMap_::MAX_FROM_VERTICAL_MATRIX && traceValue & TraceBitMap_::VERTICAL_OPEN)
+        else if (traceValue & TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX && traceValue & TraceBitMap_<>::VERTICAL_OPEN)
         {
             _doTracebackMaxFromVertical(target, matrixNavigator, traceValue, lastTraceValue, fragmentLength, tracebackCoordinator, gapsCost);
         }
-        else if (traceValue & TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX && traceValue & TraceBitMap_::HORIZONTAL)
+        else if (traceValue & TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX && traceValue & TraceBitMap_<>::HORIZONTAL)
         {
             _doTracebackGoHorizontal(target, matrixNavigator, traceValue, lastTraceValue, fragmentLength, tracebackCoordinator, gapsCost);
         }
-        else if (traceValue & TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX && traceValue & TraceBitMap_::HORIZONTAL_OPEN)
+        else if (traceValue & TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX && traceValue & TraceBitMap_<>::HORIZONTAL_OPEN)
         {
             _doTracebackMaxFromHorizontal(target, matrixNavigator, traceValue, lastTraceValue, fragmentLength, tracebackCoordinator, gapsCost);
         }  // In case of Gotoh we prefer the longest possible way in this direction.
-        else if (traceValue & TraceBitMap_::DIAGONAL)
+        else if (traceValue & TraceBitMap_<>::DIAGONAL)
         {
             _doTracebackGoDiagonal(target, matrixNavigator, traceValue, lastTraceValue, fragmentLength, tracebackCoordinator, gapsCost);
         }  // In case of Gotoh we prefer the longest possible way in this direction.
         else // the trace back is either NONE or something else
         {
-            if (traceValue == TraceBitMap_::NONE)
+            if (traceValue == TraceBitMap_<>::NONE)
             {
                 return;
             }
@@ -459,49 +459,52 @@ _retrieveInitialTraceDirection(TTraceValue & traceValue, TDPProfile const & /*dp
 {
     if (PreferGapsAtEnd_<TDPProfile>::VALUE)
     {
-        if (traceValue & TraceBitMap_::MAX_FROM_VERTICAL_MATRIX)
+        if (traceValue & TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX)
         {
-            traceValue &= (TraceBitMap_::VERTICAL | TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
-            return TraceBitMap_::VERTICAL;
+            traceValue &= (TraceBitMap_<>::VERTICAL | TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
+            return TraceBitMap_<>::VERTICAL;
         }
-        else if (traceValue & TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX)
+        else if (traceValue & TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX)
         {
-            traceValue &= (TraceBitMap_::HORIZONTAL | TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
-            return TraceBitMap_::HORIZONTAL;
+            traceValue &= (TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
+            return TraceBitMap_<>::HORIZONTAL;
         }
-        return TraceBitMap_::DIAGONAL;  // We set the last value to the
+        return TraceBitMap_<>::DIAGONAL;  // We set the last value to the
     }
 
-    if (traceValue & TraceBitMap_::DIAGONAL)
-            return TraceBitMap_::DIAGONAL;
-    if (traceValue & (TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX))
-        return  TraceBitMap_::VERTICAL;
-    if (traceValue & (TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX))
-        return TraceBitMap_::HORIZONTAL;
+    if (traceValue & TraceBitMap_<>::DIAGONAL)
+            return TraceBitMap_<>::DIAGONAL;
+    if (traceValue & (TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX))
+        return  TraceBitMap_<>::VERTICAL;
+    if (traceValue & (TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX))
+        return TraceBitMap_<>::HORIZONTAL;
 
-    return TraceBitMap_::NONE;
+    return TraceBitMap_<>::NONE;
 }
 
 // ----------------------------------------------------------------------------
 // Function _computeTraceback()
 // ----------------------------------------------------------------------------
 
-template <typename TTarget, typename TDPTraceMatrixNavigator, typename TSequenceH, typename TSequenceV,
-          typename TBandFlag, typename TAlgorithm, typename TGapCosts, typename TTracebackSpec>
-void _computeTraceback(TTarget & target,
-                       TDPTraceMatrixNavigator & matrixNavigator,
-                       unsigned  maxHostPosition,
-                       TSequenceH const & seqH,
-                       TSequenceV const & seqV,
-                       DPBandConfig<TBandFlag> const & band,
-                       DPProfile_<TAlgorithm, TGapCosts, TTracebackSpec> const & dpProfile)
+template <typename TTarget,
+          typename TDPTraceMatrixNavigator,
+          typename TSizeH,
+          typename TSizeV,
+          typename TBandFlag,
+          typename TAlgorithm, typename TGapCosts, typename TTracebackSpec>
+inline SEQAN_FUNC_DISABLE_IF(Is<ContainerConcept<TSizeH> >, void)
+_computeTraceback(TTarget & target,
+                  TDPTraceMatrixNavigator & matrixNavigator,
+                  unsigned  maxHostPosition,
+                  TSizeH const & seqHSize,
+                  TSizeV const & seqVSize,
+                  DPBandConfig<TBandFlag> const & band,
+                  DPProfile_<TAlgorithm, TGapCosts, TTracebackSpec> const & dpProfile)
 {
     typedef typename Container<TDPTraceMatrixNavigator>::Type TContainer;
     typedef typename Size<TContainer>::Type TSize;
     typedef typename Position<TContainer>::Type TPosition;
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
-    typedef typename Size<TSequenceH>::Type TSizeH;
-    typedef typename Size<TSequenceV>::Type TSizeV;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
 
     if (IsSameType<TTracebackSpec, TracebackOff>::VALUE)
         return;
@@ -509,16 +512,13 @@ void _computeTraceback(TTarget & target,
     // Determine whether or not we place gaps to the left.
     typedef typename IsGapsLeft_<TTracebackSpec>::Type TIsGapsLeft;
 
-    TSizeH seqHSize = length(seqH);
-    TSizeV seqVSize = length(seqV);
-
     // Set the navigator to the position where the maximum was found.
     _setToPosition(matrixNavigator, maxHostPosition);
 
     SEQAN_ASSERT_LEQ(coordinate(matrixNavigator, +DPMatrixDimension_::HORIZONTAL), seqHSize);
     SEQAN_ASSERT_LEQ(coordinate(matrixNavigator, +DPMatrixDimension_::VERTICAL), seqVSize);
 
-    TTraceValue traceValue = value(matrixNavigator);
+    TTraceValue traceValue = scalarValue(matrixNavigator);
     TTraceValue lastTraceValue = _retrieveInitialTraceDirection(traceValue, dpProfile);
 
     TracebackCoordinator_<TPosition> tracebackCoordinator(coordinate(matrixNavigator, +DPMatrixDimension_::HORIZONTAL),
@@ -529,42 +529,81 @@ void _computeTraceback(TTarget & target,
     {
         if (tracebackCoordinator._currRow != seqVSize)
             _recordSegment(target, seqHSize, tracebackCoordinator._currRow, seqVSize - tracebackCoordinator._currRow,
-                           +TraceBitMap_::VERTICAL);
+                           +TraceBitMap_<>::VERTICAL);
         if (tracebackCoordinator._currColumn != seqHSize)
             _recordSegment(target, tracebackCoordinator._currColumn, tracebackCoordinator._currRow, seqHSize -
-                           tracebackCoordinator._currColumn, +TraceBitMap_::HORIZONTAL);
+                           tracebackCoordinator._currColumn, +TraceBitMap_<>::HORIZONTAL);
     }
 
     TSize fragmentLength = 0;
-    while (!_hasReachedEnd(tracebackCoordinator) && traceValue != TraceBitMap_::NONE)
+    while (!_hasReachedEnd(tracebackCoordinator) && traceValue != TraceBitMap_<>::NONE)
         _doTraceback(target, matrixNavigator, traceValue, lastTraceValue, fragmentLength, tracebackCoordinator, TGapCosts(), TIsGapsLeft());
 
-
     // Record last detected fragment.
     _recordSegment(target, tracebackCoordinator._currColumn, tracebackCoordinator._currRow, fragmentLength, lastTraceValue);
     if (TraceHead_<TAlgorithm>::VALUE)
     {
         // Record leading gaps if any.
         if (tracebackCoordinator._currRow != 0u)
-            _recordSegment(target, 0, 0, tracebackCoordinator._currRow, +TraceBitMap_::VERTICAL);
+            _recordSegment(target, 0, 0, tracebackCoordinator._currRow, +TraceBitMap_<>::VERTICAL);
         if (tracebackCoordinator._currColumn != 0u)
-            _recordSegment(target, 0, 0, tracebackCoordinator._currColumn, +TraceBitMap_::HORIZONTAL);
+            _recordSegment(target, 0, 0, tracebackCoordinator._currColumn, +TraceBitMap_<>::HORIZONTAL);
     }
 }
 
-// Needed as a delegation method to allow invocation of both methods with host position and dpScout.
+//// Needed as a delegation method to allow invocation of both methods with host position and dpScout.
+template <typename TTarget,
+          typename TDPTraceMatrixNavigator,
+          typename TSequenceH,
+          typename TSequenceV,
+          typename TBandFlag,
+          typename TAlgorithm, typename TGapCosts, typename TTracebackSpec>
+inline SEQAN_FUNC_ENABLE_IF(Is<ContainerConcept<TSequenceH> >, void)
+_computeTraceback(TTarget & target,
+                  TDPTraceMatrixNavigator & matrixNavigator,
+                  unsigned  maxHostPosition,
+                  TSequenceH const & seqH,
+                  TSequenceV const & seqV,
+                  DPBandConfig<TBandFlag> const & band,
+                  DPProfile_<TAlgorithm, TGapCosts, TTracebackSpec> const & dpProfile)
+{
+    _computeTraceback(target, matrixNavigator, maxHostPosition, length(seqH), length(seqV), band, dpProfile);
+}
+
+template <typename TTarget,
+          typename TDPTraceMatrixNavigator,
+          typename TDPCell, typename TScoutSpec,
+          typename TSizeH,
+          typename TSizeV,
+          typename TBandFlag,
+          typename TAlgorithm,
+          typename TGapCosts,
+          typename TTracebackSpec>
+inline SEQAN_FUNC_DISABLE_IF(Is<ContainerConcept<TSizeH> >, void)
+_computeTraceback(TTarget & target,
+                  TDPTraceMatrixNavigator & matrixNavigator,
+                  DPScout_<TDPCell, TScoutSpec> const & dpScout,
+                  TSizeH const & seqHSize,
+                  TSizeV const & seqVSize,
+                  DPBandConfig<TBandFlag> const & band,
+                  DPProfile_<TAlgorithm, TGapCosts, TTracebackSpec> const & dpProfile)
+{
+    _computeTraceback(target, matrixNavigator, maxHostPosition(dpScout), seqHSize, seqVSize, band, dpProfile);
+}
+
 template <typename TTarget, typename TDPTraceMatrixNavigator, typename TDPCell, typename TScoutSpec,
           typename TSequenceH, typename TSequenceV, typename TBandFlag, typename TAlgorithm, typename TGapCosts,
           typename TTracebackSpec>
-void _computeTraceback(TTarget & target,
-                       TDPTraceMatrixNavigator & matrixNavigator,
-                       DPScout_<TDPCell, TScoutSpec> const & dpScout,
-                       TSequenceH const & seqH,
-                       TSequenceV const & seqV,
-                       DPBandConfig<TBandFlag> const & band,
-                       DPProfile_<TAlgorithm, TGapCosts, TTracebackSpec> const & dpProfile)
+inline SEQAN_FUNC_ENABLE_IF(Is<ContainerConcept<TSequenceH> >, void)
+_computeTraceback(TTarget & target,
+                  TDPTraceMatrixNavigator & matrixNavigator,
+                  DPScout_<TDPCell, TScoutSpec> const & dpScout,
+                  TSequenceH const & seqH,
+                  TSequenceV const & seqV,
+                  DPBandConfig<TBandFlag> const & band,
+                  DPProfile_<TAlgorithm, TGapCosts, TTracebackSpec> const & dpProfile)
 {
-    _computeTraceback(target, matrixNavigator, maxHostPosition(dpScout), seqH, seqV, band, dpProfile);
+    _computeTraceback(target, matrixNavigator, maxHostPosition(dpScout), length(seqH), length(seqV), band, dpProfile);
 }
 
 }  // namespace seqan
diff --git a/include/seqan/align/fragment.h b/include/seqan/align/fragment.h
index 4e53673..de6ae1e 100644
--- a/include/seqan/align/fragment.h
+++ b/include/seqan/align/fragment.h
@@ -65,7 +65,7 @@ struct ExactFragment;
  * @headerfile <seqan/align.h>
  * @brief A type for ungapped, pairwise segment matches that maybe in reverse orientation.
  *
- * Compared to the @link ExactFragment @endlink specialzing type of @link Fragment @endlink, a @link
+ * Compared to the @link ExactFragment @endlink <tt>ExactReversableFragment</tt> is a specialized type of @link Fragment @endlink. A @link
  * ExactReversableFragment @endlink stores an additional bool value to indicate whether a match is in reverse
  * orientation or not.
  *
@@ -331,7 +331,7 @@ label(Fragment<TSize, TSpec> const& f,
  * @signature TId sequenceId(frag, seqNum);
  *
  * @param[in] frag   A Fragment.
- * @param[in] seqNum The sequence number fo rwhich the id should be retrieved.  Note that @link Fragment @endlink
+ * @param[in] seqNum The sequence number for which the id should be retrieved.  Note that @link Fragment @endlink
                      stores information about exactly two sequences which can be accessed with seqNum 0 or 1 but whose
                      ids may differ from their seqNum.
  *
diff --git a/include/seqan/align/gaps_anchor.h b/include/seqan/align/gaps_anchor.h
index 161a637..c75042d 100644
--- a/include/seqan/align/gaps_anchor.h
+++ b/include/seqan/align/gaps_anchor.h
@@ -79,7 +79,7 @@ inline void _reinitAnchorGaps(Gaps<TSequence, AnchorGaps<TGapAnchors> > & gaps);
  * @signature template <typename TSource, typename TGapAnchors = String<GapAnchor<unsigned> > >
  *            class Gaps<TSource, AnchorGaps<TGapAnchors> >;
  *
- * @tparam TSource     The type of the underling sequence.
+ * @tparam TSource     The type of the underlying sequence.
  * @tparam TGapAnchors The type of the string of @link GapAnchor @endlink objects.
  */
 
@@ -92,7 +92,7 @@ inline void _reinitAnchorGaps(Gaps<TSequence, AnchorGaps<TGapAnchors> > & gaps);
  * @signature Gaps::Gaps(anchors);
  *
  * @param[in] other   Another @link AnchorGaps @endlink object to copy from.
- * @param[in] source  The underling sequence to construct the Gaps object from.
+ * @param[in] source  The underlying sequence to construct the Gaps object from.
  * @param[in] anchors The string of anchors to construct with.
  *
  * An AnchorGaps object has a default constructor, can be constructed from the underlying source, and/or a string of
@@ -220,8 +220,14 @@ public:
     // Array Subscript Operator
     // -----------------------------------------------------------------------
 
-    inline TValue_
-    operator[](TPosition_ clippedViewPos) const
+    inline typename Reference<Gaps>::Type
+    operator[](TPosition_ const clippedViewPos)
+    {
+        return value(*this, clippedViewPos);
+    }
+
+    inline typename Reference<Gaps const>::Type
+    operator[](TPosition_ const clippedViewPos) const
     {
         return value(*this, clippedViewPos);
     }
@@ -462,24 +468,6 @@ insertGaps(Gaps<TSequence, AnchorGaps<TGapAnchors> > & gaps, TPosition clippedVi
 }
 
 // ----------------------------------------------------------------------------
-// Function value()
-// ----------------------------------------------------------------------------
-
-template <typename TSequence, typename TGapAnchors, typename TPosition>
-inline typename Value<Gaps<TSequence, AnchorGaps<TGapAnchors> > >::Type
-value(Gaps<TSequence, AnchorGaps<TGapAnchors> > const & gaps, TPosition clippedViewPos)
-{
-    // TODO(holtgrew): Implement without iterator?
-    typedef Gaps<TSequence, AnchorGaps<TGapAnchors> > TGaps;
-    typedef typename Iterator<TGaps const>::Type TIter;
-
-    TIter it = iter(gaps, clippedViewPos);
-    if (isGap(it))
-        return '-';
-    return *it;
-}
-
-// ----------------------------------------------------------------------------
 // Function removeGaps()
 // ----------------------------------------------------------------------------
 
@@ -703,7 +691,7 @@ assignSource(Gaps<TSequence, AnchorGaps<TGapAnchor> > & gaps, TSequence2 const &
  *
  * @return TPos Position in sequence space (Metafunction: @link ContainerConcept#Position @endlink).
  *
- * See the example below to construct the Gaps ojbect.  Note that this construction is fast since it ionly a thing wrapper
+ * See the example below to construct the Gaps object.  Note that this construction is fast since it is only a thin wrapper
  * around underlying objects.
  *
  * @section Examples
@@ -805,7 +793,7 @@ positionGapToSeq(Gaps<TSource, AnchorGaps<TGapAnchors> > const & me, TPosition p
  * @signature TPos positionSeqToGap(gaps, pos);
  *
  * @param[in] gaps The AnchorGaps object to use for the translation.
- * @param[in] pos  The gap space position to conver to sequence space.
+ * @param[in] pos  The gap space position to convert to sequence space.
  *
  * @return TPos The resulting position in sequence space (Metafunction: @link ContainerConcept#Position @endlink).
  *
diff --git a/include/seqan/align/gaps_array.h b/include/seqan/align/gaps_array.h
index 0151b91..840cbbb 100644
--- a/include/seqan/align/gaps_array.h
+++ b/include/seqan/align/gaps_array.h
@@ -181,8 +181,14 @@ public:
     // Array Subscript Operator
     // -----------------------------------------------------------------------
 
-    inline TValue_
-    operator[](TPosition_ clippedViewPos) const
+    inline typename Reference<Gaps>::Type
+    operator[](TPosition_ const clippedViewPos)
+    {
+        return value(*this, clippedViewPos);
+    }
+
+    inline typename Reference<Gaps const>::Type
+    operator[](TPosition_ const clippedViewPos) const
     {
         return value(*this, clippedViewPos);
     }
@@ -208,6 +214,8 @@ void swap(Gaps<TSequence, ArrayGaps> & lhs, Gaps<TSequence, ArrayGaps> & rhs)
 // Metafunctions
 // ============================================================================
 
+
+
 // ============================================================================
 // Functions
 // ============================================================================
@@ -631,21 +639,6 @@ insertGaps(Gaps<TSequence, ArrayGaps> & gaps, TPosition clippedViewPos, TCount c
 }
 
 // ----------------------------------------------------------------------------
-// Function value()
-// ----------------------------------------------------------------------------
-
-template <typename TSequence, typename TPosition>
-inline typename Value<Gaps<TSequence, ArrayGaps> >::Type
-value(Gaps<TSequence, ArrayGaps> const & gaps, TPosition clippedViewPos)
-{
-    if (isGap(gaps, clippedViewPos))
-        return '-';
-    else
-        return value(source(gaps), toSourcePosition(gaps, clippedViewPos));
-    return typename Value<Gaps<TSequence, ArrayGaps> >::Type();
-}
-
-// ----------------------------------------------------------------------------
 // Function removeGaps()
 // ----------------------------------------------------------------------------
 
diff --git a/include/seqan/align/gaps_base.h b/include/seqan/align/gaps_base.h
index 98b34b0..7495844 100644
--- a/include/seqan/align/gaps_base.h
+++ b/include/seqan/align/gaps_base.h
@@ -276,6 +276,28 @@ struct IsSequence<Gaps<TSequence, TSpec> const> : IsSequence<Gaps<TSequence, TSp
 // ============================================================================
 
 // ----------------------------------------------------------------------------
+// Function value()
+// ----------------------------------------------------------------------------
+
+template <typename TSequence, typename TSpec,
+          typename TPosition>
+inline typename Reference<Gaps<TSequence, TSpec> >::Type
+value(Gaps<TSequence, TSpec> & gaps,
+      TPosition const clippedViewPos)
+{
+    return typename Reference<Gaps<TSequence, TSpec> >::Type(begin(gaps, Standard()) + clippedViewPos);
+}
+
+template <typename TSequence, typename TSpec,
+          typename TPosition>
+inline typename Reference<Gaps<TSequence, TSpec> const>::Type
+value(Gaps<TSequence, TSpec> const & gaps,
+      TPosition const clippedViewPos)
+{
+    return typename Reference<Gaps<TSequence, TSpec> const>::Type(begin(gaps, Standard()) + clippedViewPos);
+}
+
+// ----------------------------------------------------------------------------
 // Function iter()
 // ----------------------------------------------------------------------------
 
@@ -1067,9 +1089,9 @@ assignSource(Gaps<TSequence, TSpec> & gaps, TValue const & value)
 
 /*!
  * @fn Gaps#copyGaps
- * @brief Copy gaps from one Gaps object to another (in the clipped view of both argumetns).
+ * @brief Copy gaps from one Gaps object to another (in the clipped view of both arguments).
  *
- * The user is resposible for ensuring that the gaps are over sequences of same length and appropriate clipping.
+ * The user is responsible for ensuring that the gaps are over sequences of same length and appropriate clipping.
  *
  * @signature void copyGaps(dest, source);
  *
diff --git a/include/seqan/align/global_alignment_banded.h b/include/seqan/align/global_alignment_banded.h
index fb28053..eab33c6 100644
--- a/include/seqan/align/global_alignment_banded.h
+++ b/include/seqan/align/global_alignment_banded.h
@@ -542,6 +542,245 @@ TScoreValue globalAlignmentScore(StringSet<TString, TSpec> const & strings,
     return globalAlignmentScore(strings[0], strings[1], scoringScheme, alignConfig, lowerDiag, upperDiag);
 }
 
+
+// ============================================================================
+// Many-vs-Many align interfaces.
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// Function globalAlignmentScore()         [banded, SIMD version, 2x StringSet]
+// ----------------------------------------------------------------------------
+
+template <typename TString, typename TSpec,
+          typename TScoreValue, typename TScoreSpec,
+          bool TOP, bool LEFT, bool RIGHT, bool BOTTOM, typename TACSpec,
+          typename TAlgoTag>
+String<TScoreValue> globalAlignmentScore(StringSet<TString, TSpec> const & stringsH,
+                                         StringSet<TString, TSpec> const & stringsV,
+                                         Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                         AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec> const & /*alignConfig*/,
+                                         int lowerDiag,
+                                         int upperDiag,
+                                         TAlgoTag const & /*algoTag*/)
+{
+    typedef AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec> TAlignConfig;
+    typedef typename SubstituteAlignConfig_<TAlignConfig>::Type TFreeEndGaps;
+    typedef AlignConfig2<DPGlobal, DPBandConfig<BandOn>, TFreeEndGaps, TracebackOff> TAlignConfig2;
+    typedef typename SubstituteAlgoTag_<TAlgoTag>::Type TGapModel;
+
+    SEQAN_ASSERT_EQ(length(stringsH), length(stringsV));
+    return _alignWrapper(stringsH, stringsV, scoringScheme, TAlignConfig2(lowerDiag, upperDiag), TGapModel());
+}
+
+// Interface without AlignConfig<>.
+template <typename TString, typename TSpec,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlgoTag>
+String<TScoreValue> globalAlignmentScore(StringSet<TString, TSpec> const & stringsH,
+                                         StringSet<TString, TSpec> const & stringsV,
+                                         Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                         int lowerDiag,
+                                         int upperDiag,
+                                         TAlgoTag const & algoTag)
+{
+    AlignConfig<> alignConfig;
+    return globalAlignmentScore(stringsH, stringsV, scoringScheme, alignConfig, lowerDiag, upperDiag, algoTag);
+}
+
+// Interface without algorithm tag.
+template <typename TString, typename TSpec,
+          typename TScoreValue, typename TScoreSpec,
+          bool TOP, bool LEFT, bool RIGHT, bool BOTTOM, typename TACSpec>
+String<TScoreValue> globalAlignmentScore(StringSet<TString, TSpec> const & stringsH,
+                                         StringSet<TString, TSpec> const & stringsV,
+                                         Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                         AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec> const & alignConfig,
+                                         int lowerDiag,
+                                         int upperDiag)
+{
+    if (scoreGapOpen(scoringScheme) == scoreGapExtend(scoringScheme))
+        return globalAlignmentScore(stringsH, stringsV, scoringScheme, alignConfig, lowerDiag, upperDiag, NeedlemanWunsch());
+    else
+        return globalAlignmentScore(stringsH, stringsV, scoringScheme, alignConfig, lowerDiag, upperDiag, Gotoh());
+}
+
+// Interface without AlignConfig<> and algorithm tag.
+template <typename TString, typename TSpec,
+          typename TScoreValue, typename TScoreSpec>
+String<TScoreValue> globalAlignmentScore(StringSet<TString, TSpec> const & stringsH,
+                                         StringSet<TString, TSpec> const & stringsV,
+                                         Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                         int lowerDiag,
+                                         int upperDiag)
+{
+    AlignConfig<> alignConfig;
+    return globalAlignmentScore(stringsH, stringsV, scoringScheme, alignConfig, lowerDiag, upperDiag);
+}
+
+// ----------------------------------------------------------------------------
+// Function globalAlignmentScore()   [banded, SIMD version, String vs StringSet]
+// ----------------------------------------------------------------------------
+
+template <typename TStringH,
+          typename TStringV, typename TSpec,
+          typename TScoreValue, typename TScoreSpec,
+          bool TOP, bool LEFT, bool RIGHT, bool BOTTOM, typename TACSpec,
+          typename TAlgoTag>
+String<TScoreValue> globalAlignmentScore(TStringH const & stringH,
+                                         StringSet<TStringV, TSpec> const & stringsV,
+                                         Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                         AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec> const & /*alignConfig*/,
+                                         int lowerDiag,
+                                         int upperDiag,
+                                         TAlgoTag const & /*algoTag*/)
+{
+    typedef AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec> TAlignConfig;
+    typedef typename SubstituteAlignConfig_<TAlignConfig>::Type TFreeEndGaps;
+    typedef AlignConfig2<DPGlobal, DPBandConfig<BandOn>, TFreeEndGaps, TracebackOff> TAlignConfig2;
+    typedef typename SubstituteAlgoTag_<TAlgoTag>::Type TGapModel;
+
+    return _alignWrapper(stringH, stringsV, scoringScheme, TAlignConfig2(lowerDiag, upperDiag), TGapModel());
+}
+
+// Interface without AlignConfig<>.
+template <typename TString, typename TSpec,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlgoTag>
+String<TScoreValue> globalAlignmentScore(TString const & stringH,
+                                         StringSet<TString, TSpec> const & stringsV,
+                                         Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                         int lowerDiag,
+                                         int upperDiag,
+                                         TAlgoTag const & algoTag)
+{
+    AlignConfig<> alignConfig;
+    return globalAlignmentScore(stringH, stringsV, scoringScheme, alignConfig, lowerDiag, upperDiag, algoTag);
+}
+
+// Interface without algorithm tag.
+template <typename TString, typename TSpec,
+          typename TScoreValue, typename TScoreSpec,
+          bool TOP, bool LEFT, bool RIGHT, bool BOTTOM, typename TACSpec>
+String<TScoreValue> globalAlignmentScore(TString const & stringH,
+                                         StringSet<TString, TSpec> const & stringsV,
+                                         Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                         AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec> const & alignConfig,
+                                         int lowerDiag,
+                                         int upperDiag)
+{
+    if (scoreGapOpen(scoringScheme) == scoreGapExtend(scoringScheme))
+        return globalAlignmentScore(stringH, stringsV, scoringScheme, alignConfig, lowerDiag, upperDiag, NeedlemanWunsch());
+    else
+        return globalAlignmentScore(stringH, stringsV, scoringScheme, alignConfig, lowerDiag, upperDiag, Gotoh());
+}
+
+// Interface without AlignConfig<> and algorithm tag.
+template <typename TString, typename TSpec,
+          typename TScoreValue, typename TScoreSpec>
+String<TScoreValue> globalAlignmentScore(TString const & stringH,
+                                         StringSet<TString, TSpec> const & stringsV,
+                                         Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                         int lowerDiag,
+                                         int upperDiag)
+{
+    AlignConfig<> alignConfig;
+    return globalAlignmentScore(stringH, stringsV, scoringScheme, alignConfig, lowerDiag, upperDiag);
+}
+
+// ----------------------------------------------------------------------------
+// Function globalAlignment()              [banded, SIMD version, GapsH, GapsV]
+// ----------------------------------------------------------------------------
+
+template <typename TGapSequenceH, typename TSetSpecH,
+typename TGapSequenceV, typename TSetSpecV,
+typename TScoreValue, typename TScoreSpec,
+bool TOP, bool LEFT, bool RIGHT, bool BOTTOM, typename TACSpec, typename TAlgoTag>
+inline auto
+globalAlignment(StringSet<TGapSequenceH, TSetSpecH> & gapSeqSetH,
+                StringSet<TGapSequenceV, TSetSpecV> & gapSeqSetV,
+                Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec> const & /*alignConfig*/,
+                int const lowerDiag,
+                int const upperDiag,
+                TAlgoTag const & /*algoTag*/)
+{
+    typedef AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec>              TAlignConfig;
+    typedef typename SubstituteAlignConfig_<TAlignConfig>::Type         TFreeEndGaps;
+    typedef AlignConfig2<DPGlobal, DPBandConfig<BandOn>, TFreeEndGaps> TAlignConfig2;
+    typedef typename SubstituteAlgoTag_<TAlgoTag>::Type                 TGapModel;
+
+    return _alignWrapper(gapSeqSetH, gapSeqSetV, scoringScheme, TAlignConfig2(lowerDiag, upperDiag), TGapModel());
+}
+
+// ----------------------------------------------------------------------------
+// Function globalAlignment()          [banded, SIMD version, StringSet<Align>]
+// ----------------------------------------------------------------------------
+
+template <typename TSequence, typename TAlignSpec, typename TScoreValue, typename TScoreSpec,
+          bool TOP, bool LEFT, bool RIGHT, bool BOTTOM, typename TACSpec, typename TAlgoTag>
+String<TScoreValue> globalAlignment(StringSet<Align<TSequence, TAlignSpec> > & alignSet,
+                                    Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                    AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec> const & alignConfig,
+                                    int const lowerDiag,
+                                    int const upperDiag,
+                                    TAlgoTag const & algoTag)
+{
+    typedef Align<TSequence, TAlignSpec>    TAlign;
+    typedef typename Row<TAlign>::Type      TGapSequence;
+
+    StringSet<TGapSequence, Dependent<> > gapSetH;
+    StringSet<TGapSequence, Dependent<> > gapSetV;
+    reserve(gapSetH, length(alignSet));
+    reserve(gapSetV, length(alignSet));
+
+    for (auto & align : alignSet)
+    {
+        appendValue(gapSetH, row(align, 0));
+        appendValue(gapSetV, row(align, 1));
+    }
+
+    return globalAlignment(gapSetH, gapSetV, scoringScheme, alignConfig, lowerDiag, upperDiag, algoTag);
+}
+
+// Interface without AlignConfig<>.
+template <typename TSequence, typename TAlignSpec,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlgoTag>
+String<TScoreValue> globalAlignment(StringSet<Align<TSequence, TAlignSpec> > & align,
+                                    Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                    int lowerDiag, int upperDiag,
+                                    TAlgoTag const & algoTag)
+{
+    AlignConfig<> alignConfig;
+    return globalAlignment(align, scoringScheme, alignConfig, lowerDiag, upperDiag, algoTag);
+}
+
+// Interface without algorithm tag.
+template <typename TSequence, typename TAlignSpec,
+          typename TScoreValue, typename TScoreSpec,
+          bool TOP, bool LEFT, bool RIGHT, bool BOTTOM, typename TACSpec>
+String<TScoreValue> globalAlignment(StringSet<Align<TSequence, TAlignSpec> > & align,
+                                    Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                    AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec> const & alignConfig,
+                                    int lowerDiag, int upperDiag)
+{
+    if (scoreGapOpen(scoringScheme) == scoreGapExtend(scoringScheme))
+        return globalAlignment(align, scoringScheme, alignConfig, lowerDiag, upperDiag, NeedlemanWunsch());
+    else
+        return globalAlignment(align, scoringScheme, alignConfig, lowerDiag, upperDiag, Gotoh());
+}
+
+// Interface without AlignConfig<> and algorithm tag.
+template <typename TSequence, typename TAlignSpec,
+          typename TScoreValue, typename TScoreSpec>
+String<TScoreValue> globalAlignment(StringSet<Align<TSequence, TAlignSpec> > & align,
+                                    Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                    int lowerDiag, int upperDiag)
+{
+    AlignConfig<> alignConfig;
+    return globalAlignment(align, scoringScheme, alignConfig, lowerDiag, upperDiag);
+}
+
 }  // namespace seqan
 
 #endif  // #ifndef SEQAN_INCLUDE_SEQAN_ALIGN_GLOBAL_ALIGNMENT_BANDED_H_
diff --git a/include/seqan/align/global_alignment_hirschberg_impl.h b/include/seqan/align/global_alignment_hirschberg_impl.h
index 0c118cf..0497f7d 100644
--- a/include/seqan/align/global_alignment_hirschberg_impl.h
+++ b/include/seqan/align/global_alignment_hirschberg_impl.h
@@ -62,31 +62,11 @@ typedef Tag<Hirschberg_> Hirschberg;
 class HirschbergSet_
 {
 public:
-    int x1,x2,y1,y2;
+    unsigned x1;
+    unsigned x2;
+    unsigned y1;
+    unsigned y2;
     int score;
-
-    HirschbergSet_()
-        : x1(0), x2(0), y1(0), y2(0), score(0)
-    {}
-
-    HirschbergSet_(int a1,int a2,int b1,int b2,int sc)
-        : x1(a1), x2(a2), y1(b1), y2(b2), score(sc)
-    {
-        SEQAN_ASSERT_LEQ(a1, a2);
-        SEQAN_ASSERT_LEQ(b1, b2);
-    }
-
-    HirschbergSet_ &
-    operator=(HirschbergSet_ const & other_)
-    {
-        x1 = other_.x1;
-        x2 = other_.x2;
-        y1 = other_.y1;
-        y2 = other_.y2;
-        score = other_.score;
-        return *this;
-    }
-
 };
 
 // ============================================================================
@@ -101,13 +81,13 @@ public:
 // Function _begin1()
 // ----------------------------------------------------------------------------
 
-inline int&
+inline unsigned &
 _begin1(HirschbergSet_ & me) {
     return me.x1;
 }
 
 
-inline int const&
+inline unsigned const &
 _begin1(HirschbergSet_ const & me) {
     return me.x1;
 }
@@ -117,7 +97,7 @@ _begin1(HirschbergSet_ const & me) {
 // ----------------------------------------------------------------------------
 
 inline void
-_setBegin1(HirschbergSet_ & me, int const & new_begin) {
+_setBegin1(HirschbergSet_ & me, unsigned const & new_begin) {
     me.x1 = new_begin;
 }
 
@@ -125,12 +105,12 @@ _setBegin1(HirschbergSet_ & me, int const & new_begin) {
 // Function _end1()
 // ----------------------------------------------------------------------------
 
-inline int&
+inline unsigned &
 _end1(HirschbergSet_ & me) {
     return me.x2;
 }
 
-inline int const&
+inline unsigned const &
 _end1(HirschbergSet_ const & me) {
     return me.x2;
 }
@@ -140,7 +120,7 @@ _end1(HirschbergSet_ const & me) {
 // ----------------------------------------------------------------------------
 
 inline void
-_setEnd1(HirschbergSet_ & me, int const & new_end) {
+_setEnd1(HirschbergSet_ & me, unsigned const & new_end) {
     me.x2 = new_end;
 }
 
@@ -148,12 +128,12 @@ _setEnd1(HirschbergSet_ & me, int const & new_end) {
 // Function _begin2()
 // ----------------------------------------------------------------------------
 
-inline int&
+inline unsigned &
 _begin2(HirschbergSet_ & me) {
     return me.y1;
 }
 
-inline int const&
+inline unsigned const &
 _begin2(HirschbergSet_ const & me) {
     return me.y1;
 }
@@ -163,7 +143,7 @@ _begin2(HirschbergSet_ const & me) {
 // ----------------------------------------------------------------------------
 
 inline void
-_setBegin2(HirschbergSet_ & me, int const & new_begin) {
+_setBegin2(HirschbergSet_ & me, unsigned const & new_begin) {
     me.y1 = new_begin;
 }
 
@@ -171,12 +151,12 @@ _setBegin2(HirschbergSet_ & me, int const & new_begin) {
 // Function _end2()
 // ----------------------------------------------------------------------------
 
-inline int&
+inline unsigned &
 _end2(HirschbergSet_ & me) {
     return me.y2;
 }
 
-inline int const&
+inline unsigned const &
 _end2(HirschbergSet_ const & me) {
     return me.y2;
 }
@@ -186,7 +166,7 @@ _end2(HirschbergSet_ const & me) {
 // ----------------------------------------------------------------------------
 
 inline void
-_setEnd2(HirschbergSet_ & me, int const & new_end) {
+_setEnd2(HirschbergSet_ & me, unsigned const & new_end) {
     me.y2 = new_end;
 }
 
@@ -194,7 +174,7 @@ _setEnd2(HirschbergSet_ & me, int const & new_end) {
 // Function _score()
 // ----------------------------------------------------------------------------
 
-inline int&
+inline int &
 _score(HirschbergSet_ & me)    {
     return me.score;
 }
@@ -203,7 +183,7 @@ _score(HirschbergSet_ & me)    {
 // Function _score()
 // ----------------------------------------------------------------------------
 
-inline int const&
+inline int const &
 _score(HirschbergSet_ const & me)
 {
     return me.score;
@@ -403,7 +383,7 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
     String<TScoreValue> c_score;
     resize(c_score,len2 + 1);
     // string to strore the backpointers
-    String<int> pointer;
+    String<unsigned> pointer;
     resize(pointer,len2 + 1);
 
     // scoring-scheme specific score values
@@ -417,9 +397,9 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
     std::stack<HirschbergSet_> to_process;
     HirschbergSet_ target;
 
-    int i,j;
+    unsigned i,j;
 
-    HirschbergSet_ hs_complete(0,len1,0,len2,0);
+    HirschbergSet_ hs_complete{0, static_cast<unsigned>(len1), 0, static_cast<unsigned>(len2), 0};
     to_process.push(hs_complete);
 
     while(!to_process.empty())
@@ -617,7 +597,7 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
                 using a backpointer to remember the position where the optimal alignment passes
                 the mid column
             */
-            int mid = static_cast<int>(floor( static_cast<double>((_begin1(target) + _end1(target))/2) ));
+            unsigned mid = static_cast<unsigned>(floor( static_cast<double>((_begin1(target) + _end1(target))/2) ));
 
 #ifdef SEQAN_HIRSCHBERG_DEBUG_CUT
             std::cout << "calculate cut for s1 " << _begin1(target) << " to " << _end1(target) << " and s2 " << _begin2(target) << " to " << _end2(target) << std::endl;
@@ -701,8 +681,8 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
             std::cout << "requested position in c_score and pointer is " << _end2(target) << std::endl;
             std::cout << "alignment score is " << c_score[_end2(target)] << std::endl << std::endl;
 #endif
-            to_process.push(HirschbergSet_(mid,_end1(target),pointer[_end2(target)],_end2(target),0));
-            to_process.push(HirschbergSet_(_begin1(target),mid,_begin2(target),pointer[_end2(target)],0));
+            to_process.push(HirschbergSet_{mid, _end1(target), pointer[_end2(target)], _end2(target), 0});
+            to_process.push(HirschbergSet_{_begin1(target), mid, _begin2(target), pointer[_end2(target)], 0});
         }
         /* END CUT */
     }
diff --git a/include/seqan/align/global_alignment_myers_hirschberg_impl.h b/include/seqan/align/global_alignment_myers_hirschberg_impl.h
index 4b9d1af..e390eca 100644
--- a/include/seqan/align/global_alignment_myers_hirschberg_impl.h
+++ b/include/seqan/align/global_alignment_myers_hirschberg_impl.h
@@ -35,6 +35,8 @@
 #ifndef SEQAN_INCLUDE_SEQAN_ALIGN_GLOBAL_ALIGNMENT_MYERS_HIRSCHBERG_IMPL_H_
 #define SEQAN_INCLUDE_SEQAN_ALIGN_GLOBAL_ALIGNMENT_MYERS_HIRSCHBERG_IMPL_H_
 
+#include <bitset>
+
 namespace seqan {
 
 // ============================================================================
@@ -164,6 +166,20 @@ namespace seqan {
 #endif
 
 // ----------------------------------------------------------------------------
+// Function _printBinary()
+// ----------------------------------------------------------------------------
+
+// Debug integer types in binary format.
+template <typename TStream, typename T>
+inline void
+_printBinary(TStream & stream, T const n)
+{
+    std::bitset<BitsPerValue<T>::VALUE> bits(n);
+    stream << bits;
+    stream << '\n';
+}
+
+// ----------------------------------------------------------------------------
 // Function globalAlignment()
 // ----------------------------------------------------------------------------
 
@@ -226,7 +242,7 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
     TScoreValue score_gap = -1;
 
     // additional vars
-    int i;
+    unsigned i;
 
     // stack with parts of matrix that have to be processed
     std::stack<HirschbergSet_> to_process;
@@ -254,7 +270,7 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
         reverseBitMask[blockCount * ordValue(getValue(y,len_y - j - 1)) + j/BLOCK_SIZE] = reverseBitMask[blockCount * ordValue(getValue(y,len_y - j - 1)) + j/BLOCK_SIZE] | 1 << (j%BLOCK_SIZE);
     }
 
-    HirschbergSet_ hs_complete(0,len_x,0,len_y,1);
+    HirschbergSet_ hs_complete{0, static_cast<unsigned>(len_x), 0, static_cast<unsigned>(len_y), 1};
     to_process.push(hs_complete);
 
     while(!to_process.empty())
@@ -472,7 +488,7 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
             unsigned int X, D0, HN, HP;
 
             /* compute cut position */
-            int mid = static_cast<int>(floor( static_cast<double>((_begin2(target) + _end2(target))/2) ));
+            unsigned mid = static_cast<int>(floor( static_cast<double>((_begin2(target) + _end2(target))/2) ));
 
             /* debug infos */
 #ifdef MYERS_HIRSCHBERG_VERBOSE
@@ -485,22 +501,22 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
             std::cout << std::endl;
 #endif
             /* compute blocks and score masks */
-            int fStartBlock = _begin2(target) / BLOCK_SIZE;
-            int fEndBlock = (mid - 1) / BLOCK_SIZE;
-            int fSpannedBlocks = (fEndBlock - fStartBlock) + 1;
+            unsigned fStartBlock = _begin2(target) / BLOCK_SIZE;
+            unsigned fEndBlock = (mid - 1) / BLOCK_SIZE;
+            unsigned fSpannedBlocks = (fEndBlock - fStartBlock) + 1;
 
-            unsigned int fScoreMask = 1 << ((mid  - 1) % BLOCK_SIZE);
+            unsigned int fScoreMask = 1 << ((mid - 1) % BLOCK_SIZE);
 
             unsigned int fOffSet = _begin2(target) % BLOCK_SIZE;
             unsigned int fSilencer = ~0;
             fSilencer <<= fOffSet;
 
             /* reset v-bitvectors */
-            std::fill(begin(VP, Standard()) + fStartBlock, end(VP, Standard()) + fEndBlock + 1, maxValue<unsigned>());
-            std::fill(begin(VN, Standard()) + fStartBlock, end(VN, Standard()) + fEndBlock + 1, 0);
+            std::fill(begin(VP, Standard()) + fStartBlock, begin(VP, Standard()) + fEndBlock + 1, maxValue<unsigned>());
+            std::fill(begin(VN, Standard()) + fStartBlock, begin(VN, Standard()) + fEndBlock + 1, 0);
 
             /* determine start-position and start-score */
-            int pos = _begin1(target);
+            auto pos = _begin1(target);
             score = (mid - _begin2(target)) * score_gap;
             c_score[pos] = score;
 
@@ -530,7 +546,7 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
             } /* end - short patten */
             else
             {
-                int shift, currentBlock;
+                unsigned shift, currentBlock;
                 unsigned int temp, carryD0, carryHP, carryHN;
 
                 while (pos < _end1(target))
@@ -581,6 +597,7 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
                          VP[currentBlock] = temp | ~(X | D0);
                     }
 
+                    _printBinary(std::cout, HP);
                     /* update score */
                     if (HP & fScoreMask)
                         score--;
@@ -596,9 +613,9 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
             /* compute with myers - forward - end */
 
             /* compute blocks and score masks */
-            int rStartBlock = (len_y - _end2(target)) / BLOCK_SIZE;
-            int rEndBlock = (len_y - mid - 1) / BLOCK_SIZE;
-            int rSpannedBlocks = (rEndBlock - rStartBlock) + 1;
+            unsigned rStartBlock = (len_y - _end2(target)) / BLOCK_SIZE;
+            unsigned rEndBlock = (len_y - mid - 1) / BLOCK_SIZE;
+            unsigned rSpannedBlocks = (rEndBlock - rStartBlock) + 1;
 
             unsigned int rScoreMask = 1 <<  ((len_y - mid - 1) % BLOCK_SIZE);
             unsigned int rOffSet = (len_y - _end2(target)) % BLOCK_SIZE;
@@ -606,11 +623,11 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
             rSilencer <<= rOffSet;
 
             /* reset v-bitvectors */
-            std::fill(begin(VP, Standard()) + rStartBlock, end(VP, Standard()) + rEndBlock + 1, maxValue<unsigned>());
-            std::fill(begin(VN, Standard()) + rStartBlock, end(VN, Standard()) + rEndBlock + 1, 0);
+            std::fill(begin(VP, Standard()) + rStartBlock, begin(VP, Standard()) + rEndBlock + 1, maxValue<unsigned>());
+            std::fill(begin(VN, Standard()) + rStartBlock, begin(VN, Standard()) + rEndBlock + 1, 0);
 
             /* determine start-position and start-score */
-            pos = _end1(target)-1;
+            pos = _end1(target);
             score = (_end2(target) - mid) * score_gap;
 
             /* set start score */
@@ -624,7 +641,7 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
             /* compute with myers - reverse - begin */
             if(rSpannedBlocks == 1)
             {
-                while (pos >= _begin1(target)) {
+                while (pos-- > _begin1(target)) {
                     X = (rSilencer & reverseBitMask[(blockCount * ordValue(static_cast<TPatternAlphabet>(getValue(x,pos)))) + rStartBlock]) | VN[rStartBlock];
 
                     D0 = ((VP[rStartBlock] + (X & VP[rStartBlock])) ^ VP[rStartBlock]) | X;
@@ -649,16 +666,14 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
                         max = c_score[pos];
                         rmax =  score;
                     }
-
-                    --pos;
                 }
             } /* end - short pattern */
             else
             {
-                int shift, currentBlock;
+                unsigned shift, currentBlock;
                 unsigned int temp, carryD0, carryHP, carryHN;
 
-                while (pos >= _begin1(target))
+                while (pos-- > _begin1(target))
                 {
                     carryD0 = carryHP = carryHN = 0;
                     shift = blockCount * ordValue(static_cast<TPatternAlphabet>(getValue(x,pos)));
@@ -720,8 +735,6 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
                         max = c_score[pos];
                         rmax = score;
                     }
-
-                    --pos;
                 }
 
             }  /* end - long pattern */
@@ -735,8 +748,8 @@ _globalAlignment(Gaps<TSequenceH, TGapsSpecH> & gapsH,
             printf("Optimal cut is at %i and %i with forward score %i and reverse score %i\n\n",mid,pos_max,(max - rmax),rmax);
 #endif
             /* push the two computed parts of the dp-matrix on process stack */
-            to_process.push(HirschbergSet_(pos_max,_end1(target),mid,_end2(target),rmax));
-            to_process.push(HirschbergSet_(_begin1(target),pos_max,_begin2(target),mid,max - rmax));
+            to_process.push(HirschbergSet_{pos_max, _end1(target), mid, _end2(target), rmax});
+            to_process.push(HirschbergSet_{_begin1(target), pos_max, _begin2(target), mid, max - rmax});
 
         }
         /* END CUT */
diff --git a/include/seqan/align/global_alignment_unbanded.h b/include/seqan/align/global_alignment_unbanded.h
index 64982b8..2d3f72e 100644
--- a/include/seqan/align/global_alignment_unbanded.h
+++ b/include/seqan/align/global_alignment_unbanded.h
@@ -34,7 +34,7 @@
 // Global alignment interface for the unbanded Needleman-Wunsch and Gotoh
 // algorithms.
 //
-// We define the interface functions pretty explicitely (versus just TAlign,
+// We define the interface functions pretty explicitly (versus just TAlign,
 // TFragments etc.) so the candidates the compiler gives when resolution to
 // the globalFunction() fails is actually meaningful.
 // ==========================================================================
@@ -148,7 +148,7 @@ class Fragment;
  *
  * @include demos/dox/align/global_alignment_banded.cpp.stdout
  *
- * http://seqan.readthedocs.org/en/develop/Tutorial/PairwiseSequenceAlignment.html
+ * http://seqan.readthedocs.io/en/develop/Tutorial/PairwiseSequenceAlignment.html
  *
  * @section References
  *
@@ -483,7 +483,7 @@ TScoreValue globalAlignment(String<Fragment<TSize, TFragmentSpec>, TStringSpec>
  * The same limitations to algorithms as in @link globalAlignment @endlink apply.  Furthermore, the
  * <tt>MyersBitVector</tt> and <tt>MyersHirschberg</tt> variants can only be used without any other parameter.
  *
- * @see http://seqan.readthedocs.org/en/develop/Tutorial/PairwiseSequenceAlignment.html
+ * @see http://seqan.readthedocs.io/en/develop/Tutorial/PairwiseSequenceAlignment.html
  * @see globalAlignment
  */
 
@@ -622,6 +622,220 @@ TScoreValue globalAlignmentScore(StringSet<TString, TSpec> const & strings,
     return globalAlignmentScore(strings[0], strings[1], scoringScheme, alignConfig);
 }
 
+// ----------------------------------------------------------------------------
+// Function globalAlignmentScore()       [unbanded, SIMD version, 2x StringSet]
+// ----------------------------------------------------------------------------
+
+template <typename TString1, typename TString2, typename TSpec,
+          typename TScoreValue, typename TScoreSpec,
+          bool TOP, bool LEFT, bool RIGHT, bool BOTTOM, typename TACSpec,
+          typename TAlgoTag>
+String<TScoreValue> globalAlignmentScore(StringSet<TString1, TSpec> const & stringsH,
+                                         StringSet<TString2, TSpec> const & stringsV,
+                                         Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                         AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec> const & /*alignConfig*/,
+                                         TAlgoTag const & /*algoTag*/)
+{
+    SEQAN_ASSERT_EQ(length(stringsH), length(stringsV));
+    typedef AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec> TAlignConfig;
+    typedef typename SubstituteAlignConfig_<TAlignConfig>::Type TFreeEndGaps;
+    typedef AlignConfig2<DPGlobal, DPBandConfig<BandOff>, TFreeEndGaps, TracebackOff> TAlignConfig2;
+    typedef typename SubstituteAlgoTag_<TAlgoTag>::Type TGapModel;
+
+    return _alignWrapper(stringsH, stringsV, scoringScheme, TAlignConfig2(), TGapModel());
+}
+
+// Interface without AlignConfig<>.
+template <typename TString1, typename TString2, typename TSpec,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlgoTag>
+String<TScoreValue> globalAlignmentScore(StringSet<TString1, TSpec> const & stringsH,
+                                         StringSet<TString2, TSpec> const & stringsV,
+                                         Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                         TAlgoTag const & algoTag)
+{
+    AlignConfig<> alignConfig;
+    return globalAlignmentScore(stringsH, stringsV, scoringScheme, alignConfig, algoTag);
+}
+
+// Interface without algorithm tag.
+template <typename TString1, typename TString2, typename TSpec,
+          typename TScoreValue, typename TScoreSpec,
+          bool TOP, bool LEFT, bool RIGHT, bool BOTTOM, typename TACSpec>
+String<TScoreValue> globalAlignmentScore(StringSet<TString1, TSpec> const & stringsH,
+                                         StringSet<TString2, TSpec> const & stringsV,
+                                         Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                         AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec> const & alignConfig)
+{
+    if (scoreGapOpen(scoringScheme) == scoreGapExtend(scoringScheme))
+        return globalAlignmentScore(stringsH, stringsV, scoringScheme, alignConfig, NeedlemanWunsch());
+    else
+        return globalAlignmentScore(stringsH, stringsV, scoringScheme, alignConfig, Gotoh());
+}
+
+// Interface without AlignConfig<> and algorithm tag.
+template <typename TString1, typename TString2, typename TSpec,
+          typename TScoreValue, typename TScoreSpec>
+String<TScoreValue> globalAlignmentScore(StringSet<TString1, TSpec> const & stringsH,
+                                         StringSet<TString2, TSpec> const & stringsV,
+                                         Score<TScoreValue, TScoreSpec> const & scoringScheme)
+{
+    AlignConfig<> alignConfig;
+    return globalAlignmentScore(stringsH, stringsV, scoringScheme, alignConfig);
+}
+
+// --------------------------------------------------------------------------------
+// Function globalAlignmentScore()    [unbanded, SIMD version, String vs StringSet]
+// --------------------------------------------------------------------------------
+template <typename TString1, typename TString2, typename TSpec,
+          typename TScoreValue, typename TScoreSpec,
+          bool TOP, bool LEFT, bool RIGHT, bool BOTTOM, typename TACSpec,
+          typename TAlgoTag>
+String<TScoreValue> globalAlignmentScore(TString1 const & stringH,
+                                         StringSet<TString2, TSpec> const & stringsV,
+                                         Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                         AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec> const & /*alignConfig*/,
+                                         TAlgoTag const & /*algoTag*/)
+{
+    typedef AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec> TAlignConfig;
+    typedef typename SubstituteAlignConfig_<TAlignConfig>::Type TFreeEndGaps;
+    typedef AlignConfig2<DPGlobal, DPBandConfig<BandOff>, TFreeEndGaps, TracebackOff> TAlignConfig2;
+    typedef typename SubstituteAlgoTag_<TAlgoTag>::Type TGapModel;
+
+    return _alignWrapper(stringH, stringsV, scoringScheme, TAlignConfig2(), TGapModel());
+}
+
+// Interface without AlignConfig<>.
+template <typename TString1, typename TString2, typename TSpec,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlgoTag>
+String<TScoreValue> globalAlignmentScore(TString1 const & stringH,
+                                         StringSet<TString2, TSpec> const & stringsV,
+                                         Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                         TAlgoTag const & algoTag)
+{
+    AlignConfig<> alignConfig;
+    return globalAlignmentScore(stringH, stringsV, scoringScheme, alignConfig, algoTag);
+}
+
+// Interface without algorithm tag.
+template <typename TString1, typename TString2, typename TSpec,
+          typename TScoreValue, typename TScoreSpec,
+          bool TOP, bool LEFT, bool RIGHT, bool BOTTOM, typename TACSpec>
+String<TScoreValue> globalAlignmentScore(TString1 const & stringH,
+                                         StringSet<TString2, TSpec> const & stringsV,
+                                         Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                         AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec> const & alignConfig)
+{
+    if (scoreGapOpen(scoringScheme) == scoreGapExtend(scoringScheme))
+        return globalAlignmentScore(stringH, stringsV, scoringScheme, alignConfig, NeedlemanWunsch());
+    else
+        return globalAlignmentScore(stringH, stringsV, scoringScheme, alignConfig, Gotoh());
+}
+
+// Interface without AlignConfig<> and algorithm tag.
+template <typename TString1, typename TString2, typename TSpec,
+          typename TScoreValue, typename TScoreSpec>
+String<TScoreValue> globalAlignmentScore(TString1 const & stringH,
+                                         StringSet<TString2, TSpec> const & stringsV,
+                                         Score<TScoreValue, TScoreSpec> const & scoringScheme)
+{
+    AlignConfig<> alignConfig;
+    return globalAlignmentScore(stringH, stringsV, scoringScheme, alignConfig);
+}
+
+// ============================================================================
+// Many-vs-Many align interfaces.
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// Function globalAlignment()            [unbanded, SIMD version, GapsH, GapsV]
+// ----------------------------------------------------------------------------
+
+template <typename TSequenceH, typename TGapsSpecH, typename TSetSpecH,
+          typename TSequenceV, typename TGapsSpecV, typename TSetSpecV,
+          typename TScoreValue, typename TScoreSpec,
+          bool TOP, bool LEFT, bool RIGHT, bool BOTTOM, typename TACSpec, 
+          typename TAlgoTag>
+inline auto
+globalAlignment(StringSet<Gaps<TSequenceH, TGapsSpecH>, TSetSpecH> & gapSeqSetH,
+                StringSet<Gaps<TSequenceV, TGapsSpecV>, TSetSpecV> & gapSeqSetV,
+                Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec> const & /*alignConfig*/,
+                TAlgoTag const & /*algoTag*/)
+{
+    typedef AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec>              TAlignConfig;
+    typedef typename SubstituteAlignConfig_<TAlignConfig>::Type         TFreeEndGaps;
+    typedef AlignConfig2<DPGlobal, DPBandConfig<BandOff>, TFreeEndGaps> TAlignConfig2;
+    typedef typename SubstituteAlgoTag_<TAlgoTag>::Type                 TGapModel;
+
+    return _alignWrapper(gapSeqSetH, gapSeqSetV, scoringScheme, TAlignConfig2(), TGapModel());
+}
+
+// ----------------------------------------------------------------------------
+// Function globalAlignment()        [unbanded, SIMD version, StringSet<Align>]
+// ----------------------------------------------------------------------------
+
+template <typename TSequence, typename TAlignSpec, typename TScoreValue, typename TScoreSpec,
+          bool TOP, bool LEFT, bool RIGHT, bool BOTTOM, typename TACSpec, typename TAlgoTag>
+String<TScoreValue> globalAlignment(StringSet<Align<TSequence, TAlignSpec> > & alignSet,
+                                    Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                    AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec> const & alignConfig,
+                                    TAlgoTag const & algoTag)
+{
+    typedef Align<TSequence, TAlignSpec> TAlign;
+    typedef typename Row<TAlign>::Type TGapSequence;
+
+    StringSet<TGapSequence, Dependent<> > gapSetH;
+    StringSet<TGapSequence, Dependent<> > gapSetV;
+    reserve(gapSetH, length(alignSet));
+    reserve(gapSetV, length(alignSet));
+
+    for (auto & align : alignSet)
+    {
+        appendValue(gapSetH, row(align, 0));
+        appendValue(gapSetV, row(align, 1));
+    }
+
+    return globalAlignment(gapSetH, gapSetV, scoringScheme, alignConfig, algoTag);
+}
+
+// Interface without AlignConfig<>.
+template <typename TSequence, typename TAlignSpec,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlgoTag>
+String<TScoreValue> globalAlignment(StringSet<Align<TSequence, TAlignSpec> > & align,
+                                    Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                    TAlgoTag const & algoTag)
+{
+    AlignConfig<> alignConfig;
+    return globalAlignment(align, scoringScheme, alignConfig, algoTag);
+}
+
+// Interface without algorithm tag.
+template <typename TSequence, typename TAlignSpec,
+          typename TScoreValue, typename TScoreSpec,
+          bool TOP, bool LEFT, bool RIGHT, bool BOTTOM, typename TACSpec>
+String<TScoreValue> globalAlignment(StringSet<Align<TSequence, TAlignSpec> > & align,
+                                    Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                    AlignConfig<TOP, LEFT, RIGHT, BOTTOM, TACSpec> const & alignConfig)
+{
+    if (scoreGapOpen(scoringScheme) == scoreGapExtend(scoringScheme))
+        return globalAlignment(align, scoringScheme, alignConfig, NeedlemanWunsch());
+    else
+        return globalAlignment(align, scoringScheme, alignConfig, Gotoh());
+}
+
+// Interface without AlignConfig<> and algorithm tag.
+template <typename TSequence, typename TAlignSpec,
+          typename TScoreValue, typename TScoreSpec>
+String<TScoreValue> globalAlignment(StringSet<Align<TSequence, TAlignSpec> > & align,
+                                    Score<TScoreValue, TScoreSpec> const & scoringScheme)
+{
+    AlignConfig<> alignConfig;
+    return globalAlignment(align, scoringScheme, alignConfig);
+}
+
 }  // namespace seqan
 
 #endif  // #ifndef SEQAN_INCLUDE_SEQAN_ALIGN_GLOBAL_ALIGNMENT_UNBANDED_H_
diff --git a/include/seqan/align/local_alignment_banded.h b/include/seqan/align/local_alignment_banded.h
index fb23b34..8edcfd5 100644
--- a/include/seqan/align/local_alignment_banded.h
+++ b/include/seqan/align/local_alignment_banded.h
@@ -224,6 +224,75 @@ TScoreValue localAlignment(String<Fragment<TSize, TFragmentSpec>, TStringSpec> &
         return localAlignment(fragmentString, strings, scoringScheme, lowerDiag, upperDiag, LinearGaps());
 }
 
+// ============================================================================
+// Many-vs-Many align interfaces.
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// Function localAlignment()               [banded, SIMD version, GapsH, GapsV]
+// ----------------------------------------------------------------------------
+
+template <typename TGapSequenceH, typename TSetSpecH,
+          typename TGapSequenceV, typename TSetSpecV,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlgoTag>
+inline auto
+localAlignment(StringSet<TGapSequenceH, TSetSpecH> & gapSeqSetH,
+               StringSet<TGapSequenceV, TSetSpecV> & gapSeqSetV,
+               Score<TScoreValue, TScoreSpec> const & scoringScheme,
+               int const lowerDiag,
+               int const upperDiag,
+               TAlgoTag const & /*algoTag*/)
+{
+    typedef AlignConfig2<DPLocal, DPBandConfig<BandOn>, FreeEndGaps_<> >    TAlignConfig2;
+    typedef typename SubstituteAlgoTag_<TAlgoTag>::Type                     TGapModel;
+
+    return _alignWrapper(gapSeqSetH, gapSeqSetV, scoringScheme, TAlignConfig2(lowerDiag, upperDiag), TGapModel());
+}
+
+// ----------------------------------------------------------------------------
+// Function localAlignment()           [banded, SIMD version, StringSet<Align>]
+// ----------------------------------------------------------------------------
+
+template <typename TSequence, typename TAlignSpec, typename TSetSpec,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlgoTag>
+inline String<TScoreValue>
+localAlignment(StringSet<Align<TSequence, TAlignSpec>, TSetSpec> & alignSet,
+               Score<TScoreValue, TScoreSpec> const & scoringScheme,
+               int const lowerDiag,
+               int const upperDiag,
+               TAlgoTag const & algoTag)
+{
+    typedef Align<TSequence, TAlignSpec>    TAlign;
+    typedef typename Row<TAlign>::Type      TGapSequence;
+
+    StringSet<TGapSequence, Dependent<> > gapSetH;
+    StringSet<TGapSequence, Dependent<> > gapSetV;
+    reserve(gapSetH, length(alignSet));
+    reserve(gapSetV, length(alignSet));
+    
+    for (auto & align : alignSet)
+    {
+        appendValue(gapSetH, row(align, 0));
+        appendValue(gapSetV, row(align, 1));
+    }
+    
+    return localAlignment(gapSetH, gapSetV, scoringScheme, lowerDiag, upperDiag, algoTag);
+}
+
+template <typename TSequence, typename TAlignSpec,
+          typename TScoreValue, typename TScoreSpec>
+String<TScoreValue> localAlignment(StringSet<Align<TSequence, TAlignSpec> > & align,
+                                   Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                                   int lowerDiag, int upperDiag)
+{
+   if (_usesAffineGaps(scoringScheme, source(row(align[0], 0)), source(row(align[0], 1))))
+        return localAlignment(align, scoringScheme, lowerDiag, upperDiag, AffineGaps());
+   else
+        return localAlignment(align, scoringScheme, lowerDiag, upperDiag, LinearGaps());
+}
+
 }  // namespace seqan
 
 #endif  // #ifndef SEQAN_INCLUDE_SEQAN_ALIGN_LOCAL_ALIGNMENT_BANDED_H_
diff --git a/include/seqan/align/local_alignment_enumeration.h b/include/seqan/align/local_alignment_enumeration.h
index aa65183..0dd6946 100644
--- a/include/seqan/align/local_alignment_enumeration.h
+++ b/include/seqan/align/local_alignment_enumeration.h
@@ -63,6 +63,7 @@ class LocalAlignmentEnumerator;
  * @tparam TScore The type of the @link Score @endlink to use for the local alignment.
  * @tparam TSpec  The tag to use for specializing the enumerator.
  *
+ * This is an abstract class that will only be instantiated through its subclasses.
  * See the documentation of the specializations for examples.
  *
  * @section References
diff --git a/include/seqan/align/local_alignment_unbanded.h b/include/seqan/align/local_alignment_unbanded.h
index 1c33224..1014d00 100644
--- a/include/seqan/align/local_alignment_unbanded.h
+++ b/include/seqan/align/local_alignment_unbanded.h
@@ -141,7 +141,7 @@ namespace seqan {
  * int result = localAlignment(gapsH, gapsV, scoringScheme, -2, 2);
  * @endcode
  *
- * http://seqan.readthedocs.org/en/develop/Tutorial/PairwiseSequenceAlignment.html
+ * http://seqan.readthedocs.io/en/develop/Tutorial/PairwiseSequenceAlignment.html
  *
  * @section References
  *
@@ -312,6 +312,70 @@ TScoreValue localAlignment(String<Fragment<TSize, TFragmentSpec>, TStringSpec> &
         return localAlignment(fragmentString, strings, scoringScheme, LinearGaps());
 }
 
+// ============================================================================
+// Many-vs-Many align interfaces.
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// Function localAlignment()             [unbanded, SIMD version, GapsH, GapsV]
+// ----------------------------------------------------------------------------
+
+template <typename TGapSequenceH, typename TSetSpecH,
+          typename TGapSequenceV, typename TSetSpecV,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlgoTag>
+inline auto
+localAlignment(StringSet<TGapSequenceH, TSetSpecH> & gapSeqSetH,
+               StringSet<TGapSequenceV, TSetSpecV> & gapSeqSetV,
+               Score<TScoreValue, TScoreSpec> const & scoringScheme,
+               TAlgoTag const & /*algoTag*/)
+{
+    typedef AlignConfig2<DPLocal, DPBandConfig<BandOff>, FreeEndGaps_<> >    TAlignConfig2;
+    typedef typename SubstituteAlgoTag_<TAlgoTag>::Type                      TGapModel;
+
+    return _alignWrapper(gapSeqSetH, gapSeqSetV, scoringScheme, TAlignConfig2(), TGapModel());
+}
+
+// ----------------------------------------------------------------------------
+// Function localAlignment()         [unbanded, SIMD version, StringSet<Align>]
+// ----------------------------------------------------------------------------
+
+template <typename TSequence, typename TAlignSpec,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlgoTag>
+inline String<TScoreValue>
+localAlignment(StringSet<Align<TSequence, TAlignSpec> > & alignSet,
+               Score<TScoreValue, TScoreSpec> const & scoringScheme,
+               TAlgoTag const & algoTag)
+{
+    typedef Align<TSequence, TAlignSpec>    TAlign;
+    typedef typename Row<TAlign>::Type      TGapSequence;
+
+    StringSet<TGapSequence, Dependent<> > gapSetH;
+    StringSet<TGapSequence, Dependent<> > gapSetV;
+    reserve(gapSetH, length(alignSet));
+    reserve(gapSetV, length(alignSet));
+    
+    for (auto & align : alignSet)
+    {
+        appendValue(gapSetH, row(align, 0));
+        appendValue(gapSetV, row(align, 1));
+    }
+    
+    return localAlignment(gapSetH, gapSetV, scoringScheme, algoTag);
+}
+
+template <typename TSequence, typename TAlignSpec,
+          typename TScoreValue, typename TScoreSpec>
+String<TScoreValue> localAlignment(StringSet<Align<TSequence, TAlignSpec> > & align,
+                                   Score<TScoreValue, TScoreSpec> const & scoringScheme)
+{
+   if (_usesAffineGaps(scoringScheme, source(row(align[0], 0)), source(row(align[0], 1))))
+        return localAlignment(align, scoringScheme, AffineGaps());
+   else
+        return localAlignment(align, scoringScheme, LinearGaps());
+}
+
 }  // namespace seqan
 
 #endif  // #ifndef SEQAN_INCLUDE_SEQAN_ALIGN_LOCAL_ALIGNMENT_UNBANDED_H_
diff --git a/include/seqan/align/matrix_base.h b/include/seqan/align/matrix_base.h
index 4c9cba9..e5ca253 100644
--- a/include/seqan/align/matrix_base.h
+++ b/include/seqan/align/matrix_base.h
@@ -64,13 +64,15 @@ struct SizeArr_<Matrix<TValue, DIMENSION> >
 template <typename TValue, unsigned DIMENSION>
 struct Host<Matrix<TValue, DIMENSION> >
 {
-    typedef String<TValue> Type;
+    typedef typename StringSpecForValue_<TValue>::Type TSpec_;
+    typedef String<TValue, TSpec_> Type;
 };
 
 template <typename TValue, unsigned DIMENSION>
 struct Host<Matrix<TValue, DIMENSION> const>
 {
-    typedef String<TValue> const Type;
+    typedef typename StringSpecForValue_<TValue>::Type TSpec_;
+    typedef String<TValue, TSpec_> Type;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -100,7 +102,7 @@ class Matrix<TValue, 0>
 public:
     typedef typename Size<Matrix>::Type TSize;
     typedef String<TSize> TSizeArr;
-    typedef String<TValue> THost;
+    typedef typename Host<Matrix>::Type THost;
 
     TSizeArr data_lengths;        //Length of every dimension
     TSizeArr data_factors;        //used for positions of dimensions in host ("size of jumps" to get to next entry of specified dimension)
@@ -164,7 +166,7 @@ class Matrix<TValue, 2>
 public:
     typedef typename Size<Matrix>::Type TSize;
     typedef String<TSize> TSizeArr;
-    typedef String<TValue> THost;
+    typedef typename Host<Matrix>::Type THost;
 
     TSizeArr data_lengths;
     TSizeArr data_factors;
@@ -224,8 +226,8 @@ class Matrix<TValue, 3>
 
 public:
     typedef typename Size<Matrix>::Type TSize;
-    typedef String<TSize> TSizeArr;
-    typedef String<TValue> THost;
+    typedef String<TSize> TSizeArr; 
+    typedef typename Host<Matrix>::Type THost;
 
     TSizeArr data_lengths;
     TSizeArr data_factors;
diff --git a/include/seqan/align_extend/dp_scout_xdrop.h b/include/seqan/align_extend/dp_scout_xdrop.h
index f53ef8c..8331f22 100644
--- a/include/seqan/align_extend/dp_scout_xdrop.h
+++ b/include/seqan/align_extend/dp_scout_xdrop.h
@@ -89,14 +89,14 @@ public:
 template <typename TScoreValue>
 struct HasTerminationCriterium_<AlignExtend_<XDrop_<TScoreValue> > > : True {};
 
-template <typename TScoreValue>
-struct ScoutSpecForAlignmentAlgorithm_<AlignExtend_<XDrop_<TScoreValue> > >
+template <typename TScoreValue, typename TSpec>
+struct ScoutSpecForAlignmentAlgorithm_<AlignExtend_<XDrop_<TScoreValue> >, DPScoutState_<TSpec> >
 {
     typedef Terminator_<XDrop_<TScoreValue> > Type;
 };
 
-template <typename TScoreValue>
-struct ScoutSpecForAlignmentAlgorithm_<AlignExtend_<XDrop_<TScoreValue> > const>
+template <typename TScoreValue, typename TSpec>
+struct ScoutSpecForAlignmentAlgorithm_<AlignExtend_<XDrop_<TScoreValue> > const, DPScoutState_<TSpec> >
 {
     typedef Terminator_<XDrop_<TScoreValue> > Type;
 };
diff --git a/include/seqan/align_split/align_split_interface.h b/include/seqan/align_split/align_split_interface.h
index f1e3af4..658536a 100644
--- a/include/seqan/align_split/align_split_interface.h
+++ b/include/seqan/align_split/align_split_interface.h
@@ -70,13 +70,13 @@ typedef Tag<SplitAlignmentAlgo_> SplitAlignmentAlgo;
 // For the split alignment, we will use our SplitAlignmentScout specialization of DPScout.
 
 template <typename TSpec>
-struct ScoutSpecForAlignmentAlgorithm_<SplitAlignment_<TSpec> >
+struct ScoutSpecForAlignmentAlgorithm_<SplitAlignment_<TSpec>, DPScoutState_<SplitAlignmentScout> >
 {
     typedef SplitAlignmentScout Type;
 };
 
 template <typename TSpec>
-struct ScoutSpecForAlignmentAlgorithm_<SplitAlignment_<TSpec> const>
+struct ScoutSpecForAlignmentAlgorithm_<SplitAlignment_<TSpec> const, DPScoutState_<SplitAlignmentScout> >
 {
     typedef SplitAlignmentScout Type;
 };
@@ -139,6 +139,40 @@ struct IsGlobalAlignment_<SplitAlignment_<TSpec> const> :
 {};
 
 // ----------------------------------------------------------------------------
+// Metafunction TraceTail_
+// ----------------------------------------------------------------------------
+
+template <typename TSpec>
+struct TraceTail_<SplitAlignment_<TSpec> > :
+    False
+{};
+
+// ----------------------------------------------------------------------------
+// Metafunction LastColumnEnabled_
+// ----------------------------------------------------------------------------
+
+template <typename TSpec, typename TColumnDescriptor>
+struct LastColumnEnabled_<SplitAlignment_<TSpec>, TColumnDescriptor>
+{
+    typedef typename If<IsSameType<typename TColumnDescriptor::TColumnProperty, DPFinalColumn>,
+                        typename IsFreeEndGap_<SplitAlignment_<TSpec>, DPLastColumn>::Type,
+                        False>::Type Type;
+};
+
+// ----------------------------------------------------------------------------
+// Metafunction LastRowEnabled_
+// ----------------------------------------------------------------------------
+
+template <typename TSpec, typename TColumnDescriptor>
+struct LastRowEnabled_<SplitAlignment_<TSpec>, LastCell, TColumnDescriptor>
+{
+    typedef typename  If<Or<IsSameType<typename TColumnDescriptor::TLocation, PartialColumnBottom>,
+                            IsSameType<typename TColumnDescriptor::TLocation, FullColumn> >,
+                         typename IsFreeEndGap_<SplitAlignment_<TSpec>, DPLastRow>::Type,
+                         False>::Type Type;
+};
+
+// ----------------------------------------------------------------------------
 // Metafunction DPMetaColumn_
 // ----------------------------------------------------------------------------
 
@@ -259,15 +293,15 @@ struct SetupAlignmentProfile_<SplitAlignmentAlgo, TFreeEndGaps, TGapCosts, TTrac
 
 // Reverse a trace string and adapt internal position.
 template <typename TPosition, typename TSize, typename TSpec>
-void _reverseTrace(String<TraceSegment_<TPosition, TSize>, TSpec> & trace)
+void _reverseTrace(String<TraceSegment_<TPosition, TSize>, TSpec> & trace,
+                   size_t const lengthH,
+                   size_t const lengthV)
 {
     typedef String<TraceSegment_<TPosition, TSize>, TSpec> TTrace;
     typedef typename Iterator<TTrace, Rooted>::Type TTraceIter;
 
     if (empty(trace))
         return;
-    TPosition lengthH = _getEndHorizontal(front(trace));
-    TPosition lengthV = _getEndVertical(front(trace));
 
     for (TTraceIter it = begin(trace, Rooted()); !atEnd(it); goNext(it))
     {
@@ -278,76 +312,106 @@ void _reverseTrace(String<TraceSegment_<TPosition, TSize>, TSpec> & trace)
 }
 
 // ----------------------------------------------------------------------------
+// Function _computeSplitTrace()
+// ----------------------------------------------------------------------------
+
+template <typename TTarget,
+          typename TSeqH,
+          typename TSeqV,
+          typename TDPContext,
+          typename TMatPos,
+          typename TDPType, typename TBandSwitch, typename TFreeEndGaps, typename TTraceConfig>
+void _computeSplitTrace(TTarget & target,
+                        TSeqH const & seqH,
+                        TSeqV const & seqV,
+                        TDPContext const & dpContext,
+                        TMatPos const matPos,
+                        AlignConfig2<TDPType, DPBandConfig<TBandSwitch>, TFreeEndGaps, TTraceConfig> const & config)
+{
+    typedef typename SetupAlignmentProfile_<TDPType, TFreeEndGaps, LinearGaps, TTraceConfig>::Type TDPProfile;
+
+    typedef typename GetDPTraceMatrix<TDPContext const>::Type TDPTraceMatrixHost;
+    typedef typename Value<TDPTraceMatrixHost>::Type TTraceValue;
+
+    typedef DPMatrix_<TTraceValue, FullDPMatrix> TDPTraceMatrix;
+    typedef DPMatrixNavigator_<TDPTraceMatrix, DPTraceMatrix<TTraceConfig>, NavigateColumnWise> TDPTraceMatrixNavigator;
+
+    TDPTraceMatrix matrix;
+    setLength(matrix, +DPMatrixDimension_::HORIZONTAL, length(seqH) + 1 - std::max(0, lowerDiagonal(config._band)));
+
+    if (IsSameType<TBandSwitch, BandOff>::VALUE)
+    {
+        setLength(matrix, +DPMatrixDimension_::VERTICAL, length(seqV) + 1);
+    }
+    else
+    {
+        int bandSize = _min(static_cast<int>(length(seqH)), upperDiagonal(config._band)) -
+                       _max(lowerDiagonal(config._band), -static_cast<int>(length(seqV))) + 1;
+        setLength(matrix, +DPMatrixDimension_::VERTICAL, _min(static_cast<int>(length(seqV)) + 1, bandSize));
+    }
+
+    setHost(matrix, getDpTraceMatrix(dpContext));
+    resize(matrix);
+    SEQAN_ASSERT_EQ(length(getDpTraceMatrix(dpContext)), length(matrix));
+    TDPTraceMatrixNavigator navi;
+    _init(navi, matrix, config._band);
+    _computeTraceback(target, navi, matPos, seqH, seqV, config._band, TDPProfile());
+}
+
+// ----------------------------------------------------------------------------
 // Function _splitAlignmentImpl()
 // ----------------------------------------------------------------------------
 
 // We call the long sequence contig and the shorter one read but could be changed roles.
-template <typename TContigSeqL, typename TReadSeqL, typename TContigSeqR, typename TReadSeqR,
-          typename TScoreValue, typename TScoreSpec>
-int _splitAlignmentImpl(Gaps<TContigSeqL> & gapsContigL,
-                        Gaps<TReadSeqL> & gapsReadL,
-                        Gaps<TContigSeqR> & gapsContigR,
-                        Gaps<TReadSeqR> & gapsReadR,
-                        int lowerDiagonal,
-                        int upperDiagonal,
-                        Score<TScoreValue, TScoreSpec> const & scoringScheme)
+template <typename TContigSeqL,
+          typename TReadSeqL,
+          typename TContigSeqR,
+          typename TReadSeqR,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlignConfigL,
+          typename TAlignConfigR,
+          typename TGapModel>
+auto _splitAlignmentImpl(Gaps<TContigSeqL> & gapsContigL,
+                         Gaps<TReadSeqL> & gapsReadL,
+                         Gaps<TContigSeqR> & gapsContigR,
+                         Gaps<TReadSeqR> & gapsReadR,
+                         Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                         TAlignConfigL const & alignConfigL,
+                         TAlignConfigR const & alignConfigR,
+                         TGapModel const & /*gapModel*/)
 {
     typedef Gaps<TContigSeqL> TGaps;
     typedef typename Size<TGaps>::Type TSize;
     typedef typename Position<TGaps>::Type TPosition;
     typedef TraceSegment_<TPosition, TSize> TTraceSegment;
 
-    typedef FreeEndGaps_<False, False, True, True> TFreeEndGaps;
-    //alignConfig;
-
-    // Check whether we need to run the banded versions.
-    bool banded = (lowerDiagonal != minValue<int>() && upperDiagonal != maxValue<int>());
-
     // Compute trace and split score sequence for the left alignment.
-
+    // We actually need to first compute the scores, than trace from the choosen split position.
+    DPContext<TScoreValue, TGapModel> dpContextL;
     DPScoutState_<SplitAlignmentScout> scoutStateL;
     resize(scoutStateL.splitScore, length(source(gapsContigL)) + 1, minValue<TScoreValue>() / 2);
+    resize(scoutStateL.splitPos, length(scoutStateL.splitScore));
 
     String<TTraceSegment> traceL;
-    if (!banded)
-    {
-        typedef AlignConfig2<SplitAlignmentAlgo, DPBandConfig<BandOff>, TFreeEndGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TAlignConfig;
-        _setUpAndRunAlignment(traceL, scoutStateL, source(gapsContigL), source(gapsReadL), scoringScheme, TAlignConfig());
-    }
-    else
-    {
-        typedef AlignConfig2<SplitAlignmentAlgo, DPBandConfig<BandOn>, TFreeEndGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TAlignConfig;
-        _setUpAndRunAlignment(traceL, scoutStateL, source(gapsContigL), source(gapsReadL), scoringScheme,
-                              TAlignConfig(lowerDiagonal, upperDiagonal));
-    }
-    _adaptTraceSegmentsTo(gapsContigL, gapsReadL, traceL);
+    _setUpAndRunAlignment(dpContextL, traceL, scoutStateL, source(gapsContigL), source(gapsReadL), scoringScheme, alignConfigL);
 
     // Get reversed versions of the right contig and read sequence.
     ModifiedString<TContigSeqR, ModReverse> revContigR(source(gapsContigR));
     ModifiedString<TReadSeqR, ModReverse> revReadR(source(gapsReadR));
 
     // Compute trace and split score sequence for the right alignment.
-
+    DPContext<TScoreValue, TGapModel> dpContextR;
     DPScoutState_<SplitAlignmentScout> scoutStateR;
     resize(scoutStateR.splitScore, length(source(gapsContigR)) + 1, minValue<TScoreValue>() / 2);
+    resize(scoutStateR.splitPos, length(scoutStateR.splitScore));
 
     String<TTraceSegment> traceR;
-    if (!banded)
-    {
-        typedef AlignConfig2<SplitAlignmentAlgo, DPBandConfig<BandOff>, TFreeEndGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsRight> > > TAlignConfig;
-        _setUpAndRunAlignment(traceR, scoutStateR, revContigR, revReadR, scoringScheme, TAlignConfig());
-    }
-    else
-    {
-        typedef AlignConfig2<SplitAlignmentAlgo, DPBandConfig<BandOn>, TFreeEndGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsRight> > > TAlignConfig;
-        _setUpAndRunAlignment(traceR, scoutStateR, revContigR, revReadR, scoringScheme,
-                              TAlignConfig(lowerDiagonal, upperDiagonal));
-    }
+    _setUpAndRunAlignment(dpContextR, traceR, scoutStateR, revContigR, revReadR, scoringScheme, alignConfigR);
+
     // Reverse trace so it fits to the forward right sequences.  Also reverse the trace such that we can directly apply
     // it for the right alignment.
-    _reverseTrace(traceR);
     reverse(scoutStateR.splitScore);
-    _adaptTraceSegmentsTo(gapsContigR, gapsReadR, traceR);
+    reverse(scoutStateR.splitPos);
 
     SEQAN_ASSERT_EQ(length(scoutStateL.splitScore), length(scoutStateR.splitScore));
 
@@ -358,17 +422,13 @@ int _splitAlignmentImpl(Gaps<TContigSeqL> & gapsContigL,
 
     // TODO(holtgrew): Make selecting the left/right split position from interface possible? Maybe not necessary.
 
-    int bestScore = minValue<TScoreValue>() / 2;
-    unsigned bestPrefixLength = 0;
-    for (unsigned i = 0; i < length(scoutStateL.splitScore); ++i)
-    {
-        int s = scoutStateL.splitScore[i] + scoutStateR.splitScore[i];
-        if (s > bestScore)
-        {
-            bestScore = s;
-            bestPrefixLength = i;
-        }
-    }
+    auto itBegin = makeZipIterator(begin(scoutStateL.splitScore), begin(scoutStateR.splitScore));
+    auto res = std::max_element(itBegin, makeZipIterator(end(scoutStateL.splitScore), end(scoutStateR.splitScore)),
+                                [] (auto const & lhs, auto const & rhs)
+                                {
+                                    return std::get<0>(lhs) + std::get<1>(lhs) < std::get<0>(rhs) + std::get<1>(rhs);
+                                });
+    auto bestPrefixLength = res - itBegin;
 
     // std::cerr << "bestPrefixLength = " << bestPrefixLength << "\n";
 
@@ -381,11 +441,20 @@ int _splitAlignmentImpl(Gaps<TContigSeqL> & gapsContigL,
     //     fprintf(stderr, " %3d", scoutStateR.splitScore[i]);
     // std::cerr << "\n";
 
-    // Set the clipping positions.
-    TPosition cePosR = toViewPosition(gapsContigR, bestPrefixLength);
-    setClippedBeginPosition(gapsContigR, cePosR);
-    setClippedBeginPosition(gapsReadR, cePosR);
-    // We have to correct the clipping position for the left alignment because of the to-right projection.  The
+    // Recompute the best trace starting from the recorded split position for left ...
+    clear(traceL);
+    _computeSplitTrace(traceL, source(gapsContigL), source(gapsReadL), dpContextL,
+                       scoutStateL.splitPos[bestPrefixLength], alignConfigL);
+    _adaptTraceSegmentsTo(gapsContigL, gapsReadL, traceL);
+    // ... and right anchor.
+    clear(traceR);
+    _computeSplitTrace(traceR, source(gapsContigR), source(gapsReadR), dpContextR,
+                       scoutStateR.splitPos[bestPrefixLength], alignConfigR);
+    
+    _reverseTrace(traceR, length(source(gapsContigR)), length(source(gapsReadR)));
+    _adaptTraceSegmentsTo(gapsContigR, gapsReadR, traceR);
+
+    // We have to correct the clipping position for the left alignment because of the to-right projection. The
     // insertion itself is not part of the alignment.
     TPosition cePosL = toViewPosition(gapsContigL, bestPrefixLength);
     if (bestPrefixLength > 0)
@@ -393,7 +462,66 @@ int _splitAlignmentImpl(Gaps<TContigSeqL> & gapsContigL,
     setClippedEndPosition(gapsContigL, cePosL);
     setClippedEndPosition(gapsReadL, cePosL);
 
-    return bestScore;
+    return std::make_pair(std::get<0>(*res), std::get<1>(*res));
+}
+
+template <typename TContigSeqL, typename TReadSeqL,
+          typename TContigSeqR, typename TReadSeqR,
+          typename TScoreValue, typename TScoreSpec,
+          bool TTop, bool TRight, bool TLeft, bool TBottom, typename TConfigSpec,
+          typename TGapModel>
+auto _splitAlignmentImpl(Gaps<TContigSeqL> & gapsContigL,
+                         Gaps<TReadSeqL> & gapsReadL,
+                         Gaps<TContigSeqR> & gapsContigR,
+                         Gaps<TReadSeqR> & gapsReadR,
+                         Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                         AlignConfig<TTop, TRight, TLeft, TBottom, TConfigSpec> const &,
+                         int lowerDiagonal,
+                         int upperDiagonal,
+                         TGapModel const & /*gapModel*/)
+{
+    typedef typename SubstituteAlignConfig_<AlignConfig<TTop, TRight, TLeft, TBottom> >::Type TFreeEndGaps;
+    // Check whether we need to run the banded versions.
+    if (lowerDiagonal != minValue<int>() && upperDiagonal != maxValue<int>())
+    {
+        typedef AlignConfig2<SplitAlignmentAlgo, DPBandConfig<BandOn>, TFreeEndGaps,
+        TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TAlignConfigL;
+        typedef AlignConfig2<SplitAlignmentAlgo, DPBandConfig<BandOn>, TFreeEndGaps,
+        TracebackOn<TracebackConfig_<CompleteTrace, GapsRight> > > TAlignConfigR;
+        return _splitAlignmentImpl(gapsContigL, gapsReadL, gapsContigR, gapsReadR, scoringScheme,
+                                   TAlignConfigL(lowerDiagonal, upperDiagonal),
+                                   TAlignConfigR(lowerDiagonal, upperDiagonal),
+                                   TGapModel());
+    }
+    else
+    {
+        typedef AlignConfig2<SplitAlignmentAlgo, DPBandConfig<BandOff>, TFreeEndGaps,
+        TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TAlignConfigL;
+        typedef AlignConfig2<SplitAlignmentAlgo, DPBandConfig<BandOff>, TFreeEndGaps,
+        TracebackOn<TracebackConfig_<CompleteTrace, GapsRight> > > TAlignConfigR;
+        return _splitAlignmentImpl(gapsContigL, gapsReadL, gapsContigR, gapsReadR, scoringScheme, TAlignConfigL(),
+                                   TAlignConfigR(), TGapModel());
+    }
+}
+
+template <typename TContigSeqL, typename TReadSeqL, typename TContigSeqR, typename TReadSeqR,
+          typename TScoreValue, typename TScoreSpec,
+          bool TTop, bool TRight, bool TLeft, bool TBottom, typename TConfigSpec>
+auto _splitAlignmentImpl(Gaps<TContigSeqL> & gapsContigL,
+                         Gaps<TReadSeqL> & gapsReadL,
+                         Gaps<TContigSeqR> & gapsContigR,
+                         Gaps<TReadSeqR> & gapsReadR,
+                         Score<TScoreValue, TScoreSpec> const & scoringScheme,
+                         AlignConfig<TTop, TRight, TLeft, TBottom, TConfigSpec> const & config,
+                         int lowerDiagonal = minValue<int>(),
+                         int upperDiagonal = maxValue<int>())
+{
+    if (_usesAffineGaps(scoringScheme, source(gapsContigL), source(gapsReadL)))
+        return _splitAlignmentImpl(gapsContigL, gapsReadL, gapsContigR, gapsReadR,
+                                   scoringScheme, config, lowerDiagonal, upperDiagonal, AffineGaps());
+    else
+        return _splitAlignmentImpl(gapsContigL, gapsReadL, gapsContigR, gapsReadR,
+                                   scoringScheme, config, lowerDiagonal, upperDiagonal, LinearGaps());
 }
 
 // ----------------------------------------------------------------------------
@@ -405,8 +533,8 @@ int _splitAlignmentImpl(Gaps<TContigSeqL> & gapsContigL,
  * @headerfile <seqan/align_split.h>
  * @brief Compute split alignments.
  *
- * @signature TScoreValue splitAlignment(alignL,         alignR,         scoringScheme[, lowerDiag, upperDiag]);
- * @signature TScoreValue splitAlignment(gapsHL, gapsVL, gapsHR, gapsVR, scoringScheme[, lowerDiag, upperDiag]);
+ * @signature TScoreValue splitAlignment(alignL,         alignR,         scoringScheme[, config][, lowerDiag, upperDiag]);
+ * @signature TScoreValue splitAlignment(gapsHL, gapsVL, gapsHR, gapsVR, scoringScheme[, config][, lowerDiag, upperDiag]);
  *
  * @param[in,out] alignL @link Align @endlink object with two rows for the left alignment.
  * @param[in,out] alignR @link Align @endlink object with two rows for the right alignment.
@@ -415,6 +543,7 @@ int _splitAlignmentImpl(Gaps<TContigSeqL> & gapsContigL,
  * @param[in,out] gapsHR @link Gaps @endlink object with the horizontal/contig row for the right alignment.
  * @param[in,out] gapsVR @link Gaps @endlink object with the vertical/read row for the right alignment.
  * @param[in]     scoringScheme The scoring scheme to use for the alignment.
+ * @param[in]     config A configuration object of type @link AlignConfig @endlink, to specify free-end-gaps.
  * @param[in]     lowerDiag The lower diagonal.You have to specify the upper and lower diagonals for the left
  *                          alignment.  For the right alignment, the corresponding diagonals are chosen for the
  *                          lower right part of the DP matrix, <tt>int</tt>.
@@ -423,7 +552,7 @@ int _splitAlignmentImpl(Gaps<TContigSeqL> & gapsContigL,
  * @return TScoreValue The sum of the alignment scores of both alignments (Metafunction: @link Score#Value @endlink
  *                     of the type of <tt>scoringScheme</tt>).
  *
- * There are two variants of the split alignment problem.  In the first variant, we wan to align two sequences where the
+ * There are two variants of the split alignment problem.  In the first variant, we want to align two sequences where the
  * first (say the reference) one is shorter than the second (say a read) and the read contains an insertion with respect
  * to the reference.  We now want to align the read agains the reference such that the left part of the read aligns well
  * against the left part of the reference and the right part of the read aligns well against the right part of the
@@ -495,72 +624,126 @@ int _splitAlignmentImpl(Gaps<TContigSeqL> & gapsContigL,
 // Variant: unbanded, with Align objects.
 
 template <typename TSequenceL, typename TAlignSpecL, typename TSequenceR, typename TAlignSpecR,
-          typename TScoreVal, typename TScoreSpec>
+          typename TScoreVal, typename TScoreSpec,
+          bool TTop, bool TRight, bool TLeft, bool TBottom, typename TConfigSpec>
 int splitAlignment(Align<TSequenceL, TAlignSpecL> & alignL,
                    Align<TSequenceR, TAlignSpecR> & alignR,
-                   Score<TScoreVal, TScoreSpec> const & scoringScheme)
+                   Score<TScoreVal, TScoreSpec> const & scoringScheme,
+                   AlignConfig<TTop, TRight, TLeft, TBottom, TConfigSpec> const & config)
 {
     SEQAN_ASSERT_EQ_MSG(source(row(alignL, 0)), source(row(alignR, 0)),
                         "Contig must be the same for left and right split alignment.");
 
-    return _splitAlignmentImpl(row(alignL, 0), row(alignL, 1), row(alignR, 0), row(alignR, 1),
-                               minValue<int>(), maxValue<int>(),
-                               scoringScheme);
+    auto tmp = _splitAlignmentImpl(row(alignL, 0), row(alignL, 1), row(alignR, 0), row(alignR, 1), scoringScheme, config);
+    return std::get<0>(tmp) + std::get<1>(tmp);
+}
+
+template <typename TSequenceL, typename TAlignSpecL, typename TSequenceR, typename TAlignSpecR,
+          typename TScoreVal, typename TScoreSpec>
+int splitAlignment(Align<TSequenceL, TAlignSpecL> & alignL,
+                   Align<TSequenceR, TAlignSpecR> & alignR,
+                   Score<TScoreVal, TScoreSpec> const & scoringScheme)
+{
+    return splitAlignment(alignL, alignR, scoringScheme, AlignConfig<false, false, true, true>());
 }
 
 // Variant: unbanded, with Gaps objects.
 
 template <typename TSeqHL, typename TGapSpecHL, typename TSeqVL, typename TGapSpecVL,
           typename TSeqHR, typename TGapSpecHR, typename TSeqVR, typename TGapSpecVR,
-          typename TScoreVal, typename TScoreSpec>
+          typename TScoreVal, typename TScoreSpec,
+          bool TTop, bool TRight, bool TLeft, bool TBottom, typename TConfigSpec>
 int splitAlignment(Gaps<TSeqHL, TGapSpecHL> & gapsHL,
                    Gaps<TSeqVL, TGapSpecVL> & gapsVL,
                    Gaps<TSeqHR, TGapSpecHR> & gapsHR,
                    Gaps<TSeqVR, TGapSpecVR> & gapsVR,
-                   Score<TScoreVal, TScoreSpec> const & scoringScheme)
+                   Score<TScoreVal, TScoreSpec> const & scoringScheme,
+                   AlignConfig<TTop, TRight, TLeft, TBottom, TConfigSpec> const & config)
 {
     SEQAN_ASSERT_EQ_MSG(source(gapsHL), source(gapsHR),
                         "Contig must be the same for left and right split alignment.");
 
-    return _splitAlignmentImpl(gapsHL, gapsVL, gapsHR, gapsVR, minValue<int>(), maxValue<int>(),
-                               scoringScheme);
+    auto tmp = _splitAlignmentImpl(gapsHL, gapsVL, gapsHR, gapsVR, scoringScheme, config);
+    return std::get<0>(tmp) + std::get<1>(tmp);
 }
 
-// Variant: banded, with Align objects.
+template <typename TSeqHL, typename TGapSpecHL, typename TSeqVL, typename TGapSpecVL,
+typename TSeqHR, typename TGapSpecHR, typename TSeqVR, typename TGapSpecVR,
+typename TScoreVal, typename TScoreSpec>
+int splitAlignment(Gaps<TSeqHL, TGapSpecHL> & gapsHL,
+                   Gaps<TSeqVL, TGapSpecVL> & gapsVL,
+                   Gaps<TSeqHR, TGapSpecHR> & gapsHR,
+                   Gaps<TSeqVR, TGapSpecVR> & gapsVR,
+                   Score<TScoreVal, TScoreSpec> const & scoringScheme)
+{
+    return splitAlignment(gapsHL, gapsVL, gapsHR, gapsVR, scoringScheme, AlignConfig<false, false, true, true>());
+}
 
+// Variant: banded, with Align objects.
 template <typename TSequenceL, typename TAlignSpecL, typename TSequenceR, typename TAlignSpecR,
-          typename TScoreVal, typename TScoreSpec>
+          typename TScoreVal, typename TScoreSpec,
+          bool TTop, bool TRight, bool TLeft, bool TBottom, typename TConfigSpec>
 int splitAlignment(Align<TSequenceL, TAlignSpecL> & alignL,
                    Align<TSequenceR, TAlignSpecR> & alignR,
                    Score<TScoreVal, TScoreSpec> const & scoringScheme,
-                   int lowerDiagonal,
-                   int upperDiagonal)
+                   AlignConfig<TTop, TRight, TLeft, TBottom, TConfigSpec> const & config,
+                   int const lowerDiagonal,
+                   int const upperDiagonal)
 {
     SEQAN_ASSERT_EQ_MSG(source(row(alignL, 0)), source(row(alignR, 0)),
                         "Contig must be the same for left and right split alignment.");
 
-    return _splitAlignmentImpl(row(alignL, 0), row(alignL, 1), row(alignR, 0), row(alignR, 1),
-                               lowerDiagonal, upperDiagonal, scoringScheme);
+    auto tmp = _splitAlignmentImpl(row(alignL, 0), row(alignL, 1), row(alignR, 0), row(alignR, 1),
+                                   scoringScheme, config, lowerDiagonal, upperDiagonal);
+    return std::get<0>(tmp) + std::get<1>(tmp);
 }
 
-// Variant: banded, with Gaps objects.
+template <typename TSequenceL, typename TAlignSpecL, typename TSequenceR, typename TAlignSpecR,
+typename TScoreVal, typename TScoreSpec>
+int splitAlignment(Align<TSequenceL, TAlignSpecL> & alignL,
+                   Align<TSequenceR, TAlignSpecR> & alignR,
+                   Score<TScoreVal, TScoreSpec> const & scoringScheme,
+                   int const lowerDiagonal,
+                   int const upperDiagonal)
+{
+    return splitAlignment(alignL, alignR, scoringScheme, AlignConfig<false, false, true, true>(),
+                          lowerDiagonal, upperDiagonal);
+}
 
+// Variant: banded, with Gaps objects.
 template <typename TSeqHL, typename TGapSpecHL, typename TSeqVL, typename TGapSpecVL,
           typename TSeqHR, typename TGapSpecHR, typename TSeqVR, typename TGapSpecVR,
-          typename TScoreVal, typename TScoreSpec>
+          typename TScoreVal, typename TScoreSpec,
+          bool TTop, bool TRight, bool TLeft, bool TBottom, typename TConfigSpec>
 int splitAlignment(Gaps<TSeqHL, TGapSpecHL> & gapsHL,
                    Gaps<TSeqVL, TGapSpecVL> & gapsVL,
                    Gaps<TSeqHR, TGapSpecHR> & gapsHR,
                    Gaps<TSeqVR, TGapSpecVR> & gapsVR,
                    Score<TScoreVal, TScoreSpec> const & scoringScheme,
-                   int lowerDiagonal,
-                   int upperDiagonal)
+                   AlignConfig<TTop, TRight, TLeft, TBottom, TConfigSpec> const & config,
+                   int const lowerDiagonal,
+                   int const upperDiagonal)
 {
     SEQAN_ASSERT_EQ_MSG(source(gapsHL), source(gapsHR),
                         "Contig must be the same for left and right split alignment.");
 
-    return _splitAlignmentImpl(gapsHL, gapsVL, gapsHR, gapsVR, lowerDiagonal, upperDiagonal,
-                               scoringScheme);
+    auto tmp = _splitAlignmentImpl(gapsHL, gapsVL, gapsHR, gapsVR, scoringScheme, config, lowerDiagonal, upperDiagonal);
+    return std::get<0>(tmp) + std::get<1>(tmp);
+}
+
+template <typename TSeqHL, typename TGapSpecHL, typename TSeqVL, typename TGapSpecVL,
+          typename TSeqHR, typename TGapSpecHR, typename TSeqVR, typename TGapSpecVR,
+          typename TScoreVal, typename TScoreSpec>
+int splitAlignment(Gaps<TSeqHL, TGapSpecHL> & gapsHL,
+                   Gaps<TSeqVL, TGapSpecVL> & gapsVL,
+                   Gaps<TSeqHR, TGapSpecHR> & gapsHR,
+                   Gaps<TSeqVR, TGapSpecVR> & gapsVR,
+                   Score<TScoreVal, TScoreSpec> const & scoringScheme,
+                   int const lowerDiagonal,
+                   int const upperDiagonal)
+{
+    return splitAlignment(gapsHL, gapsVL, gapsHR, gapsVR, scoringScheme, AlignConfig<false, false, true, true>(),
+                          lowerDiagonal, upperDiagonal);
 }
 
 }  // namespace seqan
diff --git a/include/seqan/align_split/dp_scout_split.h b/include/seqan/align_split/dp_scout_split.h
index 86b2a80..b107e43 100644
--- a/include/seqan/align_split/dp_scout_split.h
+++ b/include/seqan/align_split/dp_scout_split.h
@@ -64,6 +64,7 @@ class DPScoutState_<SplitAlignmentScout>
 public:
     // The best score for each column.  Initialized with 0.5*minValue<TScoreVal>().
     seqan::String<int> splitScore;
+    seqan::String<int> splitPos;
 
     DPScoutState_()
     {}
@@ -115,8 +116,13 @@ _scoutBestScore(DPScout_<TDPCell, SplitAlignmentScout> & dpScout,
     // unsigned posV = coordinate(navigator, +DPMatrixDimension_::VERTICAL);
 
     int & i = dpScout.state->splitScore[posH];
-    i = std::max(i, _scoreOfCell(activeCell));
+    if (i < _scoreOfCell(activeCell))
+    {
+        i = _scoreOfCell(activeCell);
+        dpScout.state->splitPos[posH] = position(navigator);
+    }
 
+    // TODO(rrahn): Do we need the optimal end-point?
     // We track only the last row for the best traceback score.
     if (TIsLastColumn::VALUE || TIsLastRow::VALUE)
     {
diff --git a/include/seqan/arg_parse.h b/include/seqan/arg_parse.h
index 18d0772..1cee957 100644
--- a/include/seqan/arg_parse.h
+++ b/include/seqan/arg_parse.h
@@ -48,7 +48,7 @@
 
 #include <sys/types.h>
 #include <sys/stat.h>
-#ifndef PLATFORM_WINDOWS
+#ifndef STDLIB_VS
 #include <unistd.h>
 #endif
 
diff --git a/include/seqan/arg_parse/arg_parse_argument.h b/include/seqan/arg_parse/arg_parse_argument.h
index 498e65b..e41faef 100644
--- a/include/seqan/arg_parse/arg_parse_argument.h
+++ b/include/seqan/arg_parse/arg_parse_argument.h
@@ -101,6 +101,12 @@ inline std::string getFileExtension(ArgParseArgument const & me, unsigned pos);
  *
  * @val ArgParseArgument::ArgumentType ArgParseArgument::OUTPUT_FILE;
  * @brief Argument is an output file.
+ *
+ * @val ArgParseArgument::ArgumentType ArgParseArgument::INPUT_PREFIX;
+ * @brief Argument is a prefix to input file(s).
+ *
+ * @val ArgParseArgument::ArgumentType ArgParseArgument::OUTPUT_PREFIX;
+ * @brief Argument is a prefix to output file(s).
  */
 
 /*!
@@ -128,7 +134,9 @@ public:
         DOUBLE,      // .. a float
         INPUT_FILE,   // .. an inputfile (implicitly also a string)
         OUTPUT_FILE,  // .. an outputfile (implicitly also a string)
-        INPUTPREFIX, // .. an inputprefix (implicitly also a string)
+        INPUT_PREFIX, // .. an inputprefix (implicitly also a string)
+        ///@deprecated use INPUT_PREFIX instead
+        INPUTPREFIX = INPUT_PREFIX,
         OUTPUT_PREFIX // .. an outoutprefix (implicitly also a string)
     };
 
@@ -229,7 +237,7 @@ inline std::string _typeToString(ArgParseArgument const & me)
         typeName = "outputfile";
         break;
 
-    case ArgParseArgument::INPUTPREFIX:
+    case ArgParseArgument::INPUT_PREFIX:
         typeName = "inputprefix";
         break;
 
@@ -289,7 +297,7 @@ inline bool isStringArgument(ArgParseArgument const & me)
     return (me._argumentType == ArgParseArgument::STRING) ||
            (me._argumentType == ArgParseArgument::INPUT_FILE) ||
            (me._argumentType == ArgParseArgument::OUTPUT_FILE) ||
-           (me._argumentType == ArgParseArgument::INPUTPREFIX) ||
+           (me._argumentType == ArgParseArgument::INPUT_PREFIX) ||
            (me._argumentType == ArgParseArgument::OUTPUT_PREFIX) ;
 }
 
@@ -437,7 +445,7 @@ inline bool isOutputPrefixArgument(ArgParseArgument const & me)
 
 inline bool isInputPrefixArgument(ArgParseArgument const & me)
 {
-    return me._argumentType == ArgParseArgument::INPUTPREFIX;
+    return me._argumentType == ArgParseArgument::INPUT_PREFIX;
 }
 
 // ----------------------------------------------------------------------------
diff --git a/include/seqan/arg_parse/arg_parse_ctd_support.h b/include/seqan/arg_parse/arg_parse_ctd_support.h
index f90093f..7f91846 100644
--- a/include/seqan/arg_parse/arg_parse_ctd_support.h
+++ b/include/seqan/arg_parse/arg_parse_ctd_support.h
@@ -413,6 +413,10 @@ writeCTD(ArgumentParser const & me, std::ostream & ctdfile)
         _getRestrictions(restrictions, opt);
 
         // set up supported formats
+        // add *.* to supported_formats if none is specified AND the type of the argument is a
+        // prefix type. This is important for KNIME nodes as they require similar file types
+        // to connect one node to the other. In this particular case any file is aproprate
+        // since we are talking about prefixes.
         std::vector<std::string> supported_formats;
         _getSupportedFormats(supported_formats, opt);
         if (empty(supported_formats) && (type=="input-prefix" || type=="output-prefix" ))
@@ -497,6 +501,10 @@ writeCTD(ArgumentParser const & me, std::ostream & ctdfile)
         _getRestrictions(restrictions, arg);
 
         // set up supported formats
+        // add *.* to supported_formats if none is specified AND the type of the argument is a
+        // prefix type. This is important for KNIME nodes as they require similar file types
+        // to connect one node to the other. In this particular case any file is aproprate
+        // since we are talking about prefixes.
         std::vector<std::string> supported_formats;
         _getSupportedFormats(supported_formats, arg);
         if (empty(supported_formats) && (type=="input-prefix" || type=="output-prefix" ))
diff --git a/include/seqan/bam_io/read_sam.h b/include/seqan/bam_io/read_sam.h
index 1c28804..ad30a46 100644
--- a/include/seqan/bam_io/read_sam.h
+++ b/include/seqan/bam_io/read_sam.h
@@ -164,7 +164,7 @@ readRecord(BamHeaderRecord & record,
     {
         skipOne(iter, IsTab());
 
-        appendValue(record.tags, Pair<CharString>());
+        appendValue(record.tags, Pair<CharString>(), Exact());
 
         clear(buffer);
         readLine(buffer, iter);
@@ -177,7 +177,7 @@ readRecord(BamHeaderRecord & record,
         {
             skipOne(iter, IsTab());
 
-            appendValue(record.tags, Pair<CharString>());
+            appendValue(record.tags, Pair<CharString>(), Exact());
 
             clear(buffer);
             readUntil(buffer, iter, EqualsChar<':'>());
@@ -316,7 +316,7 @@ readRecord(BamAlignmentRecord & record,
         do
         {
             clear(buffer);
-            readUntil(buffer, iter, OrFunctor<IsAlpha, AssertFunctor<NotFunctor<IsNewline>, ParseError, Sam> >());
+            readUntil(buffer, iter, OrFunctor<NotFunctor<IsDigit>, AssertFunctor<NotFunctor<IsNewline>, ParseError, Sam> >());
             element.count = lexicalCast<uint32_t>(buffer);
             element.operation = value(iter);
             skipOne(iter);
@@ -397,4 +397,3 @@ readRecord(BamAlignmentRecord & record,
 }  // namespace seqan
 
 #endif  // #ifndef INCLUDE_SEQAN_BAM_IO_READ_SAM_H_
-
diff --git a/include/seqan/basic.h b/include/seqan/basic.h
index 0eadd82..0cf12db 100644
--- a/include/seqan/basic.h
+++ b/include/seqan/basic.h
@@ -106,7 +106,7 @@
 // Basic device metafunctions.
 #include <seqan/basic/basic_device.h>
 
-// Basic SIMD vector (not included by default on purpose)
-//#include <seqan/basic/basic_simd_vector.h>
+// Basic SIMD vector implementation using intrinsics.
+#include <seqan/basic/basic_simd_vector.h>
 
 #endif  // #ifndef SEQAN_INCLUDE_SEQAN_BASIC_H_
diff --git a/include/seqan/basic/aggregate_concept.h b/include/seqan/basic/aggregate_concept.h
index f79a7d1..b9daf38 100644
--- a/include/seqan/basic/aggregate_concept.h
+++ b/include/seqan/basic/aggregate_concept.h
@@ -98,7 +98,10 @@ typedef Tag<Pack_> Pack;
  * BITSIZE2 The number of bits for the second entry.
  */
 
-template <unsigned BITSIZE1 = 16, unsigned BITSIZE2 = 16>
+struct PlusOne_;
+typedef Tag<PlusOne_> PlusOne;
+
+template <unsigned BITSIZE1 = 16, unsigned BITSIZE2 = 16, typename TSpec = void>
 struct BitPacked;
 
 // ============================================================================
diff --git a/include/seqan/basic/allocator_interface.h b/include/seqan/basic/allocator_interface.h
index 05aeb48..41d7169 100644
--- a/include/seqan/basic/allocator_interface.h
+++ b/include/seqan/basic/allocator_interface.h
@@ -82,6 +82,9 @@ typedef Tag<AllocateTemp_> TagAllocateTemp;
 struct AllocateStorage_;
 typedef Tag<AllocateStorage_> TagAllocateStorage;
 
+struct AllocateAlignedMalloc_;
+typedef Tag<AllocateAlignedMalloc_> TagAllocateAlignedMalloc;
+
 /*!
  * @class Allocator
  * @headerfile <seqan/basic.h>
@@ -187,17 +190,17 @@ allocate(T const &,
          Tag<TUsage> const &)
 {
 //  data = (TValue *) operator new(count * sizeof(TValue));
-#ifdef PLATFORM_WINDOWS_VS
+#ifdef STDLIB_VS
     data = (TValue *) _aligned_malloc(count * sizeof(TValue), __alignof(TValue));
 #else
 /*#if _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600
-    const size_t align = (__alignof__(TValue) < sizeof(void*))? sizeof(void*): __alignof__(TValue);
+    const size_t align = (__alignof__(TValue) < sizeof(void*)) ? sizeof(void*): __alignof__(TValue);
     if (posix_memalign(&(void* &)data, align, count * sizeof(TValue)))
         data = NULL;
 #else
     data = (TValue *) malloc(count * sizeof(TValue));
 #endif*/
-    data = (TValue *) operator new(count * sizeof(TValue));
+  data = (TValue *) operator new(count * sizeof(TValue));
 #endif
 
 #ifdef SEQAN_PROFILE
@@ -214,17 +217,17 @@ allocate(T &,
          Tag<TUsage> const &)
 {
 //  data = (TValue *) operator new(count * sizeof(TValue));
-#ifdef PLATFORM_WINDOWS_VS
+#ifdef STDLIB_VS
     data = (TValue *) _aligned_malloc(count * sizeof(TValue), __alignof(TValue));
 #else
 /*#if _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600
-    const size_t align = (__alignof__(TValue) < sizeof(void*))? sizeof(void*): __alignof__(TValue);
+    const size_t align = (__alignof__(TValue) < sizeof(void*)) ? sizeof(void*) : __alignof__(TValue);
     if (posix_memalign(&(void* &)data, align, count * sizeof(TValue)))
-        data = NULL;
+      data = NULL;
 #else
     data = (TValue *) malloc(count * sizeof(TValue));
-#endif
-*/  data = (TValue *) operator new(count * sizeof(TValue));
+#endif*/
+  data = (TValue *) operator new(count * sizeof(TValue));
 #endif
 
 #ifdef SEQAN_PROFILE
@@ -233,6 +236,49 @@ allocate(T &,
 #endif
 }
 
+// NOTE(rrahn): Currently *new* does not support aligned memory, but we need it for dynamically
+// allocated SimdVector class, so we overload the allocation to use mem_alloc for simd vector types.
+// See following discussion: http://stackoverflow.com/questions/6973995/dynamic-aligned-memory-allocation-in-c11
+template <typename T, typename TValue, typename TSize>
+inline void
+allocate(T const &,
+         TValue * & data,
+         TSize count,
+         TagAllocateAlignedMalloc const &)
+{
+#ifdef PLATFORM_WINDOWS_VS
+    data = (TValue *) _aligned_malloc(count * sizeof(TValue), __alignof(TValue));
+#else
+    #if _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600
+        const size_t align = (__alignof__(TValue) < sizeof(void*)) ? sizeof(void*): __alignof__(TValue);
+        if (posix_memalign(&(void* &)data, align, count * sizeof(TValue)))
+            data = NULL;
+    #else
+        data = (TValue *) malloc(count * sizeof(TValue));
+    #endif
+#endif
+}
+
+template <typename T, typename TValue, typename TSize>
+inline void
+allocate(T &,
+         TValue * & data,
+         TSize count,
+         TagAllocateAlignedMalloc const &)
+{
+#ifdef PLATFORM_WINDOWS_VS
+    data = (TValue *) _aligned_malloc(count * sizeof(TValue), __alignof(TValue));
+#else
+    #if _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600
+        const size_t align = (__alignof__(TValue) < sizeof(void*)) ? sizeof(void*) : __alignof__(TValue);
+        if (posix_memalign(&(void* &)data, align, count * sizeof(TValue)))
+        data = NULL;
+    #else
+        data = (TValue *) malloc(count * sizeof(TValue));
+    #endif
+#endif
+}
+
 // ----------------------------------------------------------------------------
 // Function deallocate()
 // ----------------------------------------------------------------------------
@@ -298,7 +344,7 @@ deallocate(
         SEQAN_PROSUB(SEQAN_PROMEMORY, count * sizeof(TValue));
 #endif
 //  operator delete ((void *) data);
-#ifdef PLATFORM_WINDOWS_VS
+#ifdef STDLIB_VS
     _aligned_free((void *) data);
 #else
 //  free((void *) data);
@@ -323,7 +369,7 @@ deallocate(
         SEQAN_PROSUB(SEQAN_PROMEMORY, count * sizeof(TValue));
 #endif
 //  operator delete ((void *) data);
-#ifdef PLATFORM_WINDOWS_VS
+#ifdef STDLIB_VS
     _aligned_free((void *) data);
 #else
 //  free((void *) data);
@@ -331,6 +377,56 @@ deallocate(
 #endif
 }
 
+// NOTE(rrahn): Currently *new* does not support aligned memory, but we need it for dynamically
+// allocated SimdVector class, so we overload the allocation to use mem_alloc for simd vector types.
+// See following discussion: http://stackoverflow.com/questions/6973995/dynamic-aligned-memory-allocation-in-c11
+template <typename T, typename TValue, typename TSize>
+inline void
+deallocate(
+           T const & /*me*/,
+           TValue * data,
+#ifdef SEQAN_PROFILE
+           TSize count,
+#else
+           TSize,
+#endif
+           TagAllocateAlignedMalloc const)
+{
+#ifdef SEQAN_PROFILE
+    if (data && count)  // .. to use count if SEQAN_PROFILE is not defined
+        SEQAN_PROSUB(SEQAN_PROMEMORY, count * sizeof(TValue));
+#endif
+#ifdef PLATFORM_WINDOWS_VS
+    _aligned_free((void *) data);
+#else
+    free((void *) data);
+#endif
+}
+
+template <typename T, typename TValue, typename TSize>
+inline void
+deallocate(
+           T & /*me*/,
+           TValue * data,
+#ifdef SEQAN_PROFILE
+           TSize count,
+#else
+           TSize,
+#endif
+           TagAllocateAlignedMalloc const)
+{
+#ifdef SEQAN_PROFILE
+    if (data && count)  // .. to use count if SEQAN_PROFILE is not defined
+        SEQAN_PROSUB(SEQAN_PROMEMORY, count * sizeof(TValue));
+#endif
+    //  operator delete ((void *) data);
+#ifdef PLATFORM_WINDOWS_VS
+    _aligned_free((void *) data);
+#else
+    free((void *) data);
+#endif
+}
+
 }  // namespace seqan
 
 #endif  // #ifndef SEQAN_INCLUDE_SEQAN_BASIC_ALLOCATOR_INTERFACE_H_
diff --git a/include/seqan/basic/alphabet_adapt_builtins.h b/include/seqan/basic/alphabet_adapt_builtins.h
index 18c3718..a5db639 100644
--- a/include/seqan/basic/alphabet_adapt_builtins.h
+++ b/include/seqan/basic/alphabet_adapt_builtins.h
@@ -181,32 +181,20 @@ supremumValueImpl(T *)
 inline long double const &
 supremumValueImpl(long double *)
 {
-#ifdef PLATFORM_WINDOWS
     static long double const _value = std::numeric_limits<long double>::infinity( );
-#else
-    static long double const _value = 1.7976931348623157e+308;
-#endif
     return _value;
 }
 
 inline double const &
 supremumValueImpl(double *)
 {
-#ifdef PLATFORM_WINDOWS
     static double const _value = std::numeric_limits<double>::infinity( );
-#else
-    static double const _value = 1.7976931348623157e+308;
-#endif
     return _value;
 }
 inline float const &
 supremumValueImpl(float *)
 {
-#ifdef PLATFORM_WINDOWS
     static float const _value = std::numeric_limits<float>::infinity( );
-#else
-    static float const _value = 3.40282347e+38F;
-#endif
     return _value;
 }
 
@@ -225,33 +213,21 @@ infimumValueImpl(T *)
 inline float const &
 infimumValueImpl(float *)
 {
-#ifdef PLATFORM_WINDOWS
     static float const _value = -std::numeric_limits<float>::infinity( );
-#else
-    static float const _value = -3.40282347e+38F;
-#endif
     return _value;
 }
 
 inline double const &
 infimumValueImpl(double *)
 {
-#ifdef PLATFORM_WINDOWS
     static double const _value = -std::numeric_limits<double>::infinity( );
-#else
-    static double const _value = -1.7976931348623157e+308;
-#endif
     return _value;
 }
 
 inline long double const &
 infimumValueImpl(long double *)
 {
-#ifdef PLATFORM_WINDOWS
     static long double const _value = -std::numeric_limits<long double>::infinity( );
-#else
-    static long double const _value = -1.7976931348623157e+308;
-#endif
     return _value;
 }
 
diff --git a/include/seqan/basic/alphabet_concept.h b/include/seqan/basic/alphabet_concept.h
index ab92fb4..50e5164 100644
--- a/include/seqan/basic/alphabet_concept.h
+++ b/include/seqan/basic/alphabet_concept.h
@@ -346,7 +346,7 @@ SEQAN_CONCEPT_REFINE(OrderedAlphabetConcept, (TValue), (AlphabetConcept)(Compara
 template <typename T> struct ValueSize;
 template <typename T> typename ValueSize<T>::Type valueSize();
 // Forwards for Metafunctions and Functions.
-template <typename TValue> SEQAN_HOST_DEVICE inline typename ValueSize<TValue>::Type ordValue(TValue const & c);
+template <typename TValue> inline typename ValueSize<TValue>::Type ordValue(TValue const & c);
 
 SEQAN_CONCEPT_REFINE(FiniteOrderedAlphabetConcept, (TValue), (OrderedAlphabetConcept))
 {
diff --git a/include/seqan/basic/alphabet_math.h b/include/seqan/basic/alphabet_math.h
index 1b5c33f..c77afdb 100644
--- a/include/seqan/basic/alphabet_math.h
+++ b/include/seqan/basic/alphabet_math.h
@@ -61,16 +61,11 @@ namespace seqan {
 // Metafunction MaxValue
 // ----------------------------------------------------------------------------
 
-#ifdef PLATFORM_CUDA
-template <typename T>
-struct MaximumValueUnsigned_ { static const T VALUE = ~(T)0; };
-#else
 template <typename T>
 struct MaximumValueUnsigned_ { static const T VALUE; };
 
 template <typename T>
 const T MaximumValueUnsigned_<T>::VALUE = ~(T)0;
-#endif
 
 template <typename T>
 struct MaximumValueSigned_ { static const T VALUE; };
@@ -188,25 +183,25 @@ struct MinValue : MinValue_<T> {};
 // --------------------------------------------------------------------------
 
 template <typename TValue>
-inline SEQAN_HOST_DEVICE
+inline
 TValue toUpperValue(TValue c)
 {
     return c;
 }
 
-inline SEQAN_HOST_DEVICE
+inline
 char toUpperValue(char c)
 {
     return c >= 'a' && c <= 'z' ? c + 'A' - 'a' : c;
 }
 
-inline SEQAN_HOST_DEVICE
+inline
 signed char toUpperValue(signed char c)
 {
     return toUpperValue(static_cast<char>(c));
 }
 
-inline SEQAN_HOST_DEVICE
+inline
 unsigned char toUpperValue(unsigned char c)
 {
     return toUpperValue(static_cast<char>(c));
diff --git a/include/seqan/basic/alphabet_residue.h b/include/seqan/basic/alphabet_residue.h
index 2bc3183..fae9710 100644
--- a/include/seqan/basic/alphabet_residue.h
+++ b/include/seqan/basic/alphabet_residue.h
@@ -668,11 +668,7 @@ struct CompareTypeImpl<Dna, char>
 
 inline void assign(Dna & target, char c_source)
 {
-#ifdef __CUDA_ARCH__
-    target.value = _translateCharToDna<void>((unsigned char)c_source);
-#else
     target.value = TranslateTableCharToDna_<>::VALUE[(unsigned char) c_source];
-#endif
 }
 
 template <>
@@ -720,11 +716,7 @@ struct CompareTypeImpl<Dna5, char>
 
 inline void assign(Dna5 & target, char c_source)
 {
-#ifdef __CUDA_ARCH__
-    target.value = _translateCharToDna5<void>((unsigned char)c_source);
-#else
     target.value = TranslateTableCharToDna5_<>::VALUE[(unsigned char) c_source];
-#endif
 }
 
 template <>
diff --git a/include/seqan/basic/alphabet_residue_funcs.h b/include/seqan/basic/alphabet_residue_funcs.h
index 12fa686..7c11c1d 100644
--- a/include/seqan/basic/alphabet_residue_funcs.h
+++ b/include/seqan/basic/alphabet_residue_funcs.h
@@ -43,7 +43,7 @@ namespace seqan {
 // --------------------------------------------------------------------------
 
 template <typename T>
-SEQAN_HOST_DEVICE inline unsigned char
+inline unsigned char
 _translateCharToDna(unsigned char c)
 {
     switch (toUpperValue(c))
@@ -64,7 +64,7 @@ _translateCharToDna(unsigned char c)
 // --------------------------------------------------------------------------
 
 template <typename T>
-SEQAN_HOST_DEVICE inline unsigned char
+inline unsigned char
 _translateCharToDna5(unsigned char c)
 {
     switch (toUpperValue(c))
diff --git a/include/seqan/basic/alphabet_residue_tabs.h b/include/seqan/basic/alphabet_residue_tabs.h
index 05d7775..ca2f439 100644
--- a/include/seqan/basic/alphabet_residue_tabs.h
+++ b/include/seqan/basic/alphabet_residue_tabs.h
@@ -439,7 +439,7 @@ template <typename T>
 char const TranslateTableByteToAA_<T>::VALUE[256] =
 {
     0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15, //0
-    16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  25,  25,  25,  25,  25,  25, //1
+    16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  25,  25,  25,  25,  25, //1
     25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25, //2
     25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25, //3
     25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25,  25, //4
diff --git a/include/seqan/basic/alphabet_simple_type.h b/include/seqan/basic/alphabet_simple_type.h
index 3dbc014..f4955fc 100644
--- a/include/seqan/basic/alphabet_simple_type.h
+++ b/include/seqan/basic/alphabet_simple_type.h
@@ -126,9 +126,7 @@ namespace seqan {
  * @snippet demos/dox/basic/simple_type_construction.cpp simple type construction and assignment
  */
 
-#ifdef PLATFORM_WINDOWS
-    #pragma pack(push,1)
-#endif
+#pragma pack(push,1)
 template <typename TValue, typename TSpec>
 class SimpleType
 {
@@ -144,11 +142,11 @@ public:
     // ------------------------------------------------------------------------
 
     // TODO(holtgrew): Do we want default initialization?
-    SEQAN_HOST_DEVICE
+   
     SimpleType() : value(0)
     {}
 
-    SEQAN_HOST_DEVICE
+   
     SimpleType(SimpleType const & other)
     {
         assign(*this, other);
@@ -156,7 +154,7 @@ public:
 
     // TODO(holtgrew): Do we want an explicit here?
     template <typename T>
-    SEQAN_HOST_DEVICE
+   
     SimpleType(T const & other)
     {
         assign(*this, other);
@@ -166,7 +164,7 @@ public:
     // Assignment Operator;  Have to be defined in class.
     // ------------------------------------------------------------------------
 
-    SEQAN_HOST_DEVICE
+   
     SimpleType & operator=(SimpleType const & other)
     {
         assign(*this, other);
@@ -174,7 +172,7 @@ public:
     }
 
     template <typename T>
-    SEQAN_HOST_DEVICE inline SimpleType &
+    inline SimpleType &
     operator=(T const & other)
     {
         assign(*this, other);
@@ -192,7 +190,7 @@ public:
     // This cannot be a template since it would conflict to the template
     // constructor.
 
-    SEQAN_HOST_DEVICE
+   
     operator int64_t() const
     {
         int64_t c;
@@ -200,7 +198,7 @@ public:
         return c;
     }
 
-    SEQAN_HOST_DEVICE
+   
     operator uint64_t() const
     {
         uint64_t c;
@@ -208,7 +206,7 @@ public:
         return c;
     }
 
-    SEQAN_HOST_DEVICE
+   
     operator int() const
     {
         int c;
@@ -216,7 +214,7 @@ public:
         return c;
     }
 
-    SEQAN_HOST_DEVICE
+   
     operator unsigned int() const
     {
         unsigned int c;
@@ -224,7 +222,7 @@ public:
         return c;
     }
 
-    SEQAN_HOST_DEVICE
+   
     operator short() const
     {
         short c;
@@ -232,7 +230,7 @@ public:
         return c;
     }
 
-    SEQAN_HOST_DEVICE
+   
     operator unsigned short() const
     {
         unsigned short c;
@@ -240,7 +238,7 @@ public:
         return c;
     }
 
-    SEQAN_HOST_DEVICE
+   
     operator char() const
     {
         char c;
@@ -248,7 +246,7 @@ public:
         return c;
     }
 
-    SEQAN_HOST_DEVICE
+   
     operator signed char() const
     {
         signed char c;
@@ -256,21 +254,15 @@ public:
         return c;
     }
 
-    SEQAN_HOST_DEVICE
+
     operator unsigned char() const
     {
         unsigned char c;
         assign(c, *this);
         return c;
     }
-}
-#ifndef PLATFORM_WINDOWS
-    __attribute__((packed))
-#endif
-    ;
-#ifdef PLATFORM_WINDOWS
-      #pragma pack(pop)
-#endif
+};
+#pragma pack(pop)
 
 // ============================================================================
 // Metafunctions
@@ -330,7 +322,7 @@ template <typename TValue, typename TSpec>
 const SimpleType<TValue, TSpec> MinValue<SimpleType<TValue, TSpec> >::VALUE = SimpleType<TValue, TSpec>(0);
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline SimpleType<TValue, TSpec> const &
+inline SimpleType<TValue, TSpec> const &
 infimumValueImpl(SimpleType<TValue, TSpec> *)
 {
     return MinValue<SimpleType<TValue, TSpec> >::VALUE;
@@ -350,7 +342,7 @@ template <typename TValue, typename TSpec>
 const SimpleType<TValue, TSpec> MaxValue<SimpleType<TValue, TSpec> >::VALUE = SimpleType<TValue, TSpec>(((TValue)ValueSize<SimpleType<TValue, TSpec> >::VALUE - 1));
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline SimpleType<TValue, TSpec> const &
+inline SimpleType<TValue, TSpec> const &
 supremumValueImpl(SimpleType<TValue, TSpec> *)
 {
     return MaxValue<SimpleType<TValue, TSpec> >::VALUE;
@@ -400,7 +392,7 @@ struct CompareTypeImpl<SimpleType<TValue, TSpec>, TRight>
 // TODO(holtgrew): Document
 
 template <typename TTarget, typename T, typename TSourceValue, typename TSourceSpec>
-SEQAN_HOST_DEVICE inline typename RemoveConst_<TTarget>::Type
+inline typename RemoveConst_<TTarget>::Type
 convertImpl(Convert<TTarget, T> const,
             SimpleType<TSourceValue, TSourceSpec> const & source_)
 {
@@ -414,7 +406,7 @@ convertImpl(Convert<TTarget, T> const,
 // ----------------------------------------------------------------------------
 
 template <typename TStream, typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline TStream &
+inline TStream &
 operator<<(TStream & stream,
            SimpleType<TValue, TSpec> const & data)
 {
@@ -427,7 +419,7 @@ operator<<(TStream & stream,
 // ----------------------------------------------------------------------------
 
 template <typename TStream, typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline TStream &
+inline TStream &
 operator>>(TStream & stream,
            SimpleType<TValue, TSpec> & data)
 {
@@ -442,7 +434,7 @@ operator>>(TStream & stream,
 // ----------------------------------------------------------------------------
 
 template <typename TTargetValue, typename TTargetSpec, typename TSourceValue, typename TSourceSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(SimpleType<TTargetValue, TTargetSpec> & target,
        SimpleType<TSourceValue, TSourceSpec> & source)
 {
@@ -450,7 +442,7 @@ assign(SimpleType<TTargetValue, TTargetSpec> & target,
 }
 
 template <typename TTargetValue, typename TTargetSpec, typename TSourceValue, typename TSourceSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(SimpleType<TTargetValue, TTargetSpec> & target,
        SimpleType<TSourceValue, TSourceSpec> const & source)
 {
@@ -458,7 +450,7 @@ assign(SimpleType<TTargetValue, TTargetSpec> & target,
 }
 
 template <typename TTargetValue, typename TTargetSpec, typename TSource>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(SimpleType<TTargetValue, TTargetSpec> & target,
        TSource & source)
 {
@@ -466,7 +458,7 @@ assign(SimpleType<TTargetValue, TTargetSpec> & target,
 }
 
 template <typename TTargetValue, typename TTargetSpec, typename TSource>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(SimpleType<TTargetValue, TTargetSpec> & target,
        TSource const & source)
 {
@@ -478,7 +470,7 @@ assign(SimpleType<TTargetValue, TTargetSpec> & target,
 // TODO(holtgrew): Still necessary with dropped 2003 support?
 
 template <typename TTargetValue, typename TTargetSpec, typename TSourceSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(SimpleType<TTargetValue, TTargetSpec> & target,
        Proxy<TSourceSpec> & source)
 {
@@ -486,7 +478,7 @@ assign(SimpleType<TTargetValue, TTargetSpec> & target,
 }
 
 template <typename TTargetValue, typename TTargetSpec, typename TSourceSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(SimpleType<TTargetValue, TTargetSpec> & target,
        Proxy<TSourceSpec> const & source)
 {
@@ -497,7 +489,7 @@ assign(SimpleType<TTargetValue, TTargetSpec> & target,
 // NOTE(doering): It is not possible to write a single function here since "assign" must be specialized for the first argument at the first place
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(int64_t & c_target,
        SimpleType<TValue, TSpec> & source)
 {
@@ -505,7 +497,7 @@ assign(int64_t & c_target,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(int64_t & c_target,
        SimpleType<TValue, TSpec> const & source)
 {
@@ -513,7 +505,7 @@ assign(int64_t & c_target,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(uint64_t & c_target,
        SimpleType<TValue, TSpec> & source)
 {
@@ -521,7 +513,7 @@ assign(uint64_t & c_target,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(uint64_t & c_target,
        SimpleType<TValue, TSpec> const & source)
 {
@@ -529,7 +521,7 @@ assign(uint64_t & c_target,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(int & c_target,
        SimpleType<TValue, TSpec> & source)
 {
@@ -537,7 +529,7 @@ assign(int & c_target,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(int & c_target,
        SimpleType<TValue, TSpec> const & source)
 {
@@ -545,7 +537,7 @@ assign(int & c_target,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(unsigned int & c_target,
        SimpleType<TValue, TSpec> & source)
 {
@@ -553,7 +545,7 @@ assign(unsigned int & c_target,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(unsigned int & c_target,
        SimpleType<TValue, TSpec> const & source)
 {
@@ -561,7 +553,7 @@ assign(unsigned int & c_target,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(short & c_target,
        SimpleType<TValue, TSpec> & source)
 {
@@ -569,7 +561,7 @@ assign(short & c_target,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(short & c_target,
        SimpleType<TValue, TSpec> const & source)
 {
@@ -577,7 +569,7 @@ assign(short & c_target,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(unsigned short & c_target,
        SimpleType<TValue, TSpec> & source)
 {
@@ -585,7 +577,7 @@ assign(unsigned short & c_target,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(unsigned short & c_target,
        SimpleType<TValue, TSpec> const & source)
 {
@@ -593,7 +585,7 @@ assign(unsigned short & c_target,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(char & c_target,
        SimpleType<TValue, TSpec> & source)
 {
@@ -601,7 +593,7 @@ assign(char & c_target,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(char & c_target,
        SimpleType<TValue, TSpec> const & source)
 {
@@ -609,7 +601,7 @@ assign(char & c_target,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(signed char & c_target,
        SimpleType<TValue, TSpec> & source)
 {
@@ -617,7 +609,7 @@ assign(signed char & c_target,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(signed char & c_target,
        SimpleType<TValue, TSpec> const & source)
 {
@@ -625,7 +617,7 @@ assign(signed char & c_target,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(unsigned char & c_target,
        SimpleType<TValue, TSpec> & source)
 {
@@ -633,7 +625,7 @@ assign(unsigned char & c_target,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(unsigned char & c_target,
        SimpleType<TValue, TSpec> const & source)
 {
@@ -645,7 +637,7 @@ assign(unsigned char & c_target,
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TRight>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator==(SimpleType<TValue, TSpec> const & left_,
            TRight const & right_)
 {
@@ -655,7 +647,7 @@ operator==(SimpleType<TValue, TSpec> const & left_,
 }
 
 template <typename TLeft, typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator==(TLeft const & left_,
            SimpleType<TValue, TSpec> const & right_)
 {
@@ -665,7 +657,7 @@ operator==(TLeft const & left_,
 }
 
 template <typename TLeftValue, typename TLeftSpec, typename TRightValue, typename TRightSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator==(SimpleType<TLeftValue, TLeftSpec> const & left_,
            SimpleType<TRightValue, TRightSpec> const & right_)
 {
@@ -676,7 +668,7 @@ operator==(SimpleType<TLeftValue, TLeftSpec> const & left_,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator==(SimpleType<TValue, TSpec> const & left_,
            SimpleType<TValue, TSpec> const & right_)
 {
@@ -684,7 +676,7 @@ operator==(SimpleType<TValue, TSpec> const & left_,
 }
 
 template <typename TSpec, typename TValue, typename TSpec2>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator==(Proxy<TSpec> const & left_,
            SimpleType<TValue, TSpec2> const & right_)
 {
@@ -695,7 +687,7 @@ operator==(Proxy<TSpec> const & left_,
 }
 
 template <typename TSpec, typename TValue, typename TSpec2>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator==(SimpleType<TValue, TSpec2> const & left_,
            Proxy<TSpec> const & right_)
 {
@@ -710,7 +702,7 @@ operator==(SimpleType<TValue, TSpec2> const & left_,
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TRight>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator!=(SimpleType<TValue, TSpec> const & left_,
            TRight const & right_)
 {
@@ -720,7 +712,7 @@ operator!=(SimpleType<TValue, TSpec> const & left_,
 }
 
 template <typename TLeft, typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator!=(TLeft const & left_,
            SimpleType<TValue, TSpec> const & right_)
 {
@@ -730,7 +722,7 @@ operator!=(TLeft const & left_,
 }
 
 template <typename TLeftValue, typename TLeftSpec, typename TRightValue, typename TRightSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator!=(SimpleType<TLeftValue, TLeftSpec> const & left_,
            SimpleType<TRightValue, TRightSpec> const & right_)
 {
@@ -741,7 +733,7 @@ operator!=(SimpleType<TLeftValue, TLeftSpec> const & left_,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator!=(SimpleType<TValue, TSpec> const & left_,
            SimpleType<TValue, TSpec> const & right_)
 {
@@ -749,7 +741,7 @@ operator!=(SimpleType<TValue, TSpec> const & left_,
 }
 
 template <typename TSpec, typename TValue, typename TSpec2>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator!=(Proxy<TSpec> const & left_,
            SimpleType<TValue, TSpec2> const & right_)
 {
@@ -760,7 +752,7 @@ operator!=(Proxy<TSpec> const & left_,
 }
 
 template <typename TValue, typename TSpec, typename TProxySpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator!=(SimpleType<TValue, TSpec> const & left_,
            Proxy<TProxySpec> const & right_)
 {
@@ -775,7 +767,7 @@ operator!=(SimpleType<TValue, TSpec> const & left_,
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TRight>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator<(SimpleType<TValue, TSpec> const & left_,
           TRight const & right_)
 {
@@ -785,7 +777,7 @@ operator<(SimpleType<TValue, TSpec> const & left_,
 }
 
 template <typename TLeft, typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator<(TLeft const & left_,
           SimpleType<TValue, TSpec> const & right_)
 {
@@ -795,7 +787,7 @@ operator<(TLeft const & left_,
 }
 
 template <typename TLeftValue, typename TLeftSpec, typename TRightValue, typename TRightSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator<(SimpleType<TLeftValue, TLeftSpec> const & left_,
           SimpleType<TRightValue, TRightSpec> const & right_)
 {
@@ -806,7 +798,7 @@ operator<(SimpleType<TLeftValue, TLeftSpec> const & left_,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator<(SimpleType<TValue, TSpec> const & left_,
           SimpleType<TValue, TSpec> const & right_)
 {
@@ -814,7 +806,7 @@ operator<(SimpleType<TValue, TSpec> const & left_,
 }
 
 template <typename TSpec, typename TValue, typename TSpec2>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator<(Proxy<TSpec> const & left_,
           SimpleType<TValue, TSpec2> const & right_)
 {
@@ -825,7 +817,7 @@ operator<(Proxy<TSpec> const & left_,
 }
 
 template <typename TSpec, typename TValue, typename TSpec2>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator<(SimpleType<TValue, TSpec2> const & left_,
           Proxy<TSpec> const & right_)
 {
@@ -840,7 +832,7 @@ operator<(SimpleType<TValue, TSpec2> const & left_,
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TRight>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator<=(SimpleType<TValue, TSpec> const & left_,
            TRight const & right_)
 {
@@ -850,7 +842,7 @@ operator<=(SimpleType<TValue, TSpec> const & left_,
 }
 
 template <typename TLeft, typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator<=(TLeft const & left_,
            SimpleType<TValue, TSpec> const & right_)
 {
@@ -860,7 +852,7 @@ operator<=(TLeft const & left_,
 }
 
 template <typename TLeftValue, typename TLeftSpec, typename TRightValue, typename TRightSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator<=(SimpleType<TLeftValue, TLeftSpec> const & left_,
            SimpleType<TRightValue, TRightSpec> const & right_)
 {
@@ -871,7 +863,7 @@ operator<=(SimpleType<TLeftValue, TLeftSpec> const & left_,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator<=(SimpleType<TValue, TSpec> const & left_,
            SimpleType<TValue, TSpec> const & right_)
 {
@@ -879,7 +871,7 @@ operator<=(SimpleType<TValue, TSpec> const & left_,
 }
 
 template <typename TSpec, typename TValue, typename TSpec2>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator<=(Proxy<TSpec> const & left_,
            SimpleType<TValue, TSpec2> const & right_)
 {
@@ -889,7 +881,7 @@ operator<=(Proxy<TSpec> const & left_,
     return convert<TCompareType>(left_) <= convert<TCompareType>(right_);
 }
 template <typename TSpec, typename TValue, typename TSpec2>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator<=(SimpleType<TValue, TSpec2> const & left_,
            Proxy<TSpec> const & right_)
 {
@@ -904,7 +896,7 @@ operator<=(SimpleType<TValue, TSpec2> const & left_,
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TRight>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator>(SimpleType<TValue, TSpec> const & left_,
           TRight const & right_)
 {
@@ -914,7 +906,7 @@ operator>(SimpleType<TValue, TSpec> const & left_,
 }
 
 template <typename TLeft, typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator>(TLeft const & left_,
           SimpleType<TValue, TSpec> const & right_)
 {
@@ -924,7 +916,7 @@ operator>(TLeft const & left_,
 }
 
 template <typename TLeftValue, typename TLeftSpec, typename TRightValue, typename TRightSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator>(SimpleType<TLeftValue, TLeftSpec> const & left_,
           SimpleType<TRightValue, TRightSpec> const & right_)
 {
@@ -935,7 +927,7 @@ operator>(SimpleType<TLeftValue, TLeftSpec> const & left_,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator>(SimpleType<TValue, TSpec> const & left_,
           SimpleType<TValue, TSpec> const & right_)
 {
@@ -943,7 +935,7 @@ operator>(SimpleType<TValue, TSpec> const & left_,
 }
 
 template <typename TSpec, typename TValue, typename TSpec2>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator>(Proxy<TSpec> const & left_,
           SimpleType<TValue, TSpec2> const & right_)
 {
@@ -954,7 +946,7 @@ operator>(Proxy<TSpec> const & left_,
 }
 
 template <typename TSpec, typename TValue, typename TSpec2>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator>(SimpleType<TValue, TSpec2> const & left_,
           Proxy<TSpec> const & right_)
 {
@@ -969,7 +961,7 @@ operator>(SimpleType<TValue, TSpec2> const & left_,
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TRight>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator>=(SimpleType<TValue, TSpec> const & left_,
            TRight const & right_)
 {
@@ -979,7 +971,7 @@ operator>=(SimpleType<TValue, TSpec> const & left_,
 }
 
 template <typename TLeft, typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator>=(TLeft const & left_,
            SimpleType<TValue, TSpec> const & right_)
 {
@@ -989,7 +981,7 @@ operator>=(TLeft const & left_,
 }
 
 template <typename TLeftValue, typename TLeftSpec, typename TRightValue, typename TRightSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator>=(SimpleType<TLeftValue, TLeftSpec> const & left_,
            SimpleType<TRightValue, TRightSpec> const & right_)
 {
@@ -1000,7 +992,7 @@ operator>=(SimpleType<TLeftValue, TLeftSpec> const & left_,
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator>=(SimpleType<TValue, TSpec> const & left_,
            SimpleType<TValue, TSpec> const & right_)
 {
@@ -1008,7 +1000,7 @@ operator>=(SimpleType<TValue, TSpec> const & left_,
 }
 
 template <typename TSpec, typename TValue, typename TSpec2>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator>=(Proxy<TSpec> const & left_,
            SimpleType<TValue, TSpec2> const & right_)
 {
@@ -1018,7 +1010,7 @@ operator>=(Proxy<TSpec> const & left_,
     return convert<TCompareType>(left_) >= convert<TCompareType>(right_);
 }
 template <typename TSpec, typename TValue, typename TSpec2>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 operator>=(SimpleType<TValue, TSpec2> const & left_,
            Proxy<TSpec> const & right_)
 {
@@ -1033,7 +1025,7 @@ operator>=(SimpleType<TValue, TSpec2> const & left_,
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline SimpleType<TValue, TSpec> &
+inline SimpleType<TValue, TSpec> &
 operator++(SimpleType<TValue, TSpec> & me)
 {
     ++me.value;
@@ -1041,7 +1033,7 @@ operator++(SimpleType<TValue, TSpec> & me)
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline SimpleType<TValue, TSpec>
+inline SimpleType<TValue, TSpec>
 operator++(SimpleType<TValue, TSpec> & me, int)
 {
     SimpleType<TValue, TSpec> dummy = me;
@@ -1054,7 +1046,7 @@ operator++(SimpleType<TValue, TSpec> & me, int)
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline SimpleType<TValue, TSpec> &
+inline SimpleType<TValue, TSpec> &
 operator--(SimpleType<TValue, TSpec> & me)
 {
     --me.value;
@@ -1062,7 +1054,7 @@ operator--(SimpleType<TValue, TSpec> & me)
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline SimpleType<TValue, TSpec>
+inline SimpleType<TValue, TSpec>
 operator--(SimpleType<TValue, TSpec> & me, int)
 {
     SimpleType<TValue, TSpec> dummy = me;
@@ -1075,21 +1067,21 @@ operator--(SimpleType<TValue, TSpec> & me, int)
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline SimpleType<TValue, TSpec>
+inline SimpleType<TValue, TSpec>
 operator+(SimpleType<TValue, TSpec> const & v)
 {
     return v;
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline typename ValueSize<SimpleType<TValue, TSpec> >::Type
+inline typename ValueSize<SimpleType<TValue, TSpec> >::Type
 _internalOrdValue(SimpleType<TValue, TSpec> const & c)
 {
     return c.value;
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline typename ValueSize<SimpleType<TValue, TSpec> >::Type
+inline typename ValueSize<SimpleType<TValue, TSpec> >::Type
 ordValue(SimpleType<TValue, TSpec> const & c)
 {
     return convert<unsigned>(c);
diff --git a/include/seqan/basic/alphabet_storage.h b/include/seqan/basic/alphabet_storage.h
index e794470..53a5df3 100644
--- a/include/seqan/basic/alphabet_storage.h
+++ b/include/seqan/basic/alphabet_storage.h
@@ -260,7 +260,7 @@ struct IntegralForValue : IntegralForValueImpl_<BytesPerValue<TValue>::VALUE>
 // TODO(holtgrew): Enable only for integers, move to adapt builtins?
 
 template <typename TValue>
-SEQAN_HOST_DEVICE inline typename ValueSize<TValue>::Type
+inline typename ValueSize<TValue>::Type
 ordValue(TValue const & c)
 {
     return convert<unsigned>(static_cast<typename MakeUnsigned_<TValue>::Type const &>(c));
@@ -269,7 +269,7 @@ ordValue(TValue const & c)
 // The internal ord value is used for alphabets with piggyback qualities.
 
 template <typename TValue>
-SEQAN_HOST_DEVICE inline typename ValueSize<TValue>::Type
+inline typename ValueSize<TValue>::Type
 _internalOrdValue(TValue const & c)
 {
     return ordValue(c);
@@ -280,7 +280,7 @@ _internalOrdValue(TValue const & c)
 // ----------------------------------------------------------------------------
 
 template <typename T>
-SEQAN_HOST_DEVICE inline typename ValueSize<T>::Type
+inline typename ValueSize<T>::Type
 valueSize()
 {
     return +ValueSize<T>::VALUE;
diff --git a/include/seqan/basic/array_construct_destruct.h b/include/seqan/basic/array_construct_destruct.h
index 28133a4..cb83d7a 100644
--- a/include/seqan/basic/array_construct_destruct.h
+++ b/include/seqan/basic/array_construct_destruct.h
@@ -189,7 +189,7 @@ struct Reference<TValue * const>
 // TODO(holtgrew): This has to go to iterator module, adaption of pointers to iterators.
 
 template <typename T>
-SEQAN_HOST_DEVICE inline T &
+inline T &
 value(T * me)
 {
     return *me;
@@ -202,7 +202,7 @@ value(T * me)
 // TODO(holtgrew): This has to go to iterator module, adaption of pointers to iterators.
 
 template <typename T>
-SEQAN_HOST_DEVICE inline T &
+inline T &
 getValue(T * me)
 {
     return value(me);
diff --git a/include/seqan/basic/basic_allocator.h b/include/seqan/basic/basic_allocator.h
index 1a3f609..5d76366 100644
--- a/include/seqan/basic/basic_allocator.h
+++ b/include/seqan/basic/basic_allocator.h
@@ -44,6 +44,7 @@
 #include <seqan/platform.h>
 #include <seqan/basic/basic_fundamental.h>
 #include <seqan/basic/basic_smart_pointer.h>
+#include <seqan/basic/basic_simd_vector.h>
 
 // --------------------------------------------------------------------------
 // Sub Module Headers
diff --git a/include/seqan/basic/basic_exception.h b/include/seqan/basic/basic_exception.h
index 1912f6c..8a5a95a 100644
--- a/include/seqan/basic/basic_exception.h
+++ b/include/seqan/basic/basic_exception.h
@@ -45,7 +45,7 @@
 #include <exception>
 #include <stdexcept>
 
-#ifdef PLATFORM_GCC
+#if !defined(STDLIB_VS)
 #include <cxxabi.h>
 #endif
 
@@ -327,7 +327,7 @@ struct AssertFunctor
         else
         {
             char buffer[6]; // 5 + 1, e.g. "\0xff" + trailing zero
-            sprintf(buffer, "\\%#2x", (unsigned)val);
+            snprintf(buffer, 6, "\\%#2x", (unsigned)val);
             return std::string(buffer);
         }
     }
diff --git a/include/seqan/basic/basic_simd_vector.h b/include/seqan/basic/basic_simd_vector.h
index 801dff8..532483e 100644
--- a/include/seqan/basic/basic_simd_vector.h
+++ b/include/seqan/basic/basic_simd_vector.h
@@ -30,26 +30,44 @@
 //
 // ==========================================================================
 // Author: David Weese <david.weese at fu-berlin.de>
+//         René Rahn <rene.rahn at fu-berlin.de>
+//         Stefan Budach <stefan.budach at fu-berlin.de>
 // ==========================================================================
-// generic SIMD interface for SSE4/AVX
+// generic SIMD interface for SSE3 / AVX2
 // ==========================================================================
 
 #ifndef SEQAN_INCLUDE_SEQAN_BASIC_SIMD_VECTOR_H_
 #define SEQAN_INCLUDE_SEQAN_BASIC_SIMD_VECTOR_H_
 
-#if defined(__SSE4_1__) || defined(__AVX__)
- #include <immintrin.h>
+#include <utility>
+#include <tuple>
+//#include <seqan/basic/iterator_zip.h>
+
+#if defined(PLATFORM_WINDOWS_VS)
+  /* Microsoft C/C++-compatible compiler */
+  #include <intrin.h>
+#elif defined(PLATFORM_GCC) && (defined(__x86_64__) || defined(__i386__))
+  /* GCC-compatible compiler, targeting x86/x86-64 */
+  #include <x86intrin.h>
 #else
-// SSE4.1 or greater required
-#ifdef _MSC_VER
- #pragma message("SSE4.1 instruction set not enabled")
+ #warning "No supported platform for SIMD vectorization!"
+#endif
+
+namespace seqan {
+
+#ifdef COMPILER_LINTEL
+#include <type_traits>
+#define SEQAN_VECTOR_CAST_(T, v) static_cast<typename std::decay<T>::type>(v)
+#define SEQAN_VECTOR_CAST_LVALUE_(T, v) static_cast<T>(v)
 #else
- #warning "SSE4.1 instruction set not enabled"
-#endif  // _MSC_VER
+#define SEQAN_VECTOR_CAST_(T, v) reinterpret_cast<T>(v)
+#define SEQAN_VECTOR_CAST_LVALUE_(T, v) reinterpret_cast<T>(v)
 #endif
 
 
-namespace seqan {
+// ============================================================================
+// Forwards
+// ============================================================================
 
 // ============================================================================
 // Useful Macros
@@ -62,13 +80,12 @@ getValue(TSimdVector &vector, TPosition pos)
 {                                                                                                       \
 /*                                                                                                      \
     typedef typename Value<TSimdVector>::Type TValue;                                                   \
-    TValue val = (reinterpret_cast<TValue*>(&vector))[pos];                                    \
+    TValue val = (SEQAN_VECTOR_CAST_(TValue*, &vector))[pos];                                           \
     return val;                                                                                         \
 */                                                                                                      \
     return vector[pos];                                                                                 \
 }
 
-
 #define SEQAN_DEFINE_SIMD_VECTOR_VALUE_(TSimdVector)                                                    \
 template <typename TPosition>                                                                           \
 inline typename Value<TSimdVector>::Type                                                                \
@@ -84,60 +101,72 @@ assignValue(TSimdVector &vector, TPosition pos, TValue2 value)
 {                                                                                                       \
 /*                                                                                                      \
     typedef typename Value<TSimdVector>::Type TValue;                                                   \
-    (reinterpret_cast<TValue*>(&vector))[pos] = value;                                                  \
+    (SEQAN_VECTOR_CAST_(TValue*, &vector))[pos] = value;                                                \
 */                                                                                                      \
     vector[pos] = value;                                                                                \
 }
 
+// Define global macro to check if simd instructions are enabled.
+#define SEQAN_SIMD_ENABLED 1
 
-// ============================================================================
-// Tags, Classes, Enums
-// ============================================================================
+// Define maximal size of vector in byte.
+#if defined(__AVX2__)
+    #define SEQAN_SIZEOF_MAX_VECTOR 32
+#elif defined(__SSE4_1__) && defined(__SSE4_2__)
+    #define SEQAN_SSE4
+    #define SEQAN_SIZEOF_MAX_VECTOR 16
+#else
+    #undef SEQAN_SIMD_ENABLED
+    #define SEQAN_SIMD_ENABLED 0  // Disable simd instructions.
+#endif
 
 // define a concept and its models
 // they allow us to define generic vector functions
 SEQAN_CONCEPT(SimdVectorConcept, (T)) {};
 
-#if defined(__AVX2__)
-#define SEQAN_SIZEOF_MAX_VECTOR 32
-#elif defined(__SSE3__)
-#define SEQAN_SIZEOF_MAX_VECTOR 16
-#else
-#define SEQAN_SIZEOF_MAX_VECTOR 8
-#endif
+// Only include following code if simd instructions are enabled.
+#if SEQAN_SIMD_ENABLED
+
+// ============================================================================
+// Tags, Classes, Enums
+// ============================================================================
 
 // a metafunction returning the biggest supported SIMD vector
 template <typename TValue, int LENGTH = SEQAN_SIZEOF_MAX_VECTOR / sizeof(TValue)>
 struct SimdVector;
 
-// internal struct to specialize for vector parameters (SIZEOF=sizeof(TVector), LENGTH=LENGTH<TVector>::VALUE)
-template <int SIZEOF, int LENGTH = 0>
+// internal struct to specialize for vector parameters
+// VEC_SIZE = Vector size := sizeof(vec)
+// LENGTH = number of elements := VEC_SIZE / sizeof(InnerValue<TVec>::Type)
+template <int VEC_SIZE, int LENGTH = 0>
 struct SimdParams_ {};
 
+template <int SCALE>
+struct ScaleParam_
+{};
+
 // internal struct to specialize for matrix parameters
 template <int ROWS, int COLS, int BITS_PER_VALUE>
-struct SimdMatrixParams_
-{
-};
-
-
-#define SEQAN_DEFINE_SIMD_VECTOR_(TSimdVector, TValue, SIZEOF_VECTOR)                                       \
-    typedef TValue TSimdVector __attribute__ ((__vector_size__ (SIZEOF_VECTOR)));                           \
-    template <> struct SimdVector<TValue, SIZEOF_VECTOR / sizeof(TValue)> { typedef TSimdVector Type; };    \
-    template <> struct Value<TSimdVector>           { typedef TValue Type; };                               \
-    template <> struct LENGTH<TSimdVector>          { enum { VALUE = SIZEOF_VECTOR / sizeof(TValue) }; };   \
-    template <> struct Value<TSimdVector const>:  public Value<TSimdVector> {};                             \
-    template <> struct LENGTH<TSimdVector const>: public LENGTH<TSimdVector> {};                            \
-    SEQAN_DEFINE_SIMD_VECTOR_GETVALUE_(TSimdVector const)                                                   \
-    SEQAN_DEFINE_SIMD_VECTOR_VALUE_(TSimdVector)                                                            \
-    SEQAN_DEFINE_SIMD_VECTOR_VALUE_(TSimdVector const)                                                      \
-    SEQAN_DEFINE_SIMD_VECTOR_ASSIGNVALUE_(TSimdVector)                                                      \
-    template <>                                                                                             \
-    SEQAN_CONCEPT_IMPL((TSimdVector),       (SimdVectorConcept));                                           \
-    template <>                                                                                             \
-    SEQAN_CONCEPT_IMPL((TSimdVector const), (SimdVectorConcept));
-
-#ifdef __AVX__
+struct SimdMatrixParams_ {};
+
+#define SEQAN_DEFINE_SIMD_VECTOR_(TSimdVector, TValue, SIZEOF_VECTOR)                                           \
+        typedef TValue TSimdVector __attribute__ ((__vector_size__(SIZEOF_VECTOR)));                            \
+        template <> struct SimdVector<TValue, SIZEOF_VECTOR / sizeof(TValue)> {  typedef TSimdVector Type; };   \
+        template <> struct Value<TSimdVector>           { typedef TValue Type; };                               \
+        template <> struct Value<TSimdVector const>:  public Value<TSimdVector> {};                             \
+        template <> struct LENGTH<TSimdVector>          { enum { VALUE = SIZEOF_VECTOR / sizeof(TValue) }; };   \
+        template <> struct LENGTH<TSimdVector const>: public LENGTH<TSimdVector> {};                            \
+        SEQAN_DEFINE_SIMD_VECTOR_GETVALUE_(TSimdVector)                                                         \
+        SEQAN_DEFINE_SIMD_VECTOR_GETVALUE_(TSimdVector const)                                                   \
+        SEQAN_DEFINE_SIMD_VECTOR_VALUE_(TSimdVector)                                                            \
+        SEQAN_DEFINE_SIMD_VECTOR_VALUE_(TSimdVector const)                                                      \
+        SEQAN_DEFINE_SIMD_VECTOR_ASSIGNVALUE_(TSimdVector)                                                      \
+        template <>                                                                                             \
+        SEQAN_CONCEPT_IMPL((TSimdVector),       (SimdVectorConcept));                                           \
+        template <>                                                                                             \
+        SEQAN_CONCEPT_IMPL((TSimdVector const), (SimdVectorConcept));
+
+#ifdef __AVX2__
 SEQAN_DEFINE_SIMD_VECTOR_(SimdVector32Char,     char,           32)
 SEQAN_DEFINE_SIMD_VECTOR_(SimdVector32SChar,    signed char,    32)
 SEQAN_DEFINE_SIMD_VECTOR_(SimdVector32UChar,    unsigned char,  32)
@@ -149,9 +178,9 @@ SEQAN_DEFINE_SIMD_VECTOR_(SimdVector4Int64,     int64_t,        32)
 SEQAN_DEFINE_SIMD_VECTOR_(SimdVector4UInt64,    uint64_t,       32)
 SEQAN_DEFINE_SIMD_VECTOR_(SimdVector8Float,     float,          32)
 SEQAN_DEFINE_SIMD_VECTOR_(SimdVector4Double,    double,         32)
-#endif
+#endif  // __AVX2__
 
-#ifdef __SSE3__
+#ifdef SEQAN_SSE4
 SEQAN_DEFINE_SIMD_VECTOR_(SimdVector8Char,      char,           8)
 SEQAN_DEFINE_SIMD_VECTOR_(SimdVector8SChar,     signed char,    8)
 SEQAN_DEFINE_SIMD_VECTOR_(SimdVector8UChar,     unsigned char,  8)
@@ -172,90 +201,488 @@ SEQAN_DEFINE_SIMD_VECTOR_(SimdVector2Int64,     int64_t,        16)
 SEQAN_DEFINE_SIMD_VECTOR_(SimdVector2UInt64,    uint64_t,       16)
 SEQAN_DEFINE_SIMD_VECTOR_(SimdVector4Float,     float,          16)
 SEQAN_DEFINE_SIMD_VECTOR_(SimdVector2Double,    double,         16)
-#endif
+#endif  // SEQAN_SSE4
 
 // ============================================================================
 // Functions
 // ============================================================================
 
+// ============================================================================
+// AVX/AVX2 wrappers (256bit vectors)
+// ============================================================================
+
+#ifdef __AVX2__
+
 // --------------------------------------------------------------------------
-// AVX/AVX2 wrappers
+// _fillVector (256bit)
 // --------------------------------------------------------------------------
 
-#ifdef __AVX__
+template <typename TSimdVector, typename ...TValue>
+inline void _fillVector(TSimdVector &vector, std::tuple<TValue...> const & x, std::index_sequence<0> const &, SimdParams_<32, 32>) { SEQAN_VECTOR_CAST_LVALUE_(__m256i&, vector) = _mm256_set1_epi8(std::get<0>(x)); }
+template <typename TSimdVector, typename ...TValue>
+inline void _fillVector(TSimdVector &vector, std::tuple<TValue...> const & x, std::index_sequence<0> const &, SimdParams_<32, 16>) { SEQAN_VECTOR_CAST_LVALUE_(__m256i&, vector) = _mm256_set1_epi16(std::get<0>(x)); }
+template <typename TSimdVector, typename ...TValue>
+inline void _fillVector(TSimdVector &vector, std::tuple<TValue...> const & x, std::index_sequence<0> const &, SimdParams_<32, 8>)  { SEQAN_VECTOR_CAST_LVALUE_(__m256i&, vector) = _mm256_set1_epi32(std::get<0>(x)); }
+template <typename TSimdVector, typename ...TValue>
+inline void _fillVector(TSimdVector &vector, std::tuple<TValue...> const & x, std::index_sequence<0> const &, SimdParams_<32, 4>)  { SEQAN_VECTOR_CAST_LVALUE_(__m256i&, vector) = _mm256_set1_epi64x(std::get<0>(x)); }
+template <typename TSimdVector>
+    inline void _fillVector(TSimdVector &vector, std::tuple<float> const & x,  std::index_sequence<0> const &, SimdParams_<32, 8>)  { SEQAN_VECTOR_CAST_LVALUE_(__m256i&, vector) = _mm256_set1_ps(std::get<0>(x)); }
+template <typename TSimdVector>
+inline void _fillVector(TSimdVector &vector, std::tuple<double> const & x, std::index_sequence<0> const &, SimdParams_<32, 4>)  { SEQAN_VECTOR_CAST_LVALUE_(__m256i&, vector) = _mm256_set1_pd(std::get<0>(x)); }
+
+template <typename TSimdVector, typename ...TValue, size_t ...INDICES>
+inline void _fillVector(TSimdVector &vector, std::tuple<TValue...> const & values, std::index_sequence<INDICES...> const &, SimdParams_<32, 32>)
+{
+    SEQAN_VECTOR_CAST_LVALUE_(__m256i&, vector) = _mm256_set_epi8(std::get<INDICES>(values)...);
+}
+
+template <typename TSimdVector, typename ...TValue, size_t ...INDICES>
+inline void _fillVector(TSimdVector &vector, std::tuple<TValue...> const & values, std::index_sequence<INDICES...> const &, SimdParams_<32, 16>)
+{
+    SEQAN_VECTOR_CAST_LVALUE_(__m256i&, vector) = _mm256_set_epi16(std::get<INDICES>(values)...);
+}
+template <typename TSimdVector, typename ...TValue, size_t ...INDICES>
+inline void _fillVector(TSimdVector &vector, std::tuple<TValue...> const & values, std::index_sequence<INDICES...> const &, SimdParams_<32, 8>)
+{
+    SEQAN_VECTOR_CAST_LVALUE_(__m256i&, vector) = _mm256_set_epi32(std::get<INDICES>(values)...);
+}
+
+template <typename TSimdVector, typename ...TValue, size_t ...INDICES>
+inline void _fillVector(TSimdVector &vector, std::tuple<TValue...> const & values, std::index_sequence<INDICES...> const &, SimdParams_<32, 4>)
+{
+    SEQAN_VECTOR_CAST_LVALUE_(__m256i&, vector) = _mm256_set_epi64x(std::get<INDICES>(values)...);
+}
+
+// --------------------------------------------------------------------------
+// _clearVector (256bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector, int L>
+inline void _clearVector(TSimdVector &vector, SimdParams_<32, L>) { SEQAN_VECTOR_CAST_LVALUE_(__m256i&, vector) = _mm256_setzero_si256(); }
+template <typename TSimdVector>
+inline void _clearVector(TSimdVector &vector, SimdParams_<32, 8>) { SEQAN_VECTOR_CAST_LVALUE_(__m256&, vector) = _mm256_setzero_ps(); }
+template <typename TSimdVector>
+inline void _clearVector(TSimdVector &vector, SimdParams_<32, 4>) { SEQAN_VECTOR_CAST_LVALUE_(__m256d&, vector) = _mm256_setzero_pd(); }
+
+// --------------------------------------------------------------------------
+// _createVector (256bit)
+// --------------------------------------------------------------------------
 
 template <typename TSimdVector, typename TValue>
-inline void _fillVector(TSimdVector &vector, TValue x, SimdParams_<32, 32>) { reinterpret_cast<__m256i&>(vector) = _mm256_set1_epi8(x); }
-template <typename TSimdVector, typename TValue>
-inline void _fillVector(TSimdVector &vector, TValue x, SimdParams_<32, 16>) { reinterpret_cast<__m256i&>(vector) = _mm256_set1_epi16(x); }
-template <typename TSimdVector, typename TValue>
-inline void _fillVector(TSimdVector &vector, TValue x, SimdParams_<32, 8>)  { reinterpret_cast<__m256i&>(vector) = _mm256_set1_epi32(x); }
+inline TSimdVector _createVector(TValue x, SimdParams_<32, 32>) { return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_set1_epi8(x)); }
 template <typename TSimdVector, typename TValue>
-inline void _fillVector(TSimdVector &vector, TValue x, SimdParams_<32, 4>)  { reinterpret_cast<__m256i&>(vector) = _mm256_set1_epi64x(x); }
+inline TSimdVector _createVector(TValue x, SimdParams_<32, 16>) { return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_set1_epi16(x)); }
 template <typename TSimdVector, typename TValue>
-inline void _fillVector(TSimdVector &vector, float x,  SimdParams_<32, 8>)  { reinterpret_cast<__m256i&>(vector) = _mm256_set1_ps(x); }
+inline TSimdVector _createVector(TValue x, SimdParams_<32, 8>)  { return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_set1_epi32(x)); }
 template <typename TSimdVector, typename TValue>
-inline void _fillVector(TSimdVector &vector, double x, SimdParams_<32, 4>)  { reinterpret_cast<__m256i&>(vector) = _mm256_set1_pd(x); }
+inline TSimdVector _createVector(TValue x, SimdParams_< 32, 4>)  { return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_set1_epi64x(x)); }
+template <typename TSimdVector>
+inline TSimdVector _createVector(float x,  SimdParams_<32, 8>)  { return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_set1_ps(x)); }
+template <typename TSimdVector>
+inline TSimdVector _createVector(double x, SimdParams_<32, 4>)  { return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_set1_pd(x)); }
+
+// --------------------------------------------------------------------------
+// _cmpEq (256bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline TSimdVector _cmpEq(TSimdVector &a, TSimdVector &b, SimdParams_<32, 32>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_cmpeq_epi8(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                                             SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _cmpEq(TSimdVector &a, TSimdVector &b, SimdParams_<32, 16>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_cmpeq_epi16(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                                              SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _cmpEq(TSimdVector &a, TSimdVector &b, SimdParams_<32, 8>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_cmpeq_epi32(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                                              SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _cmpEq(TSimdVector &a, TSimdVector &b, SimdParams_<32, 4>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_cmpeq_epi64(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                                              SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+// --------------------------------------------------------------------------
+// _cmpGt (256bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline TSimdVector _cmpGt(TSimdVector &a, TSimdVector &b, SimdParams_<32, 32>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_cmpgt_epi8(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                                             SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _cmpGt(TSimdVector &a, TSimdVector &b, SimdParams_<32, 16>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_cmpgt_epi16(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                                              SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _cmpGt(TSimdVector &a, TSimdVector &b, SimdParams_<32, 8>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_cmpgt_epi32(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                                              SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _cmpGt(TSimdVector &a, TSimdVector &b, SimdParams_<32, 4>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_cmpgt_epi64(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                                              SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+// --------------------------------------------------------------------------
+// _bitwiseOr (256bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector, int L>
+inline TSimdVector _bitwiseOr(TSimdVector &a, TSimdVector &b, SimdParams_<32, L>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_or_si256(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                                           SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+// --------------------------------------------------------------------------
+// _bitwiseAnd (256bit)
+// --------------------------------------------------------------------------
 
 template <typename TSimdVector, int L>
-inline void _clearVector(TSimdVector &vector, SimdParams_<32, L>) { reinterpret_cast<__m256i&>(vector) = _mm256_setzero_si256(); }
+inline TSimdVector _bitwiseAnd(TSimdVector &a, TSimdVector &b, SimdParams_<32, L>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_and_si256(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                                            SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
 template <typename TSimdVector>
-inline void _clearVector(TSimdVector &vector, SimdParams_<32, 8>) { reinterpret_cast<__m256&>(vector) = _mm256_setzero_ps(); }
+inline TSimdVector _bitwiseAnd(TSimdVector &a, TSimdVector &b, SimdParams_<32, 8>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_and_ps(SEQAN_VECTOR_CAST_(const __m256&, a),
+                                                         SEQAN_VECTOR_CAST_(const __m256&, b)));
+}
+
 template <typename TSimdVector>
-inline void _clearVector(TSimdVector &vector, SimdParams_<32, 4>) { reinterpret_cast<__m256d&>(vector) = _mm256_setzero_pd(); }
+inline TSimdVector _bitwiseAnd(TSimdVector &a, TSimdVector &b, SimdParams_<32, 4>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_and_pd(SEQAN_VECTOR_CAST_(const __m256d&, a),
+                                                         SEQAN_VECTOR_CAST_(const __m256d&, b)));
+}
 
-#ifdef __AVX2__
+// --------------------------------------------------------------------------
+// _bitwiseAndNot (256bit)
+// --------------------------------------------------------------------------
 
 template <typename TSimdVector, int L>
-inline TSimdVector _blend(TSimdVector const &a, TSimdVector const &b, TSimdVector const &mask, SimdParams_<32, L>)
+inline TSimdVector _bitwiseAndNot(TSimdVector &a, TSimdVector &b, SimdParams_<32, L>)
 {
-    return reinterpret_cast<TSimdVector>(_mm256_blendv_epi8(
-        reinterpret_cast<const __m256i &>(a),
-        reinterpret_cast<const __m256i &>(b),
-        reinterpret_cast<const __m256i &>(mask)));
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_andnot_si256(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                                               SEQAN_VECTOR_CAST_(const __m256i&, b)));
 }
 
+// --------------------------------------------------------------------------
+// _bitwiseNot (256bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline TSimdVector _bitwiseNot(TSimdVector &a, SimdParams_<32, 32>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm256_cmpeq_epi8(SEQAN_VECTOR_CAST_(const __m256i&, a), _mm256_setzero_si256()));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _bitwiseNot(TSimdVector &a, SimdParams_<32, 16>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm256_cmpeq_epi16(SEQAN_VECTOR_CAST_(const __m256i&, a), _mm256_setzero_si256()));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _bitwiseNot(TSimdVector &a, SimdParams_<32, 8>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm256_cmpeq_epi32(SEQAN_VECTOR_CAST_(const __m256i&, a), _mm256_setzero_si256()));
+
+}
+template <typename TSimdVector>
+inline TSimdVector _bitwiseNot(TSimdVector &a, SimdParams_<32, 4>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm256_cmpeq_epi64(SEQAN_VECTOR_CAST_(const __m256i&, a), _mm256_setzero_si256()));
+}
+
+// --------------------------------------------------------------------------
+// _divide (256bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline TSimdVector _divide(TSimdVector &a, int b, SimdParams_<32, 32>) { return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_div_epi8(a, _mm256_set1_epi8(b))); }
+
+template <typename TSimdVector>
+inline TSimdVector _divide(TSimdVector &a, int b, SimdParams_<32, 16>) { return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_div_epi16(a, _mm256_set1_epi16(b))); }
+
+template <typename TSimdVector>
+inline TSimdVector _divide(TSimdVector &a, int b, SimdParams_<32, 8>) { return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_div_epi32(a, _mm256_set1_epi32(b))); }
+
+template <typename TSimdVector>
+inline TSimdVector _divide(TSimdVector &a, int b, SimdParams_<32, 4>) { return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_div_epi64(a, _mm256_set1_epi64x(b))); }
+
+// --------------------------------------------------------------------------
+// _add (256bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline TSimdVector _add(TSimdVector &a, TSimdVector &b, SimdParams_<32, 32>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm256_add_epi8(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                              SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _add(TSimdVector &a, TSimdVector &b, SimdParams_<32, 16>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm256_add_epi16(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                               SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _add(TSimdVector &a, TSimdVector &b, SimdParams_<32, 8>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm256_add_epi32(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                               SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _add(TSimdVector &a, TSimdVector &b, SimdParams_<32, 4>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm256_add_epi64(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                               SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+// --------------------------------------------------------------------------
+// _sub (256bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline TSimdVector _sub(TSimdVector &a, TSimdVector &b, SimdParams_<32, 32>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm256_sub_epi8(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                              SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _sub(TSimdVector &a, TSimdVector &b, SimdParams_<32, 16>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm256_sub_epi16(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                               SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _sub(TSimdVector &a, TSimdVector &b, SimdParams_<32, 8>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm256_sub_epi32(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                               SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _sub(TSimdVector &a, TSimdVector &b, SimdParams_<32, 4>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm256_sub_epi64(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                               SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+// --------------------------------------------------------------------------
+// _mult (256bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline TSimdVector _mult(TSimdVector &a, TSimdVector &b, SimdParams_<32, 32>)
+{
+    SEQAN_ASSERT_FAIL("AVX2 intrinsics for multiplying 8 bit values not implemented!");
+    return a;
+}
+
+template <typename TSimdVector>
+inline TSimdVector _mult(TSimdVector &a, TSimdVector &b, SimdParams_<32, 16>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm256_mullo_epi16(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                                 SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _mult(TSimdVector &a, TSimdVector &b, SimdParams_<32, 8>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm256_mullo_epi32(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                                 SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _mult(TSimdVector &a, TSimdVector &b, SimdParams_<32, 4>)
+{
+    SEQAN_ASSERT_FAIL("AVX2 intrinsics for multiplying 64 bit values not implemented!");
+    return a;
+}
+
+// --------------------------------------------------------------------------
+// _max (256bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline TSimdVector _max(TSimdVector &a, TSimdVector &b, SimdParams_<32, 32>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm256_max_epi8(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                              SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _max(TSimdVector &a, TSimdVector &b, SimdParams_<32, 16>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm256_max_epi16(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                               SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _max(TSimdVector &a, TSimdVector &b, SimdParams_<32, 8>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm256_max_epi32(SEQAN_VECTOR_CAST_(const __m256i&, a),
+                                               SEQAN_VECTOR_CAST_(const __m256i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _max(TSimdVector &a, TSimdVector &b, SimdParams_<32, 4>)
+{
+    SEQAN_ASSERT_FAIL("AVX2 intrinsics for max on 64 bit values not implemented!");
+    return a;
+}
+
+// --------------------------------------------------------------------------
+// _blend (256bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector, typename TSimdVectorMask, int L>
+inline TSimdVector _blend(TSimdVector const &a, TSimdVector const &b, TSimdVectorMask const &mask, SimdParams_<32, L>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm256_blendv_epi8(SEQAN_VECTOR_CAST_(const __m256i &, a),
+                                                 SEQAN_VECTOR_CAST_(const __m256i &, b),
+                                                 SEQAN_VECTOR_CAST_(const __m256i &, mask)));
+}
+
+// --------------------------------------------------------------------------
+// _storeu (256bit)
+// --------------------------------------------------------------------------
+
+template <typename T, typename TSimdVector, int L>
+inline void _storeu(T * memAddr, TSimdVector &vec, SimdParams_<32, L>)
+{
+    _mm256_storeu_si256((__m256i*)memAddr, SEQAN_VECTOR_CAST_(const __m256i&, vec));
+}
+
+// ----------------------------------------------------------------------------
+// Function _load() 256bit
+// ----------------------------------------------------------------------------
+
+template <typename TSimdVector, typename T, int L>
+inline TSimdVector _load(T const * memAddr, SimdParams_<32, L>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_load_si256((__m256i const *) memAddr));
+}
+
+// --------------------------------------------------------------------------
+// _shuffleVector (256bit)
+// --------------------------------------------------------------------------
+
 template <typename TSimdVector1, typename TSimdVector2>
 inline TSimdVector1
 _shuffleVector(TSimdVector1 const &vector, TSimdVector2 const &indices, SimdParams_<32, 32>, SimdParams_<32, 32>)
 {
-    return reinterpret_cast<TSimdVector1>(_mm256_shuffle_epi8(
-        reinterpret_cast<const __m256i &>(vector),
-        reinterpret_cast<const __m256i &>(indices)));
+    return SEQAN_VECTOR_CAST_(TSimdVector1, _mm256_shuffle_epi8(SEQAN_VECTOR_CAST_(const __m256i &, vector),
+                                                                SEQAN_VECTOR_CAST_(const __m256i &, indices)));
 }
 template <typename TSimdVector1, typename TSimdVector2>
 inline TSimdVector1
 _shuffleVector(TSimdVector1 const &vector, TSimdVector2 const &indices, SimdParams_<32, 16>, SimdParams_<16, 16>)
 {
     // copy 2nd 64bit word to 3rd, compute 2*idx
-    __m256i idx = _mm256_slli_epi16(_mm256_permute4x64_epi64(_mm256_castsi128_si256(reinterpret_cast<const __m128i &>(indices)), 0x50), 1);
+    __m256i idx = _mm256_slli_epi16(_mm256_permute4x64_epi64(_mm256_castsi128_si256(SEQAN_VECTOR_CAST_(const __m128i &, indices)), 0x50), 1);
+
     // interleave with 2*idx+1 and call shuffle
-    return reinterpret_cast<TSimdVector1>(_mm256_shuffle_epi8(
-        reinterpret_cast<const __m256i &>(vector),
-         _mm256_unpacklo_epi8(idx, _mm256_add_epi8(idx, _mm256_set1_epi8(1)))));
+    return SEQAN_VECTOR_CAST_(TSimdVector1, _mm256_shuffle_epi8(SEQAN_VECTOR_CAST_(const __m256i &, vector),
+                                                                _mm256_unpacklo_epi8(idx, _mm256_add_epi8(idx, _mm256_set1_epi8(1)))));
 }
 
+// --------------------------------------------------------------------------
+// _shiftRightLogical (256bit)
+// --------------------------------------------------------------------------
+
 template <typename TSimdVector>
 inline TSimdVector _shiftRightLogical(TSimdVector const &vector, const int imm, SimdParams_<32, 32>)
 {
-    return reinterpret_cast<TSimdVector>(_mm256_srli_epi16(reinterpret_cast<const __m256i &>(vector), imm) & _mm256_set1_epi8(0xff >> imm));
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_srli_epi16(SEQAN_VECTOR_CAST_(const __m256i &, vector), imm) & _mm256_set1_epi8(0xff >> imm));
 }
 template <typename TSimdVector>
 inline TSimdVector _shiftRightLogical(TSimdVector const &vector, const int imm, SimdParams_<32, 16>)
 {
-    return reinterpret_cast<TSimdVector>(_mm256_srli_epi16(reinterpret_cast<const __m256i &>(vector), imm));
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_srli_epi16(SEQAN_VECTOR_CAST_(const __m256i &, vector), imm));
 }
 template <typename TSimdVector>
 inline TSimdVector _shiftRightLogical(TSimdVector const &vector, const int imm, SimdParams_<32, 8>)
 {
-    return reinterpret_cast<TSimdVector>(_mm256_srli_epi32(reinterpret_cast<const __m256i &>(vector), imm));
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_srli_epi32(SEQAN_VECTOR_CAST_(const __m256i &, vector), imm));
 }
 template <typename TSimdVector>
 inline TSimdVector _shiftRightLogical(TSimdVector const &vector, const int imm, SimdParams_<32, 4>)
 {
-    return reinterpret_cast<TSimdVector>(_mm256_srli_epi64(reinterpret_cast<const __m256i &>(vector), imm));
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_srli_epi64(SEQAN_VECTOR_CAST_(const __m256i &, vector), imm));
 }
 
+// --------------------------------------------------------------------------
+// _gather (256bit)
+// --------------------------------------------------------------------------
+
+template <typename TValue, typename TSimdVector, typename TSize, TSize SCALE>
+inline TSimdVector _gather(TValue const * memAddr,
+                           TSimdVector const & idx,
+                           std::integral_constant<TSize, SCALE> const & /*scale*/,
+                           SimdParams_<32, 16>)
+{
+    // 1. Unpack low idx values and interleave with 0 and gather from memAddr.
+    // 2. Unpack high idx values and interleave with 0, than gather from memAddr.
+    // 3. Merge 2 8x32 vectors into 1x16 vector by signed saturation. This operation reverts the interleave by the unpack operations above.
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm256_packs_epi32(_mm256_i32gather_epi32(static_cast<int32_t const *>(memAddr), _mm256_unpacklo_epi16(SEQAN_VECTOR_CAST_(__m256i const &, idx), _mm256_set1_epi16(0)), SCALE),
+                                                              _mm256_i32gather_epi32(static_cast<int32_t const *>(memAddr), _mm256_unpackhi_epi16(SEQAN_VECTOR_CAST_(__m256i const &, idx), _mm256_set1_epi16(0)), SCALE)));
+}
+
+// --------------------------------------------------------------------------
+// _transposeMatrix (256bit)
+// --------------------------------------------------------------------------
+
 // emulate missing _mm256_unpacklo_epi128/_mm256_unpackhi_epi128 instructions
 inline __m256i _mm256_unpacklo_epi128(__m256i const &a, __m256i const &b)
 {
@@ -263,194 +690,532 @@ inline __m256i _mm256_unpacklo_epi128(__m256i const &a, __m256i const &b)
 //    return _mm256_inserti128_si256(a, _mm256_extracti128_si256(b, 0), 1);
 }
 
-inline __m256i _mm256_unpackhi_epi128(__m256i const &a, __m256i const &b)
+inline __m256i _mm256_unpackhi_epi128(__m256i const &a, __m256i const &b)
+{
+    return _mm256_permute2x128_si256(a, b, 0x31);
+//    return _mm256_inserti128_si256(b, _mm256_extracti128_si256(a, 1), 0);
+}
+
+template <typename TSimdVector>
+inline void
+_transposeMatrix(TSimdVector matrix[], SimdMatrixParams_<32, 32, 8>)
+{
+    // we need a look-up table to reverse the lowest 4 bits
+    // in order to place the permute the transposed rows
+    static const unsigned char bitRev[] = { 0, 8, 4,12, 2,10, 6,14, 1, 9, 5,13, 3,11, 7,15,
+                                           16,24,20,28,18,26,22,30,17,25,21,29,19,27,23,31};
+
+    // transpose a 32x32 byte matrix
+    __m256i tmp1[32];
+    for (int i = 0; i < 16; ++i)
+    {
+        tmp1[i]    = _mm256_unpacklo_epi8(SEQAN_VECTOR_CAST_(const __m256i &, matrix[2*i]), SEQAN_VECTOR_CAST_(const __m256i &, matrix[2*i+1]));
+        tmp1[i+16] = _mm256_unpackhi_epi8(SEQAN_VECTOR_CAST_(const __m256i &, matrix[2*i]), SEQAN_VECTOR_CAST_(const __m256i &, matrix[2*i+1]));
+    }
+    __m256i  tmp2[32];
+    for (int i = 0; i < 16; ++i)
+    {
+        tmp2[i]    = _mm256_unpacklo_epi16(tmp1[2*i], tmp1[2*i+1]);
+        tmp2[i+16] = _mm256_unpackhi_epi16(tmp1[2*i], tmp1[2*i+1]);
+    }
+    for (int i = 0; i < 16; ++i)
+    {
+        tmp1[i]    = _mm256_unpacklo_epi32(tmp2[2*i], tmp2[2*i+1]);
+        tmp1[i+16] = _mm256_unpackhi_epi32(tmp2[2*i], tmp2[2*i+1]);
+    }
+    for (int i = 0; i < 16; ++i)
+    {
+        tmp2[i]    = _mm256_unpacklo_epi64(tmp1[2*i], tmp1[2*i+1]);
+        tmp2[i+16] = _mm256_unpackhi_epi64(tmp1[2*i], tmp1[2*i+1]);
+    }
+    for (int i = 0; i < 16; ++i)
+    {
+        matrix[bitRev[i]]    = SEQAN_VECTOR_CAST_(TSimdVector, _mm256_unpacklo_epi128(tmp2[2*i],tmp2[2*i+1]));
+        matrix[bitRev[i+16]] = SEQAN_VECTOR_CAST_(TSimdVector, _mm256_unpackhi_epi128(tmp2[2*i],tmp2[2*i+1]));
+    }
+}
+
+// --------------------------------------------------------------------------
+// Function _testAllZeros (256bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, int)
+inline _testAllZeros(TSimdVector const &vector, TSimdVector const &mask, SimdParams_<32>)
+{
+    return _mm256_testz_si256(SEQAN_VECTOR_CAST_(const __m256i &, vector),
+                              SEQAN_VECTOR_CAST_(const __m256i &, mask));
+}
+
+// --------------------------------------------------------------------------
+// Function _testAllOnes (256bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline int _testAllOnes(TSimdVector const &vector, SimdParams_<32>)
+{
+    __m256i vec = SEQAN_VECTOR_CAST_(const __m256i &, vector);
+    return _mm256_testc_si256(vec, _mm256_cmpeq_epi32(vec, vec));
+}
+
+#endif  // #ifdef __AVX2__
+
+// ============================================================================
+// SSE3 wrappers (128bit vectors)
+// ============================================================================
+
+#ifdef SEQAN_SSE4
+
+// --------------------------------------------------------------------------
+// _fillVector (128bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector, typename... TValue>
+inline void _fillVector(TSimdVector &vector, std::tuple<TValue...> const & x, std::index_sequence<0> const &, SimdParams_<16, 16>) { SEQAN_VECTOR_CAST_LVALUE_(__m128i&, vector) = _mm_set1_epi8(std::get<0>(x)); }
+template <typename TSimdVector, typename... TValue>
+inline void _fillVector(TSimdVector &vector, std::tuple<TValue...> const & x, std::index_sequence<0> const &, SimdParams_<16, 8>)  { SEQAN_VECTOR_CAST_LVALUE_(__m128i&, vector) = _mm_set1_epi16(std::get<0>(x)); }
+template <typename TSimdVector, typename... TValue>
+inline void _fillVector(TSimdVector &vector, std::tuple<TValue...> const & x, std::index_sequence<0> const &, SimdParams_<16, 4>)  { SEQAN_VECTOR_CAST_LVALUE_(__m128i&, vector) = _mm_set1_epi32(std::get<0>(x)); }
+template <typename TSimdVector, typename... TValue>
+inline void _fillVector(TSimdVector &vector, std::tuple<TValue...> const & x, std::index_sequence<0> const &, SimdParams_<16, 2>)  { SEQAN_VECTOR_CAST_LVALUE_(__m128i&, vector) = _mm_set1_epi64x(std::get<0>(x)); }
+template <typename TSimdVector>
+inline void _fillVector(TSimdVector &vector, std::tuple<float> const & x,  std::index_sequence<0> const &, SimdParams_<16, 4>)   { SEQAN_VECTOR_CAST_LVALUE_(__m128i&, vector) = _mm_set1_ps(std::get<0>(x)); }
+template <typename TSimdVector>
+inline void _fillVector(TSimdVector &vector, std::tuple<double> const & x, std::index_sequence<0> const &, SimdParams_<16, 2>)  { SEQAN_VECTOR_CAST_LVALUE_(__m128i&, vector) = _mm_set1_pd(std::get<0>(x)); }
+
+template <typename TSimdVector, typename ...TValue, size_t ...INDICES>
+inline void _fillVector(TSimdVector &vector, std::tuple<TValue...> const & args, std::index_sequence<INDICES...> const &, SimdParams_<16, 16>)
+{
+    SEQAN_VECTOR_CAST_LVALUE_(__m128i&, vector) = _mm_set_epi8(std::get<INDICES>(args)...);
+}
+
+template <typename TSimdVector, typename ...TValue, size_t ...INDICES>
+inline void _fillVector(TSimdVector &vector, std::tuple<TValue...> const & args, std::index_sequence<INDICES...> const &, SimdParams_<16, 8>)
+{
+    SEQAN_VECTOR_CAST_LVALUE_(__m128i&, vector) = _mm_set_epi16(std::get<INDICES>(args)...);
+}
+
+template <typename TSimdVector, typename ...TValue, size_t ...INDICES>
+inline void _fillVector(TSimdVector &vector, std::tuple<TValue...> const & args, std::index_sequence<INDICES...> const &, SimdParams_<16, 4>)
+{
+    SEQAN_VECTOR_CAST_LVALUE_(__m128i&, vector) = _mm_set_epi32(std::get<INDICES>(args)...);
+}
+
+template <typename TSimdVector, typename ...TValue, size_t ...INDICES>
+inline void _fillVector(TSimdVector &vector, std::tuple<TValue...> const & args, std::index_sequence<INDICES...> const &, SimdParams_<16, 2>)
+{
+    SEQAN_VECTOR_CAST_LVALUE_(__m128i&, vector) = _mm_set_epi64x(std::get<INDICES>(args)...);
+}
+
+// --------------------------------------------------------------------------
+// _clearVector (128bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector, int L>
+inline void _clearVector(TSimdVector &vector, SimdParams_<16, L>) { SEQAN_VECTOR_CAST_LVALUE_(__m128i&, vector) = _mm_setzero_si128(); }
+template <typename TSimdVector>
+inline void _clearVector(TSimdVector &vector, SimdParams_<16, 4>)  { SEQAN_VECTOR_CAST_LVALUE_(__m128&, vector) = _mm_setzero_ps(); }
+template <typename TSimdVector>
+inline void _clearVector(TSimdVector &vector, SimdParams_<16, 2>)  { SEQAN_VECTOR_CAST_LVALUE_(__m128d&, vector) = _mm_setzero_pd(); }
+
+// --------------------------------------------------------------------------
+// _createVector (128bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector, typename TValue>
+inline TSimdVector _createVector(TValue x, SimdParams_<16, 16>) { return SEQAN_VECTOR_CAST_(TSimdVector, _mm_set1_epi8(x)); }
+template <typename TSimdVector, typename TValue>
+inline TSimdVector _createVector(TValue x, SimdParams_<16, 8>)  { return SEQAN_VECTOR_CAST_(TSimdVector, _mm_set1_epi16(x)); }
+template <typename TSimdVector, typename TValue>
+inline TSimdVector _createVector(TValue x, SimdParams_<16, 4>)  { return SEQAN_VECTOR_CAST_(TSimdVector, _mm_set1_epi32(x)); }
+template <typename TSimdVector, typename TValue>
+inline TSimdVector _createVector(TValue x, SimdParams_<16, 2>)  { return SEQAN_VECTOR_CAST_(TSimdVector, _mm_set1_epi64x(x)); }
+template <typename TSimdVector>
+inline TSimdVector _createVector(float x,  SimdParams_<16, 4>)  { return SEQAN_VECTOR_CAST_(TSimdVector, _mm_set1_ps(x)); }
+template <typename TSimdVector>
+inline TSimdVector _createVector(double x, SimdParams_<16, 2>)  { return SEQAN_VECTOR_CAST_(TSimdVector, _mm_set1_pd(x)); }
+
+// --------------------------------------------------------------------------
+// cmpEq (128bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline TSimdVector _cmpEq(TSimdVector &a, TSimdVector &b, SimdParams_<16, 16>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_cmpeq_epi8(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                             SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _cmpEq(TSimdVector &a, TSimdVector &b, SimdParams_<16, 8>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_cmpeq_epi16(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                              SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _cmpEq(TSimdVector &a, TSimdVector &b, SimdParams_<16, 4>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_cmpeq_epi32(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                              SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _cmpEq(TSimdVector &a, TSimdVector &b, SimdParams_<16, 2>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_cmpeq_epi64(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                              SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+// --------------------------------------------------------------------------
+// _cmpGt (128bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline TSimdVector _cmpGt(TSimdVector &a, TSimdVector &b, SimdParams_<16, 16>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_cmpgt_epi8(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                             SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _cmpGt(TSimdVector &a, TSimdVector &b, SimdParams_<16, 8>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_cmpgt_epi16(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                              SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _cmpGt(TSimdVector &a, TSimdVector &b, SimdParams_<16, 4>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_cmpgt_epi32(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                              SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _cmpGt(TSimdVector &a, TSimdVector &b, SimdParams_<16, 2>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_cmpgt_epi64(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                              SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+// --------------------------------------------------------------------------
+// _bitwiseOr (128bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector, int L>
+inline TSimdVector _bitwiseOr(TSimdVector &a, TSimdVector &b, SimdParams_<16, L>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_or_si128(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                           SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+// --------------------------------------------------------------------------
+// _bitwiseAnd (128bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector, int L>
+inline TSimdVector _bitwiseAnd(TSimdVector &a, TSimdVector &b, SimdParams_<16, L>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_and_si128(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                            SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+// --------------------------------------------------------------------------
+// _bitwiseAndNot (128bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector, int L>
+inline TSimdVector _bitwiseAndNot(TSimdVector &a, TSimdVector &b, SimdParams_<16, L>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_andnot_si128(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                               SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+// --------------------------------------------------------------------------
+// _bitwiseNot (128bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline TSimdVector _bitwiseNot(TSimdVector &a, SimdParams_<16, 16>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_cmpeq_epi8(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                             _mm_setzero_si128()));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _bitwiseNot(TSimdVector &a, SimdParams_<16, 8>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_cmpeq_epi16(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                              _mm_setzero_si128()));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _bitwiseNot(TSimdVector &a, SimdParams_<16, 4>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_cmpeq_epi32(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                              _mm_setzero_si128()));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _bitwiseNot(TSimdVector &a, SimdParams_<16, 2>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_cmpeq_epi64(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                              _mm_setzero_si128()));
+}
+
+// --------------------------------------------------------------------------
+// _divide (128bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline TSimdVector _divide(TSimdVector &a, int b, SimdParams_<16, 16>) { return SEQAN_VECTOR_CAST_(TSimdVector, _mm_div_epi8(a, _mm_set1_epi8(b))); }
+
+template <typename TSimdVector>
+inline TSimdVector _divide(TSimdVector &a, int b, SimdParams_<16, 8>){ return SEQAN_VECTOR_CAST_(TSimdVector, _mm_div_epi16(a, _mm_set1_epi16(b))); }
+
+template <typename TSimdVector>
+inline TSimdVector _divide(TSimdVector &a, int b, SimdParams_<16, 4>) { return SEQAN_VECTOR_CAST_(TSimdVector, _mm_div_epi32(a, _mm_set1_epi32(b))); }
+
+template <typename TSimdVector>
+inline TSimdVector _divide(TSimdVector &a, int b, SimdParams_<16, 2>) { return SEQAN_VECTOR_CAST_(TSimdVector, _mm_div_epi64(a, _mm_set1_epi64x(b))); }
+
+// --------------------------------------------------------------------------
+// _add (128bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline TSimdVector _add(TSimdVector &a, TSimdVector &b, SimdParams_<16, 16>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_add_epi8(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                           SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _add(TSimdVector &a, TSimdVector &b, SimdParams_<16, 8>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_add_epi16(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                            SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _add(TSimdVector &a, TSimdVector &b, SimdParams_<16, 4>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_add_epi32(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                            SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _add(TSimdVector &a, TSimdVector &b, SimdParams_<16, 2>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_add_epi64(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                            SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+// --------------------------------------------------------------------------
+// _sub (128bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline TSimdVector _sub(TSimdVector &a, TSimdVector &b, SimdParams_<16, 16>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_sub_epi8(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                           SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _sub(TSimdVector &a, TSimdVector &b, SimdParams_<16, 8>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_sub_epi16(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                            SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _sub(TSimdVector &a, TSimdVector &b, SimdParams_<16, 4>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_sub_epi32(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                            SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
+
+template <typename TSimdVector>
+inline TSimdVector _sub(TSimdVector &a, TSimdVector &b, SimdParams_<16, 2>)
 {
-    return _mm256_permute2x128_si256(a, b, 0x31);
-//    return _mm256_inserti128_si256(b, _mm256_extracti128_si256(a, 1), 0);
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_sub_epi64(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                            SEQAN_VECTOR_CAST_(const __m128i&, b)));
 }
 
+// --------------------------------------------------------------------------
+// _mult (128bit)
+// --------------------------------------------------------------------------
+
 template <typename TSimdVector>
-inline void
-_transposeMatrix(TSimdVector matrix[], SimdMatrixParams_<32, 32, 8>)
+inline TSimdVector _mult(TSimdVector &a, TSimdVector &/*b*/, SimdParams_<16, 16>)
 {
-    // we need a look-up table to reverse the lowest 4 bits
-    // in order to place the permute the transposed rows
-    static const unsigned char bitRev[] = { 0, 8, 4,12, 2,10, 6,14, 1, 9, 5,13, 3,11, 7,15,
-                                           16,24,20,28,18,26,22,30,17,25,21,29,19,27,23,31};
-
-    // transpose a 32x32 byte matrix
-    __m256i tmp1[32];
-    for (int i = 0; i < 16; ++i)
-    {
-        tmp1[i]    = _mm256_unpacklo_epi8(reinterpret_cast<const __m256i &>(matrix[2*i]), reinterpret_cast<const __m256i &>(matrix[2*i+1]));
-        tmp1[i+16] = _mm256_unpackhi_epi8(reinterpret_cast<const __m256i &>(matrix[2*i]), reinterpret_cast<const __m256i &>(matrix[2*i+1]));
-    }
-    __m256i  tmp2[32];
-    for (int i = 0; i < 16; ++i)
-    {
-        tmp2[i]    = _mm256_unpacklo_epi16(tmp1[2*i], tmp1[2*i+1]);
-        tmp2[i+16] = _mm256_unpackhi_epi16(tmp1[2*i], tmp1[2*i+1]);
-    }
-    for (int i = 0; i < 16; ++i)
-    {
-        tmp1[i]    = _mm256_unpacklo_epi32(tmp2[2*i], tmp2[2*i+1]);
-        tmp1[i+16] = _mm256_unpackhi_epi32(tmp2[2*i], tmp2[2*i+1]);
-    }
-    for (int i = 0; i < 16; ++i)
-    {
-        tmp2[i]    = _mm256_unpacklo_epi64(tmp1[2*i], tmp1[2*i+1]);
-        tmp2[i+16] = _mm256_unpackhi_epi64(tmp1[2*i], tmp1[2*i+1]);
-    }
-    for (int i = 0; i < 16; ++i)
-    {
-        matrix[bitRev[i]]    = reinterpret_cast<TSimdVector>(_mm256_unpacklo_epi128(tmp2[2*i],tmp2[2*i+1]));
-        matrix[bitRev[i+16]] = reinterpret_cast<TSimdVector>(_mm256_unpackhi_epi128(tmp2[2*i],tmp2[2*i+1]));
-    }
+    SEQAN_ASSERT_FAIL("SSE intrinsics for multiplying 8 bit values not implemented!");
+    return a;
 }
 
-#else   // #ifdef __AVX2__
-template <typename TSimdVector1, typename TSimdVector2>
-inline TSimdVector1
-_shuffleVector(TSimdVector1 const &vector, TSimdVector2 const &indices, SimdParams_<32, 32>, SimdParams_<32, 32>)
+template <typename TSimdVector>
+inline TSimdVector _mult(TSimdVector &a, TSimdVector &b, SimdParams_<16, 8>)
 {
-    return reinterpret_cast<TSimdVector1>(_mm256_permute2f128_si256(
-        _mm256_castsi128_si256 (_mm_shuffle_epi8(
-                                    _mm256_castsi256_si128(reinterpret_cast<const __m256i &>(vector)),
-                                    _mm256_castsi256_si128(reinterpret_cast<const __m256i &>(indices)))),
-        _mm256_castsi128_si256 (_mm_shuffle_epi8(
-                                    _mm256_castsi256_si128(reinterpret_cast<const __m256i &>(vector)),
-                                    _mm256_extractf128_si256(reinterpret_cast<const __m256i &>(indices), 1))),
-        0x20));
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_mullo_epi16(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                              SEQAN_VECTOR_CAST_(const __m128i&, b)));
 }
 
-inline SimdVector32Char   shiftRightLogical(SimdVector32Char   const &vector, const int imm)
+template <typename TSimdVector>
+inline TSimdVector _mult(TSimdVector &a, TSimdVector &b, SimdParams_<16, 4>)
 {
-    return reinterpret_cast<SimdVector32Char>(_mm256_permute2f128_si256(
-        _mm256_castsi128_si256 (_mm_srli_epi16(
-                                    _mm256_castsi256_si128(reinterpret_cast<const __m256i &>(vector)),
-                                    imm)),
-        _mm256_castsi128_si256 (_mm_srli_epi16(
-                                    _mm256_extractf128_si256(reinterpret_cast<const __m256i &>(vector), 1),
-                                    imm)),
-        0x20) & _mm256_set1_epi8(0xff >> imm));
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_mullo_epi32(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                              SEQAN_VECTOR_CAST_(const __m128i&, b)));
 }
 
-#endif  // #ifdef __AVX2__
+template <typename TSimdVector>
+inline TSimdVector _mult(TSimdVector &a, TSimdVector &/*b*/, SimdParams_<16, 2>)
+{
+    SEQAN_ASSERT_FAIL("SSE intrinsics for multiplying 64 bit values not implemented!");
+    return a;
+}
 
+// --------------------------------------------------------------------------
+// _max (128bit)
+// --------------------------------------------------------------------------
 
 template <typename TSimdVector>
-SEQAN_FUNC_ENABLE_IF(
-    Is<SimdVectorConcept<TSimdVector> >,
-    int)
-inline _testAllZeros(TSimdVector const &vector, TSimdVector const &mask, SimdParams_<32>)
+inline TSimdVector _max(TSimdVector &a, TSimdVector &b, SimdParams_<16, 8>)
 {
-#ifdef __AVX2__
-    return _mm256_testz_si256(vector, mask);
-#else   // #ifdef __AVX2__
-    return
-        _mm_testz_si128(_mm256_castsi256_si128(vector), _mm256_castsi256_si128(mask)) &
-        _mm_testz_si128(_mm256_extractf128_si256(vector, 1), _mm256_extractf128_si256(mask, 1));
-#endif  // #ifdef __AVX2__
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_max_epi16(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                            SEQAN_VECTOR_CAST_(const __m128i&, b)));
 }
 
 template <typename TSimdVector>
-inline int _testAllOnes(TSimdVector const &vector, SimdParams_<32>)
+inline TSimdVector _max(TSimdVector &a, TSimdVector &b, SimdParams_<16, 16>)
 {
-    __m256i vec = reinterpret_cast<const __m256i &>(vector);
-#ifdef __AVX2__
-    return _mm256_testc_si256(vec, _mm256_cmpeq_epi32(vec, vec));
-#else   // #ifdef __AVX2__
-    return
-        _mm_test_all_ones(_mm256_castsi256_si128(vec)) &
-        _mm_test_all_ones(_mm256_extractf128_si256(vec, 1));
-#endif  // #ifdef __AVX2__
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_max_epi8(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                           SEQAN_VECTOR_CAST_(const __m128i&, b)));
 }
 
-#endif  // #ifdef __AVX__
-
+template <typename TSimdVector>
+inline TSimdVector _max(TSimdVector &a, TSimdVector &b, SimdParams_<16, 4>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_max_epi32(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                            SEQAN_VECTOR_CAST_(const __m128i&, b)));
+}
 
 // --------------------------------------------------------------------------
-// SSE3 wrappers
+// _blend (128bit)
 // --------------------------------------------------------------------------
 
-#ifdef __SSE3__
+template <typename TSimdVector, typename TSimdVectorMask, int L>
+inline TSimdVector _blend(TSimdVector const &a, TSimdVector const &b, TSimdVectorMask const &mask, SimdParams_<16, L>)
+{
+    return SEQAN_VECTOR_CAST_(TSimdVector,
+                              _mm_blendv_epi8(SEQAN_VECTOR_CAST_(const __m128i&, a),
+                                              SEQAN_VECTOR_CAST_(const __m128i&, b),
+                                              SEQAN_VECTOR_CAST_(const __m128i&, mask)));
+}
 
-template <typename TSimdVector, typename TValue>
-inline void _fillVector(TSimdVector &vector, TValue x, SimdParams_<16, 16>) { reinterpret_cast<__m128i&>(vector) = _mm_set1_epi8(x); }
-template <typename TSimdVector, typename TValue>
-inline void _fillVector(TSimdVector &vector, TValue x, SimdParams_<16, 8>)  { reinterpret_cast<__m128i&>(vector) = _mm_set1_epi16(x); }
-template <typename TSimdVector, typename TValue>
-inline void _fillVector(TSimdVector &vector, TValue x, SimdParams_<16, 4>)  { reinterpret_cast<__m128i&>(vector) = _mm_set1_epi32(x); }
-template <typename TSimdVector, typename TValue>
-inline void _fillVector(TSimdVector &vector, TValue x, SimdParams_<16, 2>)  { reinterpret_cast<__m128i&>(vector) = _mm_set1_epi64x(x); }
-template <typename TSimdVector, typename TValue>
-inline void _fillVector(TSimdVector &vector, float x,  SimdParams_<16, 4>)   { reinterpret_cast<__m128i&>(vector) = _mm_set1_ps(x); }
-template <typename TSimdVector, typename TValue>
-inline void _fillVector(TSimdVector &vector, double x, SimdParams_<16, 2>)  { reinterpret_cast<__m128i&>(vector) = _mm_set1_pd(x); }
+// --------------------------------------------------------------------------
+// _storeu (128bit)
+// --------------------------------------------------------------------------
 
-template <typename TSimdVector, int L>
-inline void _clearVector(TSimdVector &vector, SimdParams_<16, L>) { reinterpret_cast<__m128i&>(vector) = _mm_setzero_si128(); }
-template <typename TSimdVector>
-inline void _clearVector(TSimdVector &vector, SimdParams_<16, 4>)  { reinterpret_cast<__m128&>(vector) = _mm_setzero_ps(); }
-template <typename TSimdVector>
-inline void _clearVector(TSimdVector &vector, SimdParams_<16, 2>)  { reinterpret_cast<__m128d&>(vector) = _mm_setzero_pd(); }
+template <typename T, typename TSimdVector, int L>
+inline void _storeu(T * memAddr, TSimdVector &vec, SimdParams_<16, L>)
+{
+    _mm_storeu_si128((__m128i*)memAddr, reinterpret_cast<const __m128i &>(vec));
+}
 
+// ----------------------------------------------------------------------------
+// Function _load() 128bit
+// ----------------------------------------------------------------------------
 
-template <typename TSimdVector, int L>
-inline TSimdVector _blend(TSimdVector const &a, TSimdVector const &b, TSimdVector const &mask, SimdParams_<16, L>)
+template <typename TSimdVector, typename T, int L>
+inline TSimdVector _load(T const * memAddr, SimdParams_<16, L>)
 {
-    return reinterpret_cast<TSimdVector>(_mm_blendv_epi8(
-        reinterpret_cast<const __m128i &>(a),
-        reinterpret_cast<const __m128i &>(b),
-        reinterpret_cast<const __m128i &>(mask)));
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm_load_si128((__m128i const *) memAddr));
 }
 
+// --------------------------------------------------------------------------
+// _shuffleVector (128bit)
+// --------------------------------------------------------------------------
+
 template <typename TSimdVector1, typename TSimdVector2>
 inline TSimdVector1
 _shuffleVector(TSimdVector1 const &vector, TSimdVector2 const &indices, SimdParams_<16, 16>, SimdParams_<16, 16>)
 {
-    return reinterpret_cast<TSimdVector1>(_mm_shuffle_epi8(
-        reinterpret_cast<const __m128i &>(vector),
-        reinterpret_cast<const __m128i &>(indices)));
+    return SEQAN_VECTOR_CAST_(TSimdVector1, _mm_shuffle_epi8(SEQAN_VECTOR_CAST_(const __m128i &, vector),
+                                                             SEQAN_VECTOR_CAST_(const __m128i &, indices)));
 }
 
 template <typename TSimdVector1, typename TSimdVector2>
 inline TSimdVector1
 _shuffleVector(TSimdVector1 const &vector, TSimdVector2 const &indices, SimdParams_<16, 8>, SimdParams_<8, 8>)
 {
-#if defined(SEQAN_IS_32_BIT)
+#if SEQAN_IS_32_BIT
     __m128i idx = _mm_slli_epi16(_mm_unpacklo_epi32(_mm_cvtsi32_si128(reinterpret_cast<const uint32_t &>(indices)),
                                                     _mm_cvtsi32_si128(reinterpret_cast<const uint64_t &>(indices) >> 32)), 1);
 #else
     __m128i idx = _mm_slli_epi16(_mm_cvtsi64_si128(reinterpret_cast<const uint64_t &>(indices)), 1);
-#endif  // defined(SEQAN_IS_32_BIT)
-    return reinterpret_cast<TSimdVector1>(_mm_shuffle_epi8(
-        reinterpret_cast<const __m128i &>(vector),
-        _mm_unpacklo_epi8(idx, _mm_add_epi8(idx, _mm_set1_epi8(1)))));
+#endif  // SEQAN_IS_32_BIT
+    return SEQAN_VECTOR_CAST_(TSimdVector1, _mm_shuffle_epi8(SEQAN_VECTOR_CAST_(const __m128i &, vector),
+                                                             _mm_unpacklo_epi8(idx, _mm_add_epi8(idx, _mm_set1_epi8(1)))));
 }
 
+// --------------------------------------------------------------------------
+// _shiftRightLogical (128bit)
+// --------------------------------------------------------------------------
+
 template <typename TSimdVector>
 inline TSimdVector _shiftRightLogical(TSimdVector const &vector, const int imm, SimdParams_<16, 16>)
 {
-    return reinterpret_cast<TSimdVector>(_mm_srli_epi16(reinterpret_cast<const __m128i &>(vector), imm) & _mm_set1_epi8(0xff >> imm));
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm_srli_epi16(SEQAN_VECTOR_CAST_(const __m128i &, vector), imm) & _mm_set1_epi8(0xff >> imm));
 }
 template <typename TSimdVector>
 inline TSimdVector _shiftRightLogical(TSimdVector const &vector, const int imm, SimdParams_<16, 8>)
 {
-    return reinterpret_cast<TSimdVector>(_mm_srli_epi16(reinterpret_cast<const __m128i &>(vector), imm));
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm_srli_epi16(SEQAN_VECTOR_CAST_(const __m128i &, vector), imm));
 }
 template <typename TSimdVector>
 inline TSimdVector _shiftRightLogical(TSimdVector const &vector, const int imm, SimdParams_<16, 4>)
 {
-    return reinterpret_cast<TSimdVector>(_mm_srli_epi32(reinterpret_cast<const __m128i &>(vector), imm));
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm_srli_epi32(SEQAN_VECTOR_CAST_(const __m128i &, vector), imm));
 }
 template <typename TSimdVector>
 inline TSimdVector _shiftRightLogical(TSimdVector const &vector, const int imm, SimdParams_<16, 2>)
 {
-    return reinterpret_cast<TSimdVector>(_mm_srli_epi64(reinterpret_cast<const __m128i &>(vector), imm));
+    return SEQAN_VECTOR_CAST_(TSimdVector, _mm_srli_epi64(SEQAN_VECTOR_CAST_(const __m128i &, vector), imm));
 }
 
-
+// --------------------------------------------------------------------------
+// _transposeMatrix (128bit)
+// --------------------------------------------------------------------------
 
 template <typename TSimdVector>
 inline void
@@ -464,8 +1229,8 @@ _transposeMatrix(TSimdVector matrix[], SimdMatrixParams_<8, 8, 8>)
     __m64 tmp1[8];
     for (int i = 0; i < 4; ++i)
     {
-        tmp1[i]   = _mm_unpacklo_pi8(reinterpret_cast<const __m64 &>(matrix[2*i]), reinterpret_cast<const __m64 &>(matrix[2*i+1]));
-        tmp1[i+4] = _mm_unpackhi_pi8(reinterpret_cast<const __m64 &>(matrix[2*i]), reinterpret_cast<const __m64 &>(matrix[2*i+1]));
+        tmp1[i]   = _mm_unpacklo_pi8(SEQAN_VECTOR_CAST_(const __m64 &, matrix[2*i]), SEQAN_VECTOR_CAST_(const __m64 &, matrix[2*i+1]));
+        tmp1[i+4] = _mm_unpackhi_pi8(SEQAN_VECTOR_CAST_(const __m64 &, matrix[2*i]), SEQAN_VECTOR_CAST_(const __m64 &, matrix[2*i+1]));
     }
     __m64 tmp2[8];
     for (int i = 0; i < 4; ++i)
@@ -475,8 +1240,8 @@ _transposeMatrix(TSimdVector matrix[], SimdMatrixParams_<8, 8, 8>)
     }
     for (int i = 0; i < 4; ++i)
     {
-        matrix[bitRev[i]]   = reinterpret_cast<TSimdVector>(_mm_unpacklo_pi32(tmp2[2*i], tmp2[2*i+1]));
-        matrix[bitRev[i+4]] = reinterpret_cast<TSimdVector>(_mm_unpackhi_pi32(tmp2[2*i], tmp2[2*i+1]));
+        matrix[bitRev[i]]   = SEQAN_VECTOR_CAST_(TSimdVector, _mm_unpacklo_pi32(tmp2[2*i], tmp2[2*i+1]));
+        matrix[bitRev[i+4]] = SEQAN_VECTOR_CAST_(TSimdVector, _mm_unpackhi_pi32(tmp2[2*i], tmp2[2*i+1]));
     }
 }
 
@@ -498,8 +1263,8 @@ _transposeMatrix(TSimdVector matrix[], SimdMatrixParams_<16, 16, 8>)
     __m128i tmp1[16];
     for (int i = 0; i < 8; ++i)
     {
-        tmp1[i]   = _mm_unpacklo_epi8(reinterpret_cast<const __m128i &>(matrix[2*i]), reinterpret_cast<const __m128i &>(matrix[2*i+1]));
-        tmp1[i+8] = _mm_unpackhi_epi8(reinterpret_cast<const __m128i &>(matrix[2*i]), reinterpret_cast<const __m128i &>(matrix[2*i+1]));
+        tmp1[i]   = _mm_unpacklo_epi8(SEQAN_VECTOR_CAST_(const __m128i &, matrix[2*i]), SEQAN_VECTOR_CAST_(const __m128i &, matrix[2*i+1]));
+        tmp1[i+8] = _mm_unpackhi_epi8(SEQAN_VECTOR_CAST_(const __m128i &, matrix[2*i]), SEQAN_VECTOR_CAST_(const __m128i &, matrix[2*i+1]));
     }
     // tmp1[0]  = A0 B0 A1 B1 ... A7 B7
     // tmp1[1]  = C0 D0 C1 D1 ... C7 D7
@@ -538,132 +1303,372 @@ _transposeMatrix(TSimdVector matrix[], SimdMatrixParams_<16, 16, 8>)
     // tmp1[1]  = I0 J0 .... P0 I1 J1 .... P1
     for (int i = 0; i < 8; ++i)
     {
-        matrix[bitRev[i]]   = reinterpret_cast<TSimdVector>(_mm_unpacklo_epi64(tmp1[2*i], tmp1[2*i+1]));
-        matrix[bitRev[i+8]] = reinterpret_cast<TSimdVector>(_mm_unpackhi_epi64(tmp1[2*i], tmp1[2*i+1]));
+        matrix[bitRev[i]]   = SEQAN_VECTOR_CAST_(TSimdVector, _mm_unpacklo_epi64(tmp1[2*i], tmp1[2*i+1]));
+        matrix[bitRev[i+8]] = SEQAN_VECTOR_CAST_(TSimdVector, _mm_unpackhi_epi64(tmp1[2*i], tmp1[2*i+1]));
     }
 }
 
-#ifdef __SSE4_1__
+// --------------------------------------------------------------------------
+// Function _testAllZeros (128bit)
+// --------------------------------------------------------------------------
+
 template <typename TSimdVector>
-SEQAN_FUNC_ENABLE_IF(
-    Is<SimdVectorConcept<TSimdVector> >,
-    int)
+SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, int)
 inline _testAllZeros(TSimdVector const &vector, TSimdVector const &mask, SimdParams_<16>)
 {
     return _mm_testz_si128(vector, mask);
 }
 
+// --------------------------------------------------------------------------
+// Function _testAllOnes (128bit)
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline
+SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, int)
+_testAllOnes(TSimdVector const &vector, SimdParams_<16>)
+{
+    return _mm_test_all_ones(SEQAN_VECTOR_CAST_(const __m128i &, vector));
+}
+#endif  // #ifdef SEQAN_SSE4
+
+// ============================================================================
+//
+// INTERFACE FUNCTIONS
+// - these should be used in the actual code, they will call one of the wrapper
+//   functions defined above based on the vector type
+//
+// ============================================================================
+
+// --------------------------------------------------------------------------
+// Function transpose()
+// --------------------------------------------------------------------------
+
+template <int ROWS, typename TSimdVector>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, void)
+transpose(TSimdVector matrix[ROWS])
+{
+    typedef typename Value<TSimdVector>::Type TValue;
+    _transposeMatrix(matrix, SimdMatrixParams_<ROWS, LENGTH<TSimdVector>::VALUE, BitsPerValue<TValue>::VALUE>());
+}
+
+// --------------------------------------------------------------------------
+// Function clearVector()
+// --------------------------------------------------------------------------
+
 template <typename TSimdVector>
-inline int _testAllOnes(TSimdVector const &vector, SimdParams_<16>)
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, void)
+clearVector(TSimdVector &vector)
 {
-    return _mm_test_all_ones(reinterpret_cast<const __m128i &>(vector));
+    typedef typename Value<TSimdVector>::Type TValue;
+    _clearVector(vector, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue)>());
 }
 
+// --------------------------------------------------------------------------
+// Function createVector()
+// --------------------------------------------------------------------------
 
-#endif  // #ifdef __SSE3__
-//#endif  // #ifdef __AVX__
-#endif
+template <typename TSimdVector, typename TValue>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+createVector(TValue x)
+{
+    typedef typename Value<TSimdVector>::Type TIVal;
+    return _createVector<TSimdVector>(x, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TIVal)>());
+}
+
+// --------------------------------------------------------------------------
+// Function fillVector()
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector, typename ...TValue>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, void)
+fillVector(TSimdVector &vector, TValue const... args)
+{
+    typedef typename Value<TSimdVector>::Type TIVal;
+    _fillVector(vector, std::make_tuple(args...),
+                std::make_index_sequence<sizeof...(args)>{},
+                SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TIVal)>());
+}
+
+// --------------------------------------------------------------------------
+// Function cmpEq()
+// --------------------------------------------------------------------------
 
+template <typename TSimdVector>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+cmpEq (TSimdVector const &a, TSimdVector const &b)
+{
+    typedef typename Value<TSimdVector>::Type TValue;
+    return _cmpEq(a, b, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue)>());
+}
+
+// --------------------------------------------------------------------------
+// Function operator==()
+// --------------------------------------------------------------------------
 
 template <typename TSimdVector>
-SEQAN_FUNC_ENABLE_IF(
-    Is<SimdVectorConcept<TSimdVector> >,
-    int)
-inline testAllZeros(TSimdVector const &vector, TSimdVector const &mask)
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+operator == (TSimdVector const &a, TSimdVector const &b)
 {
-    return _testAllZeros(vector, mask, SimdParams_<sizeof(TSimdVector)>());
+    typedef typename Value<TSimdVector>::Type TValue;
+    return _cmpEq(a, b, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue)>());
 }
 
+// --------------------------------------------------------------------------
+// Function operatorGt()
+// --------------------------------------------------------------------------
+
 template <typename TSimdVector>
-SEQAN_FUNC_ENABLE_IF(
-    Is<SimdVectorConcept<TSimdVector> >,
-    int)
-inline testAllZeros(TSimdVector const &vector)
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+cmpGt (TSimdVector const &a, TSimdVector const &b)
 {
-    return _testAllZeros(vector, vector, SimdParams_<sizeof(TSimdVector)>());
+    typedef typename Value<TSimdVector>::Type TValue;
+    return _cmpGt(a, b, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue)>());
 }
 
+// --------------------------------------------------------------------------
+// Function operator>()
+// --------------------------------------------------------------------------
+
 template <typename TSimdVector>
-inline int _testAllOnes(TSimdVector const &vector, True)
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+operator > (TSimdVector const &a, TSimdVector const &b)
 {
-    return _testAllOnes(vector, SimdParams_<sizeof(vector)>());
+    typedef typename Value<TSimdVector>::Type TValue;
+    return _cmpGt(a, b, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue)>());
 }
 
-template <int ROWS, typename TSimdVector>
-SEQAN_FUNC_ENABLE_IF(
-    Is<SimdVectorConcept<TSimdVector> >,
-    void)
-inline transpose(TSimdVector matrix[ROWS])
+// --------------------------------------------------------------------------
+// Function max()
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+max(TSimdVector const &a, TSimdVector const &b)
 {
     typedef typename Value<TSimdVector>::Type TValue;
-    _transposeMatrix(matrix, SimdMatrixParams_<
-                                    ROWS,
-                                    LENGTH<TSimdVector>::VALUE,
-                                    BitsPerValue<TValue>::VALUE>());
+    return _max(a, b, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue)>());
 }
 
+// --------------------------------------------------------------------------
+// Function operator|()
+// --------------------------------------------------------------------------
 
 template <typename TSimdVector>
-SEQAN_FUNC_ENABLE_IF(
-    Is<SimdVectorConcept<TSimdVector> >,
-    void)
-inline clearVector(TSimdVector &vector)
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+operator | (TSimdVector const &a, TSimdVector const &b)
 {
-    _clearVector(vector, SimdParams_<sizeof(TSimdVector), LENGTH<TSimdVector>::VALUE>());
+    typedef typename Value<TSimdVector>::Type TValue;
+    return _bitwiseOr(a, b, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue)>());
 }
 
+// --------------------------------------------------------------------------
+// Function operator|=()
+// --------------------------------------------------------------------------
 
-template <typename TSimdVector, typename TValue>
-SEQAN_FUNC_ENABLE_IF(
-    Is<SimdVectorConcept<TSimdVector> >,
-    void)
-inline fillVector(TSimdVector &vector, TValue x)
+template <typename TSimdVector>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector &)
+operator |= (TSimdVector &a, TSimdVector const &b)
+{
+    a = a | b;
+    return a;
+}
+
+// --------------------------------------------------------------------------
+// Function operator&()
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+operator & (TSimdVector const &a, TSimdVector const &b)
+{
+    typedef typename Value<TSimdVector>::Type TValue;
+    return _bitwiseAnd(a, b, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue)>());
+}
+
+// --------------------------------------------------------------------------
+// Function operator&=()
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector &)
+operator &= (TSimdVector &a, TSimdVector const &b)
+{
+    a = a & b;
+    return a;
+}
+
+// --------------------------------------------------------------------------
+// Function operator~()
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+operator ~ (TSimdVector const &a)
+{
+    typedef typename Value<TSimdVector>::Type TValue;
+    return _bitwiseNot(a, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue)>());
+}
+
+// --------------------------------------------------------------------------
+// Function operator+()
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+operator + (TSimdVector const &a, TSimdVector const &b)
+{
+    typedef typename Value<TSimdVector>::Type TValue;
+    return _add(a, b, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue)>());
+}
+
+// --------------------------------------------------------------------------
+// Function operator-()
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+operator - (TSimdVector const &a, TSimdVector const &b)
+{
+    typedef typename Value<TSimdVector>::Type TValue;
+    return _sub(a, b, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue)>());
+}
+
+// --------------------------------------------------------------------------
+// Function operator*()
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+operator * (TSimdVector const &a, TSimdVector const &b)
+{
+    typedef typename Value<TSimdVector>::Type TValue;
+    return _mult(a, b, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue)>());
+}
+
+// --------------------------------------------------------------------------
+// Function operator/()
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+operator/ (TSimdVector const &a, TSimdVector const &b)
 {
-    _fillVector(vector, x, SimdParams_<sizeof(TSimdVector), LENGTH<TSimdVector>::VALUE>());
+    typedef typename Value<TSimdVector>::Type TValue;
+    return _div(a, b, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue)>());
 }
 
+// --------------------------------------------------------------------------
+// Function andNot
+// --------------------------------------------------------------------------
+
 template <typename TSimdVector>
-SEQAN_FUNC_ENABLE_IF(
-    Is<SimdVectorConcept<TSimdVector> >,
-    TSimdVector)
-inline blend(TSimdVector const &a, TSimdVector const &b, TSimdVector const &mask)
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+andNot(TSimdVector const &a, TSimdVector const &b)
 {
-    return _blend(a, b, mask, SimdParams_<sizeof(TSimdVector), LENGTH<TSimdVector>::VALUE>());
+    typedef typename Value<TSimdVector>::Type TValue;
+    return _bitwiseAndNot(a, b, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue)>());
 }
 
+// --------------------------------------------------------------------------
+// Function shuffleVector()
+// --------------------------------------------------------------------------
+
 template <typename TSimdVector1, typename TSimdVector2>
-SEQAN_FUNC_ENABLE_IF(
-    Is<SimdVectorConcept<TSimdVector1> >,
-    TSimdVector1)
-inline shuffleVector(TSimdVector1 const &vector, TSimdVector2 const &indices)
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector1> >, TSimdVector1)
+shuffleVector(TSimdVector1 const &vector, TSimdVector2 const &indices)
 {
+    typedef typename Value<TSimdVector1>::Type TValue1;
+    typedef typename Value<TSimdVector2>::Type TValue2;
     return _shuffleVector(
                 vector,
                 indices,
-                SimdParams_<sizeof(TSimdVector1), LENGTH<TSimdVector1>::VALUE>(),
-                SimdParams_<sizeof(TSimdVector2), LENGTH<TSimdVector2>::VALUE>());
+                SimdParams_<sizeof(TSimdVector1), sizeof(TSimdVector1) / sizeof(TValue1)>(),
+                SimdParams_<sizeof(TSimdVector2), sizeof(TSimdVector2) / sizeof(TValue2)>());
 }
 
+// --------------------------------------------------------------------------
+// Function shiftRightLogical()
+// --------------------------------------------------------------------------
+
 template <typename TSimdVector>
-SEQAN_FUNC_ENABLE_IF(
-    Is<SimdVectorConcept<TSimdVector> >,
-    TSimdVector)
-inline shiftRightLogical(TSimdVector const &vector, const int imm)
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+shiftRightLogical(TSimdVector const &vector, const int imm)
+{
+    typedef typename Value<TSimdVector>::Type TValue;
+    return _shiftRightLogical(vector, imm, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue)>());
+}
+
+// --------------------------------------------------------------------------
+// Function blend()
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector, typename TSimdVectorMask>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+blend(TSimdVector const &a, TSimdVector const &b, TSimdVectorMask const & mask)
+{
+    typedef typename Value<TSimdVector>::Type TValue;
+    return _blend(a, b, mask, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue)>());
+}
+
+// --------------------------------------------------------------------------
+// Function storeu()
+// --------------------------------------------------------------------------
+
+template <typename T, typename TSimdVector>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, void)
+storeu(T * memAddr, TSimdVector const &vec)
+{
+    typedef typename Value<TSimdVector>::Type TValue;
+    _storeu(memAddr, vec, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue)>());
+}
+
+// --------------------------------------------------------------------------
+// Function load()
+// --------------------------------------------------------------------------
+
+template <typename TSimdVector, typename T>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+load(T const * memAddr)
+{
+    typedef typename Value<TSimdVector>::Type TValue;
+    return _load<TSimdVector>(memAddr, SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TValue)>());
+}
+
+// --------------------------------------------------------------------------
+// Function gather()
+// --------------------------------------------------------------------------
+
+template <typename TValue, typename TSimdVector>
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+gather(TValue const * memAddr, TSimdVector const & idx)
+{
+    typedef typename Value<TSimdVector>::Type TInnerValue;
+    return _gather(memAddr, idx, std::integral_constant<size_t, sizeof(TValue)>(), SimdParams_<sizeof(TSimdVector), sizeof(TSimdVector) / sizeof(TInnerValue)>());
+}
+
+#endif  // SEQAN_SIMD_ENABLED
+
+// NOTE(rmaerker): Make this function available, also if SIMD is not enabled.
+template <typename TSimdVector, typename TValue>
+inline SEQAN_FUNC_DISABLE_IF(Is<SimdVectorConcept<TSimdVector> >, TSimdVector)
+createVector(TValue x)
 {
-    return _shiftRightLogical(vector, imm, SimdParams_<sizeof(TSimdVector), LENGTH<TSimdVector>::VALUE>());
+    return x;
 }
 
+// --------------------------------------------------------------------------
+// Function print()
+// --------------------------------------------------------------------------
 
 template <typename TSimdVector>
-SEQAN_FUNC_ENABLE_IF(
-    Is<SimdVectorConcept<TSimdVector> >,
-    std::ostream &)
-inline print(std::ostream &stream, TSimdVector const &vector)
+inline SEQAN_FUNC_ENABLE_IF(Is<SimdVectorConcept<TSimdVector> >, std::ostream &)
+print(std::ostream &stream, TSimdVector const &vector)
 {
     stream << '<';
     for (int i = 0; i < LENGTH<TSimdVector>::VALUE; ++i)
-        stream << '\t' << (unsigned)vector[i];
-    stream << "\t>";
+    stream << '\t' << vector[i];
+    stream << "\t>\n";
     return stream;
 }
 
diff --git a/include/seqan/basic/basic_type.h b/include/seqan/basic/basic_type.h
index 493d4ce..1039a24 100644
--- a/include/seqan/basic/basic_type.h
+++ b/include/seqan/basic/basic_type.h
@@ -346,21 +346,21 @@ struct Parameter_<T const [I]>
 
 template <typename T>
 typename Parameter_<T>::Type
-SEQAN_HOST_DEVICE inline _toParameter(T * _object)
+inline _toParameter(T * _object)
 {
     return * _object;
 }
 
 template <typename T>
 typename Parameter_<T>::Type
-SEQAN_HOST_DEVICE inline _toParameter(T & _object)
+inline _toParameter(T & _object)
 {
     return _object;
 }
 
 template <typename T>
 typename Parameter_<T const>::Type
-SEQAN_HOST_DEVICE inline _toParameter(T const & _object)
+inline _toParameter(T const & _object)
 {
     return _object;
 }
@@ -433,20 +433,20 @@ struct NonConstPointer_<T * const>
 // TODO(holtgrew): Really required?
 
 template <typename T>
-SEQAN_HOST_DEVICE inline typename NonConstPointer_<T>::Type
+inline typename NonConstPointer_<T>::Type
 _toPointer(T & _object)
 {
     return & _object;
 }
 template <typename T>
-SEQAN_HOST_DEVICE inline typename NonConstPointer_<T const>::Type
+inline typename NonConstPointer_<T const>::Type
 _toPointer(T const & _object)
 {
     return & _object;
 }
 
 template <typename T>
-SEQAN_HOST_DEVICE inline typename NonConstPointer_<T *>::Type
+inline typename NonConstPointer_<T *>::Type
 _toPointer(T * _object)
 {
     return _object;
diff --git a/include/seqan/basic/boost_preprocessor_subset.h b/include/seqan/basic/boost_preprocessor_subset.h
index 803bdef..634568a 100644
--- a/include/seqan/basic/boost_preprocessor_subset.h
+++ b/include/seqan/basic/boost_preprocessor_subset.h
@@ -150,12 +150,12 @@
 #
 // # if SEQAN_PP_CONFIG_FLAGS() & SEQAN_PP_CONFIG_MWCC()
 // #    define SEQAN_PP_TUPLE_ELEM_I(s, i, t) SEQAN_PP_TUPLE_ELEM_ ## s ## _ ## i ## t
-#ifdef PLATFORM_WINDOWS_VS  // # elif SEQAN_PP_CONFIG_FLAGS() & SEQAN_PP_CONFIG_MSVC()
+#ifdef STDLIB_VS  // # elif SEQAN_PP_CONFIG_FLAGS() & SEQAN_PP_CONFIG_MSVC()
 #    define SEQAN_PP_TUPLE_ELEM_I(s, i, t) SEQAN_PP_TUPLE_ELEM_II(SEQAN_PP_TUPLE_ELEM_ ## s ## _ ## i t)
 #    define SEQAN_PP_TUPLE_ELEM_II(res) res
-#else  // #ifdef PLATFORM_WINDOWS_VS
+#else  // #ifdef STDLIB_VS
 #    define SEQAN_PP_TUPLE_ELEM_I(s, i, t) SEQAN_PP_TUPLE_ELEM_ ## s ## _ ## i t
-#endif  // #ifdef PLATFORM_WINDOWS_VS
+#endif  // #ifdef STDLIB_VS
 #
 # define SEQAN_PP_TUPLE_ELEM_1_0(a) a
 #
@@ -533,15 +533,15 @@
 // #    define SEQAN_PP_SEQ_SIZE_I(par) SEQAN_PP_SEQ_SIZE_II ## par
 // #    define SEQAN_PP_SEQ_SIZE_II(seq) SEQAN_PP_CAT(SEQAN_PP_SEQ_SIZE_, SEQAN_PP_SEQ_SIZE_0 ## seq)
 // # elif SEQAN_PP_CONFIG_FLAGS() & SEQAN_PP_CONFIG_EDG() || SEQAN_PP_CONFIG_FLAGS() & SEQAN_PP_CONFIG_MSVC()
-#ifdef PLATFORM_WINDOWS_VS
+#ifdef STDLIB_VS
 #    define SEQAN_PP_SEQ_SIZE(seq) SEQAN_PP_SEQ_SIZE_I(seq)
 #    define SEQAN_PP_SEQ_SIZE_I(seq) SEQAN_PP_CAT(SEQAN_PP_SEQ_SIZE_, SEQAN_PP_SEQ_SIZE_0 seq)
-#else  // #ifdef PLATFORM_WINDOWS_VS
+#else  // #ifdef STDLIB_VS
 // # elif defined(__IBMC__) || defined(__IBMCPP__)
 // #    define SEQAN_PP_SEQ_SIZE(seq) SEQAN_PP_CAT(SEQAN_PP_SEQ_SIZE_, SEQAN_PP_CAT(SEQAN_PP_SEQ_SIZE_0, seq))
 // # else
 #    define SEQAN_PP_SEQ_SIZE(seq) SEQAN_PP_CAT(SEQAN_PP_SEQ_SIZE_, SEQAN_PP_SEQ_SIZE_0 seq)
-#endif  // #ifdef PLATFORM_WINDOWS_VS
+#endif  // #ifdef STDLIB_VS
 
 # define SEQAN_PP_SEQ_SIZE_0(_) SEQAN_PP_SEQ_SIZE_1
 # define SEQAN_PP_SEQ_SIZE_1(_) SEQAN_PP_SEQ_SIZE_2
@@ -1091,12 +1091,12 @@
 // # endif
 #
 // # if ~SEQAN_PP_CONFIG_FLAGS() & SEQAN_PP_CONFIG_MSVC()
-#ifndef PLATFORM_WINDOWS_VS
+#ifndef STDLIB_VS
 #    define SEQAN_PP_CAT_I(a, b) a ## b
-#else  // #ifndef PLATFORM_WINDOWS_VS
+#else  // #ifndef STDLIB_VS
 #    define SEQAN_PP_CAT_I(a, b) SEQAN_PP_CAT_II(a ## b)
 #    define SEQAN_PP_CAT_II(res) res
-#endif  // #ifndef PLATFORM_WINDOWS_VS
+#endif  // #ifndef STDLIB_VS
 #
 // # endif
 
@@ -1455,292 +1455,6 @@
 #
 // # endif
 
-#ifdef SEQAN_PLATFORM_WINDOWS_VS
-
-// --------------------------------------------------------------------------
-// ==> boost/preprocessor/repetition/detail/msvc/for.hpp <==
-// --------------------------------------------------------------------------
-
-# /* Copyright (C) 2001
-#  * Housemarque Oy
-#  * http://www.housemarque.com
-#  *
-#  * Distributed under the Boost Software License, Version 1.0. (See
-#  * accompanying file LICENSE_1_0.txt or copy at
-#  * http://www.boost.org/LICENSE_1_0.txt)
-#  */
-#
-# /* Revised by Paul Mensonides (2002) */
-#
-# /* See http://www.boost.org for most recent version. */
-#
-// # ifndef SEQAN_PREPROCESSOR_REPETITION_DETAIL_MSVC_FOR_HPP
-// # define SEQAN_PREPROCESSOR_REPETITION_DETAIL_MSVC_FOR_HPP
-#
-// # include <boost/preprocessor/control/if.hpp>
-// # include <boost/preprocessor/tuple/eat.hpp>
-#
-# define SEQAN_PP_FOR_1(s, p, o, m) SEQAN_PP_IF(p(2, s), m, SEQAN_PP_TUPLE_EAT_2)(2, s) SEQAN_PP_IF(p(2, s), SEQAN_PP_FOR_2, SEQAN_PP_TUPLE_EAT_4)(o(2, s), p, o, m)
-# define SEQAN_PP_FOR_2(s, p, o, m) SEQAN_PP_IF(p(3, s), m, SEQAN_PP_TUPLE_EAT_2)(3, s) SEQAN_PP_IF(p(3, s), SEQAN_PP_FOR_3, SEQAN_PP_TUPLE_EAT_4)(o(3, s), p, o, m)
-# define SEQAN_PP_FOR_3(s, p, o, m) SEQAN_PP_IF(p(4, s), m, SEQAN_PP_TUPLE_EAT_2)(4, s) SEQAN_PP_IF(p(4, s), SEQAN_PP_FOR_4, SEQAN_PP_TUPLE_EAT_4)(o(4, s), p, o, m)
-# define SEQAN_PP_FOR_4(s, p, o, m) SEQAN_PP_IF(p(5, s), m, SEQAN_PP_TUPLE_EAT_2)(5, s) SEQAN_PP_IF(p(5, s), SEQAN_PP_FOR_5, SEQAN_PP_TUPLE_EAT_4)(o(5, s), p, o, m)
-# define SEQAN_PP_FOR_5(s, p, o, m) SEQAN_PP_IF(p(6, s), m, SEQAN_PP_TUPLE_EAT_2)(6, s) SEQAN_PP_IF(p(6, s), SEQAN_PP_FOR_6, SEQAN_PP_TUPLE_EAT_4)(o(6, s), p, o, m)
-# define SEQAN_PP_FOR_6(s, p, o, m) SEQAN_PP_IF(p(7, s), m, SEQAN_PP_TUPLE_EAT_2)(7, s) SEQAN_PP_IF(p(7, s), SEQAN_PP_FOR_7, SEQAN_PP_TUPLE_EAT_4)(o(7, s), p, o, m)
-# define SEQAN_PP_FOR_7(s, p, o, m) SEQAN_PP_IF(p(8, s), m, SEQAN_PP_TUPLE_EAT_2)(8, s) SEQAN_PP_IF(p(8, s), SEQAN_PP_FOR_8, SEQAN_PP_TUPLE_EAT_4)(o(8, s), p, o, m)
-# define SEQAN_PP_FOR_8(s, p, o, m) SEQAN_PP_IF(p(9, s), m, SEQAN_PP_TUPLE_EAT_2)(9, s) SEQAN_PP_IF(p(9, s), SEQAN_PP_FOR_9, SEQAN_PP_TUPLE_EAT_4)(o(9, s), p, o, m)
-# define SEQAN_PP_FOR_9(s, p, o, m) SEQAN_PP_IF(p(10, s), m, SEQAN_PP_TUPLE_EAT_2)(10, s) SEQAN_PP_IF(p(10, s), SEQAN_PP_FOR_10, SEQAN_PP_TUPLE_EAT_4)(o(10, s), p, o, m)
-# define SEQAN_PP_FOR_10(s, p, o, m) SEQAN_PP_IF(p(11, s), m, SEQAN_PP_TUPLE_EAT_2)(11, s) SEQAN_PP_IF(p(11, s), SEQAN_PP_FOR_11, SEQAN_PP_TUPLE_EAT_4)(o(11, s), p, o, m)
-# define SEQAN_PP_FOR_11(s, p, o, m) SEQAN_PP_IF(p(12, s), m, SEQAN_PP_TUPLE_EAT_2)(12, s) SEQAN_PP_IF(p(12, s), SEQAN_PP_FOR_12, SEQAN_PP_TUPLE_EAT_4)(o(12, s), p, o, m)
-# define SEQAN_PP_FOR_12(s, p, o, m) SEQAN_PP_IF(p(13, s), m, SEQAN_PP_TUPLE_EAT_2)(13, s) SEQAN_PP_IF(p(13, s), SEQAN_PP_FOR_13, SEQAN_PP_TUPLE_EAT_4)(o(13, s), p, o, m)
-# define SEQAN_PP_FOR_13(s, p, o, m) SEQAN_PP_IF(p(14, s), m, SEQAN_PP_TUPLE_EAT_2)(14, s) SEQAN_PP_IF(p(14, s), SEQAN_PP_FOR_14, SEQAN_PP_TUPLE_EAT_4)(o(14, s), p, o, m)
-# define SEQAN_PP_FOR_14(s, p, o, m) SEQAN_PP_IF(p(15, s), m, SEQAN_PP_TUPLE_EAT_2)(15, s) SEQAN_PP_IF(p(15, s), SEQAN_PP_FOR_15, SEQAN_PP_TUPLE_EAT_4)(o(15, s), p, o, m)
-# define SEQAN_PP_FOR_15(s, p, o, m) SEQAN_PP_IF(p(16, s), m, SEQAN_PP_TUPLE_EAT_2)(16, s) SEQAN_PP_IF(p(16, s), SEQAN_PP_FOR_16, SEQAN_PP_TUPLE_EAT_4)(o(16, s), p, o, m)
-# define SEQAN_PP_FOR_16(s, p, o, m) SEQAN_PP_IF(p(17, s), m, SEQAN_PP_TUPLE_EAT_2)(17, s) SEQAN_PP_IF(p(17, s), SEQAN_PP_FOR_17, SEQAN_PP_TUPLE_EAT_4)(o(17, s), p, o, m)
-# define SEQAN_PP_FOR_17(s, p, o, m) SEQAN_PP_IF(p(18, s), m, SEQAN_PP_TUPLE_EAT_2)(18, s) SEQAN_PP_IF(p(18, s), SEQAN_PP_FOR_18, SEQAN_PP_TUPLE_EAT_4)(o(18, s), p, o, m)
-# define SEQAN_PP_FOR_18(s, p, o, m) SEQAN_PP_IF(p(19, s), m, SEQAN_PP_TUPLE_EAT_2)(19, s) SEQAN_PP_IF(p(19, s), SEQAN_PP_FOR_19, SEQAN_PP_TUPLE_EAT_4)(o(19, s), p, o, m)
-# define SEQAN_PP_FOR_19(s, p, o, m) SEQAN_PP_IF(p(20, s), m, SEQAN_PP_TUPLE_EAT_2)(20, s) SEQAN_PP_IF(p(20, s), SEQAN_PP_FOR_20, SEQAN_PP_TUPLE_EAT_4)(o(20, s), p, o, m)
-# define SEQAN_PP_FOR_20(s, p, o, m) SEQAN_PP_IF(p(21, s), m, SEQAN_PP_TUPLE_EAT_2)(21, s) SEQAN_PP_IF(p(21, s), SEQAN_PP_FOR_21, SEQAN_PP_TUPLE_EAT_4)(o(21, s), p, o, m)
-# define SEQAN_PP_FOR_21(s, p, o, m) SEQAN_PP_IF(p(22, s), m, SEQAN_PP_TUPLE_EAT_2)(22, s) SEQAN_PP_IF(p(22, s), SEQAN_PP_FOR_22, SEQAN_PP_TUPLE_EAT_4)(o(22, s), p, o, m)
-# define SEQAN_PP_FOR_22(s, p, o, m) SEQAN_PP_IF(p(23, s), m, SEQAN_PP_TUPLE_EAT_2)(23, s) SEQAN_PP_IF(p(23, s), SEQAN_PP_FOR_23, SEQAN_PP_TUPLE_EAT_4)(o(23, s), p, o, m)
-# define SEQAN_PP_FOR_23(s, p, o, m) SEQAN_PP_IF(p(24, s), m, SEQAN_PP_TUPLE_EAT_2)(24, s) SEQAN_PP_IF(p(24, s), SEQAN_PP_FOR_24, SEQAN_PP_TUPLE_EAT_4)(o(24, s), p, o, m)
-# define SEQAN_PP_FOR_24(s, p, o, m) SEQAN_PP_IF(p(25, s), m, SEQAN_PP_TUPLE_EAT_2)(25, s) SEQAN_PP_IF(p(25, s), SEQAN_PP_FOR_25, SEQAN_PP_TUPLE_EAT_4)(o(25, s), p, o, m)
-# define SEQAN_PP_FOR_25(s, p, o, m) SEQAN_PP_IF(p(26, s), m, SEQAN_PP_TUPLE_EAT_2)(26, s) SEQAN_PP_IF(p(26, s), SEQAN_PP_FOR_26, SEQAN_PP_TUPLE_EAT_4)(o(26, s), p, o, m)
-# define SEQAN_PP_FOR_26(s, p, o, m) SEQAN_PP_IF(p(27, s), m, SEQAN_PP_TUPLE_EAT_2)(27, s) SEQAN_PP_IF(p(27, s), SEQAN_PP_FOR_27, SEQAN_PP_TUPLE_EAT_4)(o(27, s), p, o, m)
-# define SEQAN_PP_FOR_27(s, p, o, m) SEQAN_PP_IF(p(28, s), m, SEQAN_PP_TUPLE_EAT_2)(28, s) SEQAN_PP_IF(p(28, s), SEQAN_PP_FOR_28, SEQAN_PP_TUPLE_EAT_4)(o(28, s), p, o, m)
-# define SEQAN_PP_FOR_28(s, p, o, m) SEQAN_PP_IF(p(29, s), m, SEQAN_PP_TUPLE_EAT_2)(29, s) SEQAN_PP_IF(p(29, s), SEQAN_PP_FOR_29, SEQAN_PP_TUPLE_EAT_4)(o(29, s), p, o, m)
-# define SEQAN_PP_FOR_29(s, p, o, m) SEQAN_PP_IF(p(30, s), m, SEQAN_PP_TUPLE_EAT_2)(30, s) SEQAN_PP_IF(p(30, s), SEQAN_PP_FOR_30, SEQAN_PP_TUPLE_EAT_4)(o(30, s), p, o, m)
-# define SEQAN_PP_FOR_30(s, p, o, m) SEQAN_PP_IF(p(31, s), m, SEQAN_PP_TUPLE_EAT_2)(31, s) SEQAN_PP_IF(p(31, s), SEQAN_PP_FOR_31, SEQAN_PP_TUPLE_EAT_4)(o(31, s), p, o, m)
-# define SEQAN_PP_FOR_31(s, p, o, m) SEQAN_PP_IF(p(32, s), m, SEQAN_PP_TUPLE_EAT_2)(32, s) SEQAN_PP_IF(p(32, s), SEQAN_PP_FOR_32, SEQAN_PP_TUPLE_EAT_4)(o(32, s), p, o, m)
-# define SEQAN_PP_FOR_32(s, p, o, m) SEQAN_PP_IF(p(33, s), m, SEQAN_PP_TUPLE_EAT_2)(33, s) SEQAN_PP_IF(p(33, s), SEQAN_PP_FOR_33, SEQAN_PP_TUPLE_EAT_4)(o(33, s), p, o, m)
-# define SEQAN_PP_FOR_33(s, p, o, m) SEQAN_PP_IF(p(34, s), m, SEQAN_PP_TUPLE_EAT_2)(34, s) SEQAN_PP_IF(p(34, s), SEQAN_PP_FOR_34, SEQAN_PP_TUPLE_EAT_4)(o(34, s), p, o, m)
-# define SEQAN_PP_FOR_34(s, p, o, m) SEQAN_PP_IF(p(35, s), m, SEQAN_PP_TUPLE_EAT_2)(35, s) SEQAN_PP_IF(p(35, s), SEQAN_PP_FOR_35, SEQAN_PP_TUPLE_EAT_4)(o(35, s), p, o, m)
-# define SEQAN_PP_FOR_35(s, p, o, m) SEQAN_PP_IF(p(36, s), m, SEQAN_PP_TUPLE_EAT_2)(36, s) SEQAN_PP_IF(p(36, s), SEQAN_PP_FOR_36, SEQAN_PP_TUPLE_EAT_4)(o(36, s), p, o, m)
-# define SEQAN_PP_FOR_36(s, p, o, m) SEQAN_PP_IF(p(37, s), m, SEQAN_PP_TUPLE_EAT_2)(37, s) SEQAN_PP_IF(p(37, s), SEQAN_PP_FOR_37, SEQAN_PP_TUPLE_EAT_4)(o(37, s), p, o, m)
-# define SEQAN_PP_FOR_37(s, p, o, m) SEQAN_PP_IF(p(38, s), m, SEQAN_PP_TUPLE_EAT_2)(38, s) SEQAN_PP_IF(p(38, s), SEQAN_PP_FOR_38, SEQAN_PP_TUPLE_EAT_4)(o(38, s), p, o, m)
-# define SEQAN_PP_FOR_38(s, p, o, m) SEQAN_PP_IF(p(39, s), m, SEQAN_PP_TUPLE_EAT_2)(39, s) SEQAN_PP_IF(p(39, s), SEQAN_PP_FOR_39, SEQAN_PP_TUPLE_EAT_4)(o(39, s), p, o, m)
-# define SEQAN_PP_FOR_39(s, p, o, m) SEQAN_PP_IF(p(40, s), m, SEQAN_PP_TUPLE_EAT_2)(40, s) SEQAN_PP_IF(p(40, s), SEQAN_PP_FOR_40, SEQAN_PP_TUPLE_EAT_4)(o(40, s), p, o, m)
-# define SEQAN_PP_FOR_40(s, p, o, m) SEQAN_PP_IF(p(41, s), m, SEQAN_PP_TUPLE_EAT_2)(41, s) SEQAN_PP_IF(p(41, s), SEQAN_PP_FOR_41, SEQAN_PP_TUPLE_EAT_4)(o(41, s), p, o, m)
-# define SEQAN_PP_FOR_41(s, p, o, m) SEQAN_PP_IF(p(42, s), m, SEQAN_PP_TUPLE_EAT_2)(42, s) SEQAN_PP_IF(p(42, s), SEQAN_PP_FOR_42, SEQAN_PP_TUPLE_EAT_4)(o(42, s), p, o, m)
-# define SEQAN_PP_FOR_42(s, p, o, m) SEQAN_PP_IF(p(43, s), m, SEQAN_PP_TUPLE_EAT_2)(43, s) SEQAN_PP_IF(p(43, s), SEQAN_PP_FOR_43, SEQAN_PP_TUPLE_EAT_4)(o(43, s), p, o, m)
-# define SEQAN_PP_FOR_43(s, p, o, m) SEQAN_PP_IF(p(44, s), m, SEQAN_PP_TUPLE_EAT_2)(44, s) SEQAN_PP_IF(p(44, s), SEQAN_PP_FOR_44, SEQAN_PP_TUPLE_EAT_4)(o(44, s), p, o, m)
-# define SEQAN_PP_FOR_44(s, p, o, m) SEQAN_PP_IF(p(45, s), m, SEQAN_PP_TUPLE_EAT_2)(45, s) SEQAN_PP_IF(p(45, s), SEQAN_PP_FOR_45, SEQAN_PP_TUPLE_EAT_4)(o(45, s), p, o, m)
-# define SEQAN_PP_FOR_45(s, p, o, m) SEQAN_PP_IF(p(46, s), m, SEQAN_PP_TUPLE_EAT_2)(46, s) SEQAN_PP_IF(p(46, s), SEQAN_PP_FOR_46, SEQAN_PP_TUPLE_EAT_4)(o(46, s), p, o, m)
-# define SEQAN_PP_FOR_46(s, p, o, m) SEQAN_PP_IF(p(47, s), m, SEQAN_PP_TUPLE_EAT_2)(47, s) SEQAN_PP_IF(p(47, s), SEQAN_PP_FOR_47, SEQAN_PP_TUPLE_EAT_4)(o(47, s), p, o, m)
-# define SEQAN_PP_FOR_47(s, p, o, m) SEQAN_PP_IF(p(48, s), m, SEQAN_PP_TUPLE_EAT_2)(48, s) SEQAN_PP_IF(p(48, s), SEQAN_PP_FOR_48, SEQAN_PP_TUPLE_EAT_4)(o(48, s), p, o, m)
-# define SEQAN_PP_FOR_48(s, p, o, m) SEQAN_PP_IF(p(49, s), m, SEQAN_PP_TUPLE_EAT_2)(49, s) SEQAN_PP_IF(p(49, s), SEQAN_PP_FOR_49, SEQAN_PP_TUPLE_EAT_4)(o(49, s), p, o, m)
-# define SEQAN_PP_FOR_49(s, p, o, m) SEQAN_PP_IF(p(50, s), m, SEQAN_PP_TUPLE_EAT_2)(50, s) SEQAN_PP_IF(p(50, s), SEQAN_PP_FOR_50, SEQAN_PP_TUPLE_EAT_4)(o(50, s), p, o, m)
-# define SEQAN_PP_FOR_50(s, p, o, m) SEQAN_PP_IF(p(51, s), m, SEQAN_PP_TUPLE_EAT_2)(51, s) SEQAN_PP_IF(p(51, s), SEQAN_PP_FOR_51, SEQAN_PP_TUPLE_EAT_4)(o(51, s), p, o, m)
-# define SEQAN_PP_FOR_51(s, p, o, m) SEQAN_PP_IF(p(52, s), m, SEQAN_PP_TUPLE_EAT_2)(52, s) SEQAN_PP_IF(p(52, s), SEQAN_PP_FOR_52, SEQAN_PP_TUPLE_EAT_4)(o(52, s), p, o, m)
-# define SEQAN_PP_FOR_52(s, p, o, m) SEQAN_PP_IF(p(53, s), m, SEQAN_PP_TUPLE_EAT_2)(53, s) SEQAN_PP_IF(p(53, s), SEQAN_PP_FOR_53, SEQAN_PP_TUPLE_EAT_4)(o(53, s), p, o, m)
-# define SEQAN_PP_FOR_53(s, p, o, m) SEQAN_PP_IF(p(54, s), m, SEQAN_PP_TUPLE_EAT_2)(54, s) SEQAN_PP_IF(p(54, s), SEQAN_PP_FOR_54, SEQAN_PP_TUPLE_EAT_4)(o(54, s), p, o, m)
-# define SEQAN_PP_FOR_54(s, p, o, m) SEQAN_PP_IF(p(55, s), m, SEQAN_PP_TUPLE_EAT_2)(55, s) SEQAN_PP_IF(p(55, s), SEQAN_PP_FOR_55, SEQAN_PP_TUPLE_EAT_4)(o(55, s), p, o, m)
-# define SEQAN_PP_FOR_55(s, p, o, m) SEQAN_PP_IF(p(56, s), m, SEQAN_PP_TUPLE_EAT_2)(56, s) SEQAN_PP_IF(p(56, s), SEQAN_PP_FOR_56, SEQAN_PP_TUPLE_EAT_4)(o(56, s), p, o, m)
-# define SEQAN_PP_FOR_56(s, p, o, m) SEQAN_PP_IF(p(57, s), m, SEQAN_PP_TUPLE_EAT_2)(57, s) SEQAN_PP_IF(p(57, s), SEQAN_PP_FOR_57, SEQAN_PP_TUPLE_EAT_4)(o(57, s), p, o, m)
-# define SEQAN_PP_FOR_57(s, p, o, m) SEQAN_PP_IF(p(58, s), m, SEQAN_PP_TUPLE_EAT_2)(58, s) SEQAN_PP_IF(p(58, s), SEQAN_PP_FOR_58, SEQAN_PP_TUPLE_EAT_4)(o(58, s), p, o, m)
-# define SEQAN_PP_FOR_58(s, p, o, m) SEQAN_PP_IF(p(59, s), m, SEQAN_PP_TUPLE_EAT_2)(59, s) SEQAN_PP_IF(p(59, s), SEQAN_PP_FOR_59, SEQAN_PP_TUPLE_EAT_4)(o(59, s), p, o, m)
-# define SEQAN_PP_FOR_59(s, p, o, m) SEQAN_PP_IF(p(60, s), m, SEQAN_PP_TUPLE_EAT_2)(60, s) SEQAN_PP_IF(p(60, s), SEQAN_PP_FOR_60, SEQAN_PP_TUPLE_EAT_4)(o(60, s), p, o, m)
-# define SEQAN_PP_FOR_60(s, p, o, m) SEQAN_PP_IF(p(61, s), m, SEQAN_PP_TUPLE_EAT_2)(61, s) SEQAN_PP_IF(p(61, s), SEQAN_PP_FOR_61, SEQAN_PP_TUPLE_EAT_4)(o(61, s), p, o, m)
-# define SEQAN_PP_FOR_61(s, p, o, m) SEQAN_PP_IF(p(62, s), m, SEQAN_PP_TUPLE_EAT_2)(62, s) SEQAN_PP_IF(p(62, s), SEQAN_PP_FOR_62, SEQAN_PP_TUPLE_EAT_4)(o(62, s), p, o, m)
-# define SEQAN_PP_FOR_62(s, p, o, m) SEQAN_PP_IF(p(63, s), m, SEQAN_PP_TUPLE_EAT_2)(63, s) SEQAN_PP_IF(p(63, s), SEQAN_PP_FOR_63, SEQAN_PP_TUPLE_EAT_4)(o(63, s), p, o, m)
-# define SEQAN_PP_FOR_63(s, p, o, m) SEQAN_PP_IF(p(64, s), m, SEQAN_PP_TUPLE_EAT_2)(64, s) SEQAN_PP_IF(p(64, s), SEQAN_PP_FOR_64, SEQAN_PP_TUPLE_EAT_4)(o(64, s), p, o, m)
-# define SEQAN_PP_FOR_64(s, p, o, m) SEQAN_PP_IF(p(65, s), m, SEQAN_PP_TUPLE_EAT_2)(65, s) SEQAN_PP_IF(p(65, s), SEQAN_PP_FOR_65, SEQAN_PP_TUPLE_EAT_4)(o(65, s), p, o, m)
-# define SEQAN_PP_FOR_65(s, p, o, m) SEQAN_PP_IF(p(66, s), m, SEQAN_PP_TUPLE_EAT_2)(66, s) SEQAN_PP_IF(p(66, s), SEQAN_PP_FOR_66, SEQAN_PP_TUPLE_EAT_4)(o(66, s), p, o, m)
-# define SEQAN_PP_FOR_66(s, p, o, m) SEQAN_PP_IF(p(67, s), m, SEQAN_PP_TUPLE_EAT_2)(67, s) SEQAN_PP_IF(p(67, s), SEQAN_PP_FOR_67, SEQAN_PP_TUPLE_EAT_4)(o(67, s), p, o, m)
-# define SEQAN_PP_FOR_67(s, p, o, m) SEQAN_PP_IF(p(68, s), m, SEQAN_PP_TUPLE_EAT_2)(68, s) SEQAN_PP_IF(p(68, s), SEQAN_PP_FOR_68, SEQAN_PP_TUPLE_EAT_4)(o(68, s), p, o, m)
-# define SEQAN_PP_FOR_68(s, p, o, m) SEQAN_PP_IF(p(69, s), m, SEQAN_PP_TUPLE_EAT_2)(69, s) SEQAN_PP_IF(p(69, s), SEQAN_PP_FOR_69, SEQAN_PP_TUPLE_EAT_4)(o(69, s), p, o, m)
-# define SEQAN_PP_FOR_69(s, p, o, m) SEQAN_PP_IF(p(70, s), m, SEQAN_PP_TUPLE_EAT_2)(70, s) SEQAN_PP_IF(p(70, s), SEQAN_PP_FOR_70, SEQAN_PP_TUPLE_EAT_4)(o(70, s), p, o, m)
-# define SEQAN_PP_FOR_70(s, p, o, m) SEQAN_PP_IF(p(71, s), m, SEQAN_PP_TUPLE_EAT_2)(71, s) SEQAN_PP_IF(p(71, s), SEQAN_PP_FOR_71, SEQAN_PP_TUPLE_EAT_4)(o(71, s), p, o, m)
-# define SEQAN_PP_FOR_71(s, p, o, m) SEQAN_PP_IF(p(72, s), m, SEQAN_PP_TUPLE_EAT_2)(72, s) SEQAN_PP_IF(p(72, s), SEQAN_PP_FOR_72, SEQAN_PP_TUPLE_EAT_4)(o(72, s), p, o, m)
-# define SEQAN_PP_FOR_72(s, p, o, m) SEQAN_PP_IF(p(73, s), m, SEQAN_PP_TUPLE_EAT_2)(73, s) SEQAN_PP_IF(p(73, s), SEQAN_PP_FOR_73, SEQAN_PP_TUPLE_EAT_4)(o(73, s), p, o, m)
-# define SEQAN_PP_FOR_73(s, p, o, m) SEQAN_PP_IF(p(74, s), m, SEQAN_PP_TUPLE_EAT_2)(74, s) SEQAN_PP_IF(p(74, s), SEQAN_PP_FOR_74, SEQAN_PP_TUPLE_EAT_4)(o(74, s), p, o, m)
-# define SEQAN_PP_FOR_74(s, p, o, m) SEQAN_PP_IF(p(75, s), m, SEQAN_PP_TUPLE_EAT_2)(75, s) SEQAN_PP_IF(p(75, s), SEQAN_PP_FOR_75, SEQAN_PP_TUPLE_EAT_4)(o(75, s), p, o, m)
-# define SEQAN_PP_FOR_75(s, p, o, m) SEQAN_PP_IF(p(76, s), m, SEQAN_PP_TUPLE_EAT_2)(76, s) SEQAN_PP_IF(p(76, s), SEQAN_PP_FOR_76, SEQAN_PP_TUPLE_EAT_4)(o(76, s), p, o, m)
-# define SEQAN_PP_FOR_76(s, p, o, m) SEQAN_PP_IF(p(77, s), m, SEQAN_PP_TUPLE_EAT_2)(77, s) SEQAN_PP_IF(p(77, s), SEQAN_PP_FOR_77, SEQAN_PP_TUPLE_EAT_4)(o(77, s), p, o, m)
-# define SEQAN_PP_FOR_77(s, p, o, m) SEQAN_PP_IF(p(78, s), m, SEQAN_PP_TUPLE_EAT_2)(78, s) SEQAN_PP_IF(p(78, s), SEQAN_PP_FOR_78, SEQAN_PP_TUPLE_EAT_4)(o(78, s), p, o, m)
-# define SEQAN_PP_FOR_78(s, p, o, m) SEQAN_PP_IF(p(79, s), m, SEQAN_PP_TUPLE_EAT_2)(79, s) SEQAN_PP_IF(p(79, s), SEQAN_PP_FOR_79, SEQAN_PP_TUPLE_EAT_4)(o(79, s), p, o, m)
-# define SEQAN_PP_FOR_79(s, p, o, m) SEQAN_PP_IF(p(80, s), m, SEQAN_PP_TUPLE_EAT_2)(80, s) SEQAN_PP_IF(p(80, s), SEQAN_PP_FOR_80, SEQAN_PP_TUPLE_EAT_4)(o(80, s), p, o, m)
-# define SEQAN_PP_FOR_80(s, p, o, m) SEQAN_PP_IF(p(81, s), m, SEQAN_PP_TUPLE_EAT_2)(81, s) SEQAN_PP_IF(p(81, s), SEQAN_PP_FOR_81, SEQAN_PP_TUPLE_EAT_4)(o(81, s), p, o, m)
-# define SEQAN_PP_FOR_81(s, p, o, m) SEQAN_PP_IF(p(82, s), m, SEQAN_PP_TUPLE_EAT_2)(82, s) SEQAN_PP_IF(p(82, s), SEQAN_PP_FOR_82, SEQAN_PP_TUPLE_EAT_4)(o(82, s), p, o, m)
-# define SEQAN_PP_FOR_82(s, p, o, m) SEQAN_PP_IF(p(83, s), m, SEQAN_PP_TUPLE_EAT_2)(83, s) SEQAN_PP_IF(p(83, s), SEQAN_PP_FOR_83, SEQAN_PP_TUPLE_EAT_4)(o(83, s), p, o, m)
-# define SEQAN_PP_FOR_83(s, p, o, m) SEQAN_PP_IF(p(84, s), m, SEQAN_PP_TUPLE_EAT_2)(84, s) SEQAN_PP_IF(p(84, s), SEQAN_PP_FOR_84, SEQAN_PP_TUPLE_EAT_4)(o(84, s), p, o, m)
-# define SEQAN_PP_FOR_84(s, p, o, m) SEQAN_PP_IF(p(85, s), m, SEQAN_PP_TUPLE_EAT_2)(85, s) SEQAN_PP_IF(p(85, s), SEQAN_PP_FOR_85, SEQAN_PP_TUPLE_EAT_4)(o(85, s), p, o, m)
-# define SEQAN_PP_FOR_85(s, p, o, m) SEQAN_PP_IF(p(86, s), m, SEQAN_PP_TUPLE_EAT_2)(86, s) SEQAN_PP_IF(p(86, s), SEQAN_PP_FOR_86, SEQAN_PP_TUPLE_EAT_4)(o(86, s), p, o, m)
-# define SEQAN_PP_FOR_86(s, p, o, m) SEQAN_PP_IF(p(87, s), m, SEQAN_PP_TUPLE_EAT_2)(87, s) SEQAN_PP_IF(p(87, s), SEQAN_PP_FOR_87, SEQAN_PP_TUPLE_EAT_4)(o(87, s), p, o, m)
-# define SEQAN_PP_FOR_87(s, p, o, m) SEQAN_PP_IF(p(88, s), m, SEQAN_PP_TUPLE_EAT_2)(88, s) SEQAN_PP_IF(p(88, s), SEQAN_PP_FOR_88, SEQAN_PP_TUPLE_EAT_4)(o(88, s), p, o, m)
-# define SEQAN_PP_FOR_88(s, p, o, m) SEQAN_PP_IF(p(89, s), m, SEQAN_PP_TUPLE_EAT_2)(89, s) SEQAN_PP_IF(p(89, s), SEQAN_PP_FOR_89, SEQAN_PP_TUPLE_EAT_4)(o(89, s), p, o, m)
-# define SEQAN_PP_FOR_89(s, p, o, m) SEQAN_PP_IF(p(90, s), m, SEQAN_PP_TUPLE_EAT_2)(90, s) SEQAN_PP_IF(p(90, s), SEQAN_PP_FOR_90, SEQAN_PP_TUPLE_EAT_4)(o(90, s), p, o, m)
-# define SEQAN_PP_FOR_90(s, p, o, m) SEQAN_PP_IF(p(91, s), m, SEQAN_PP_TUPLE_EAT_2)(91, s) SEQAN_PP_IF(p(91, s), SEQAN_PP_FOR_91, SEQAN_PP_TUPLE_EAT_4)(o(91, s), p, o, m)
-# define SEQAN_PP_FOR_91(s, p, o, m) SEQAN_PP_IF(p(92, s), m, SEQAN_PP_TUPLE_EAT_2)(92, s) SEQAN_PP_IF(p(92, s), SEQAN_PP_FOR_92, SEQAN_PP_TUPLE_EAT_4)(o(92, s), p, o, m)
-# define SEQAN_PP_FOR_92(s, p, o, m) SEQAN_PP_IF(p(93, s), m, SEQAN_PP_TUPLE_EAT_2)(93, s) SEQAN_PP_IF(p(93, s), SEQAN_PP_FOR_93, SEQAN_PP_TUPLE_EAT_4)(o(93, s), p, o, m)
-# define SEQAN_PP_FOR_93(s, p, o, m) SEQAN_PP_IF(p(94, s), m, SEQAN_PP_TUPLE_EAT_2)(94, s) SEQAN_PP_IF(p(94, s), SEQAN_PP_FOR_94, SEQAN_PP_TUPLE_EAT_4)(o(94, s), p, o, m)
-# define SEQAN_PP_FOR_94(s, p, o, m) SEQAN_PP_IF(p(95, s), m, SEQAN_PP_TUPLE_EAT_2)(95, s) SEQAN_PP_IF(p(95, s), SEQAN_PP_FOR_95, SEQAN_PP_TUPLE_EAT_4)(o(95, s), p, o, m)
-# define SEQAN_PP_FOR_95(s, p, o, m) SEQAN_PP_IF(p(96, s), m, SEQAN_PP_TUPLE_EAT_2)(96, s) SEQAN_PP_IF(p(96, s), SEQAN_PP_FOR_96, SEQAN_PP_TUPLE_EAT_4)(o(96, s), p, o, m)
-# define SEQAN_PP_FOR_96(s, p, o, m) SEQAN_PP_IF(p(97, s), m, SEQAN_PP_TUPLE_EAT_2)(97, s) SEQAN_PP_IF(p(97, s), SEQAN_PP_FOR_97, SEQAN_PP_TUPLE_EAT_4)(o(97, s), p, o, m)
-# define SEQAN_PP_FOR_97(s, p, o, m) SEQAN_PP_IF(p(98, s), m, SEQAN_PP_TUPLE_EAT_2)(98, s) SEQAN_PP_IF(p(98, s), SEQAN_PP_FOR_98, SEQAN_PP_TUPLE_EAT_4)(o(98, s), p, o, m)
-# define SEQAN_PP_FOR_98(s, p, o, m) SEQAN_PP_IF(p(99, s), m, SEQAN_PP_TUPLE_EAT_2)(99, s) SEQAN_PP_IF(p(99, s), SEQAN_PP_FOR_99, SEQAN_PP_TUPLE_EAT_4)(o(99, s), p, o, m)
-# define SEQAN_PP_FOR_99(s, p, o, m) SEQAN_PP_IF(p(100, s), m, SEQAN_PP_TUPLE_EAT_2)(100, s) SEQAN_PP_IF(p(100, s), SEQAN_PP_FOR_100, SEQAN_PP_TUPLE_EAT_4)(o(100, s), p, o, m)
-# define SEQAN_PP_FOR_100(s, p, o, m) SEQAN_PP_IF(p(101, s), m, SEQAN_PP_TUPLE_EAT_2)(101, s) SEQAN_PP_IF(p(101, s), SEQAN_PP_FOR_101, SEQAN_PP_TUPLE_EAT_4)(o(101, s), p, o, m)
-# define SEQAN_PP_FOR_101(s, p, o, m) SEQAN_PP_IF(p(102, s), m, SEQAN_PP_TUPLE_EAT_2)(102, s) SEQAN_PP_IF(p(102, s), SEQAN_PP_FOR_102, SEQAN_PP_TUPLE_EAT_4)(o(102, s), p, o, m)
-# define SEQAN_PP_FOR_102(s, p, o, m) SEQAN_PP_IF(p(103, s), m, SEQAN_PP_TUPLE_EAT_2)(103, s) SEQAN_PP_IF(p(103, s), SEQAN_PP_FOR_103, SEQAN_PP_TUPLE_EAT_4)(o(103, s), p, o, m)
-# define SEQAN_PP_FOR_103(s, p, o, m) SEQAN_PP_IF(p(104, s), m, SEQAN_PP_TUPLE_EAT_2)(104, s) SEQAN_PP_IF(p(104, s), SEQAN_PP_FOR_104, SEQAN_PP_TUPLE_EAT_4)(o(104, s), p, o, m)
-# define SEQAN_PP_FOR_104(s, p, o, m) SEQAN_PP_IF(p(105, s), m, SEQAN_PP_TUPLE_EAT_2)(105, s) SEQAN_PP_IF(p(105, s), SEQAN_PP_FOR_105, SEQAN_PP_TUPLE_EAT_4)(o(105, s), p, o, m)
-# define SEQAN_PP_FOR_105(s, p, o, m) SEQAN_PP_IF(p(106, s), m, SEQAN_PP_TUPLE_EAT_2)(106, s) SEQAN_PP_IF(p(106, s), SEQAN_PP_FOR_106, SEQAN_PP_TUPLE_EAT_4)(o(106, s), p, o, m)
-# define SEQAN_PP_FOR_106(s, p, o, m) SEQAN_PP_IF(p(107, s), m, SEQAN_PP_TUPLE_EAT_2)(107, s) SEQAN_PP_IF(p(107, s), SEQAN_PP_FOR_107, SEQAN_PP_TUPLE_EAT_4)(o(107, s), p, o, m)
-# define SEQAN_PP_FOR_107(s, p, o, m) SEQAN_PP_IF(p(108, s), m, SEQAN_PP_TUPLE_EAT_2)(108, s) SEQAN_PP_IF(p(108, s), SEQAN_PP_FOR_108, SEQAN_PP_TUPLE_EAT_4)(o(108, s), p, o, m)
-# define SEQAN_PP_FOR_108(s, p, o, m) SEQAN_PP_IF(p(109, s), m, SEQAN_PP_TUPLE_EAT_2)(109, s) SEQAN_PP_IF(p(109, s), SEQAN_PP_FOR_109, SEQAN_PP_TUPLE_EAT_4)(o(109, s), p, o, m)
-# define SEQAN_PP_FOR_109(s, p, o, m) SEQAN_PP_IF(p(110, s), m, SEQAN_PP_TUPLE_EAT_2)(110, s) SEQAN_PP_IF(p(110, s), SEQAN_PP_FOR_110, SEQAN_PP_TUPLE_EAT_4)(o(110, s), p, o, m)
-# define SEQAN_PP_FOR_110(s, p, o, m) SEQAN_PP_IF(p(111, s), m, SEQAN_PP_TUPLE_EAT_2)(111, s) SEQAN_PP_IF(p(111, s), SEQAN_PP_FOR_111, SEQAN_PP_TUPLE_EAT_4)(o(111, s), p, o, m)
-# define SEQAN_PP_FOR_111(s, p, o, m) SEQAN_PP_IF(p(112, s), m, SEQAN_PP_TUPLE_EAT_2)(112, s) SEQAN_PP_IF(p(112, s), SEQAN_PP_FOR_112, SEQAN_PP_TUPLE_EAT_4)(o(112, s), p, o, m)
-# define SEQAN_PP_FOR_112(s, p, o, m) SEQAN_PP_IF(p(113, s), m, SEQAN_PP_TUPLE_EAT_2)(113, s) SEQAN_PP_IF(p(113, s), SEQAN_PP_FOR_113, SEQAN_PP_TUPLE_EAT_4)(o(113, s), p, o, m)
-# define SEQAN_PP_FOR_113(s, p, o, m) SEQAN_PP_IF(p(114, s), m, SEQAN_PP_TUPLE_EAT_2)(114, s) SEQAN_PP_IF(p(114, s), SEQAN_PP_FOR_114, SEQAN_PP_TUPLE_EAT_4)(o(114, s), p, o, m)
-# define SEQAN_PP_FOR_114(s, p, o, m) SEQAN_PP_IF(p(115, s), m, SEQAN_PP_TUPLE_EAT_2)(115, s) SEQAN_PP_IF(p(115, s), SEQAN_PP_FOR_115, SEQAN_PP_TUPLE_EAT_4)(o(115, s), p, o, m)
-# define SEQAN_PP_FOR_115(s, p, o, m) SEQAN_PP_IF(p(116, s), m, SEQAN_PP_TUPLE_EAT_2)(116, s) SEQAN_PP_IF(p(116, s), SEQAN_PP_FOR_116, SEQAN_PP_TUPLE_EAT_4)(o(116, s), p, o, m)
-# define SEQAN_PP_FOR_116(s, p, o, m) SEQAN_PP_IF(p(117, s), m, SEQAN_PP_TUPLE_EAT_2)(117, s) SEQAN_PP_IF(p(117, s), SEQAN_PP_FOR_117, SEQAN_PP_TUPLE_EAT_4)(o(117, s), p, o, m)
-# define SEQAN_PP_FOR_117(s, p, o, m) SEQAN_PP_IF(p(118, s), m, SEQAN_PP_TUPLE_EAT_2)(118, s) SEQAN_PP_IF(p(118, s), SEQAN_PP_FOR_118, SEQAN_PP_TUPLE_EAT_4)(o(118, s), p, o, m)
-# define SEQAN_PP_FOR_118(s, p, o, m) SEQAN_PP_IF(p(119, s), m, SEQAN_PP_TUPLE_EAT_2)(119, s) SEQAN_PP_IF(p(119, s), SEQAN_PP_FOR_119, SEQAN_PP_TUPLE_EAT_4)(o(119, s), p, o, m)
-# define SEQAN_PP_FOR_119(s, p, o, m) SEQAN_PP_IF(p(120, s), m, SEQAN_PP_TUPLE_EAT_2)(120, s) SEQAN_PP_IF(p(120, s), SEQAN_PP_FOR_120, SEQAN_PP_TUPLE_EAT_4)(o(120, s), p, o, m)
-# define SEQAN_PP_FOR_120(s, p, o, m) SEQAN_PP_IF(p(121, s), m, SEQAN_PP_TUPLE_EAT_2)(121, s) SEQAN_PP_IF(p(121, s), SEQAN_PP_FOR_121, SEQAN_PP_TUPLE_EAT_4)(o(121, s), p, o, m)
-# define SEQAN_PP_FOR_121(s, p, o, m) SEQAN_PP_IF(p(122, s), m, SEQAN_PP_TUPLE_EAT_2)(122, s) SEQAN_PP_IF(p(122, s), SEQAN_PP_FOR_122, SEQAN_PP_TUPLE_EAT_4)(o(122, s), p, o, m)
-# define SEQAN_PP_FOR_122(s, p, o, m) SEQAN_PP_IF(p(123, s), m, SEQAN_PP_TUPLE_EAT_2)(123, s) SEQAN_PP_IF(p(123, s), SEQAN_PP_FOR_123, SEQAN_PP_TUPLE_EAT_4)(o(123, s), p, o, m)
-# define SEQAN_PP_FOR_123(s, p, o, m) SEQAN_PP_IF(p(124, s), m, SEQAN_PP_TUPLE_EAT_2)(124, s) SEQAN_PP_IF(p(124, s), SEQAN_PP_FOR_124, SEQAN_PP_TUPLE_EAT_4)(o(124, s), p, o, m)
-# define SEQAN_PP_FOR_124(s, p, o, m) SEQAN_PP_IF(p(125, s), m, SEQAN_PP_TUPLE_EAT_2)(125, s) SEQAN_PP_IF(p(125, s), SEQAN_PP_FOR_125, SEQAN_PP_TUPLE_EAT_4)(o(125, s), p, o, m)
-# define SEQAN_PP_FOR_125(s, p, o, m) SEQAN_PP_IF(p(126, s), m, SEQAN_PP_TUPLE_EAT_2)(126, s) SEQAN_PP_IF(p(126, s), SEQAN_PP_FOR_126, SEQAN_PP_TUPLE_EAT_4)(o(126, s), p, o, m)
-# define SEQAN_PP_FOR_126(s, p, o, m) SEQAN_PP_IF(p(127, s), m, SEQAN_PP_TUPLE_EAT_2)(127, s) SEQAN_PP_IF(p(127, s), SEQAN_PP_FOR_127, SEQAN_PP_TUPLE_EAT_4)(o(127, s), p, o, m)
-# define SEQAN_PP_FOR_127(s, p, o, m) SEQAN_PP_IF(p(128, s), m, SEQAN_PP_TUPLE_EAT_2)(128, s) SEQAN_PP_IF(p(128, s), SEQAN_PP_FOR_128, SEQAN_PP_TUPLE_EAT_4)(o(128, s), p, o, m)
-# define SEQAN_PP_FOR_128(s, p, o, m) SEQAN_PP_IF(p(129, s), m, SEQAN_PP_TUPLE_EAT_2)(129, s) SEQAN_PP_IF(p(129, s), SEQAN_PP_FOR_129, SEQAN_PP_TUPLE_EAT_4)(o(129, s), p, o, m)
-# define SEQAN_PP_FOR_129(s, p, o, m) SEQAN_PP_IF(p(130, s), m, SEQAN_PP_TUPLE_EAT_2)(130, s) SEQAN_PP_IF(p(130, s), SEQAN_PP_FOR_130, SEQAN_PP_TUPLE_EAT_4)(o(130, s), p, o, m)
-# define SEQAN_PP_FOR_130(s, p, o, m) SEQAN_PP_IF(p(131, s), m, SEQAN_PP_TUPLE_EAT_2)(131, s) SEQAN_PP_IF(p(131, s), SEQAN_PP_FOR_131, SEQAN_PP_TUPLE_EAT_4)(o(131, s), p, o, m)
-# define SEQAN_PP_FOR_131(s, p, o, m) SEQAN_PP_IF(p(132, s), m, SEQAN_PP_TUPLE_EAT_2)(132, s) SEQAN_PP_IF(p(132, s), SEQAN_PP_FOR_132, SEQAN_PP_TUPLE_EAT_4)(o(132, s), p, o, m)
-# define SEQAN_PP_FOR_132(s, p, o, m) SEQAN_PP_IF(p(133, s), m, SEQAN_PP_TUPLE_EAT_2)(133, s) SEQAN_PP_IF(p(133, s), SEQAN_PP_FOR_133, SEQAN_PP_TUPLE_EAT_4)(o(133, s), p, o, m)
-# define SEQAN_PP_FOR_133(s, p, o, m) SEQAN_PP_IF(p(134, s), m, SEQAN_PP_TUPLE_EAT_2)(134, s) SEQAN_PP_IF(p(134, s), SEQAN_PP_FOR_134, SEQAN_PP_TUPLE_EAT_4)(o(134, s), p, o, m)
-# define SEQAN_PP_FOR_134(s, p, o, m) SEQAN_PP_IF(p(135, s), m, SEQAN_PP_TUPLE_EAT_2)(135, s) SEQAN_PP_IF(p(135, s), SEQAN_PP_FOR_135, SEQAN_PP_TUPLE_EAT_4)(o(135, s), p, o, m)
-# define SEQAN_PP_FOR_135(s, p, o, m) SEQAN_PP_IF(p(136, s), m, SEQAN_PP_TUPLE_EAT_2)(136, s) SEQAN_PP_IF(p(136, s), SEQAN_PP_FOR_136, SEQAN_PP_TUPLE_EAT_4)(o(136, s), p, o, m)
-# define SEQAN_PP_FOR_136(s, p, o, m) SEQAN_PP_IF(p(137, s), m, SEQAN_PP_TUPLE_EAT_2)(137, s) SEQAN_PP_IF(p(137, s), SEQAN_PP_FOR_137, SEQAN_PP_TUPLE_EAT_4)(o(137, s), p, o, m)
-# define SEQAN_PP_FOR_137(s, p, o, m) SEQAN_PP_IF(p(138, s), m, SEQAN_PP_TUPLE_EAT_2)(138, s) SEQAN_PP_IF(p(138, s), SEQAN_PP_FOR_138, SEQAN_PP_TUPLE_EAT_4)(o(138, s), p, o, m)
-# define SEQAN_PP_FOR_138(s, p, o, m) SEQAN_PP_IF(p(139, s), m, SEQAN_PP_TUPLE_EAT_2)(139, s) SEQAN_PP_IF(p(139, s), SEQAN_PP_FOR_139, SEQAN_PP_TUPLE_EAT_4)(o(139, s), p, o, m)
-# define SEQAN_PP_FOR_139(s, p, o, m) SEQAN_PP_IF(p(140, s), m, SEQAN_PP_TUPLE_EAT_2)(140, s) SEQAN_PP_IF(p(140, s), SEQAN_PP_FOR_140, SEQAN_PP_TUPLE_EAT_4)(o(140, s), p, o, m)
-# define SEQAN_PP_FOR_140(s, p, o, m) SEQAN_PP_IF(p(141, s), m, SEQAN_PP_TUPLE_EAT_2)(141, s) SEQAN_PP_IF(p(141, s), SEQAN_PP_FOR_141, SEQAN_PP_TUPLE_EAT_4)(o(141, s), p, o, m)
-# define SEQAN_PP_FOR_141(s, p, o, m) SEQAN_PP_IF(p(142, s), m, SEQAN_PP_TUPLE_EAT_2)(142, s) SEQAN_PP_IF(p(142, s), SEQAN_PP_FOR_142, SEQAN_PP_TUPLE_EAT_4)(o(142, s), p, o, m)
-# define SEQAN_PP_FOR_142(s, p, o, m) SEQAN_PP_IF(p(143, s), m, SEQAN_PP_TUPLE_EAT_2)(143, s) SEQAN_PP_IF(p(143, s), SEQAN_PP_FOR_143, SEQAN_PP_TUPLE_EAT_4)(o(143, s), p, o, m)
-# define SEQAN_PP_FOR_143(s, p, o, m) SEQAN_PP_IF(p(144, s), m, SEQAN_PP_TUPLE_EAT_2)(144, s) SEQAN_PP_IF(p(144, s), SEQAN_PP_FOR_144, SEQAN_PP_TUPLE_EAT_4)(o(144, s), p, o, m)
-# define SEQAN_PP_FOR_144(s, p, o, m) SEQAN_PP_IF(p(145, s), m, SEQAN_PP_TUPLE_EAT_2)(145, s) SEQAN_PP_IF(p(145, s), SEQAN_PP_FOR_145, SEQAN_PP_TUPLE_EAT_4)(o(145, s), p, o, m)
-# define SEQAN_PP_FOR_145(s, p, o, m) SEQAN_PP_IF(p(146, s), m, SEQAN_PP_TUPLE_EAT_2)(146, s) SEQAN_PP_IF(p(146, s), SEQAN_PP_FOR_146, SEQAN_PP_TUPLE_EAT_4)(o(146, s), p, o, m)
-# define SEQAN_PP_FOR_146(s, p, o, m) SEQAN_PP_IF(p(147, s), m, SEQAN_PP_TUPLE_EAT_2)(147, s) SEQAN_PP_IF(p(147, s), SEQAN_PP_FOR_147, SEQAN_PP_TUPLE_EAT_4)(o(147, s), p, o, m)
-# define SEQAN_PP_FOR_147(s, p, o, m) SEQAN_PP_IF(p(148, s), m, SEQAN_PP_TUPLE_EAT_2)(148, s) SEQAN_PP_IF(p(148, s), SEQAN_PP_FOR_148, SEQAN_PP_TUPLE_EAT_4)(o(148, s), p, o, m)
-# define SEQAN_PP_FOR_148(s, p, o, m) SEQAN_PP_IF(p(149, s), m, SEQAN_PP_TUPLE_EAT_2)(149, s) SEQAN_PP_IF(p(149, s), SEQAN_PP_FOR_149, SEQAN_PP_TUPLE_EAT_4)(o(149, s), p, o, m)
-# define SEQAN_PP_FOR_149(s, p, o, m) SEQAN_PP_IF(p(150, s), m, SEQAN_PP_TUPLE_EAT_2)(150, s) SEQAN_PP_IF(p(150, s), SEQAN_PP_FOR_150, SEQAN_PP_TUPLE_EAT_4)(o(150, s), p, o, m)
-# define SEQAN_PP_FOR_150(s, p, o, m) SEQAN_PP_IF(p(151, s), m, SEQAN_PP_TUPLE_EAT_2)(151, s) SEQAN_PP_IF(p(151, s), SEQAN_PP_FOR_151, SEQAN_PP_TUPLE_EAT_4)(o(151, s), p, o, m)
-# define SEQAN_PP_FOR_151(s, p, o, m) SEQAN_PP_IF(p(152, s), m, SEQAN_PP_TUPLE_EAT_2)(152, s) SEQAN_PP_IF(p(152, s), SEQAN_PP_FOR_152, SEQAN_PP_TUPLE_EAT_4)(o(152, s), p, o, m)
-# define SEQAN_PP_FOR_152(s, p, o, m) SEQAN_PP_IF(p(153, s), m, SEQAN_PP_TUPLE_EAT_2)(153, s) SEQAN_PP_IF(p(153, s), SEQAN_PP_FOR_153, SEQAN_PP_TUPLE_EAT_4)(o(153, s), p, o, m)
-# define SEQAN_PP_FOR_153(s, p, o, m) SEQAN_PP_IF(p(154, s), m, SEQAN_PP_TUPLE_EAT_2)(154, s) SEQAN_PP_IF(p(154, s), SEQAN_PP_FOR_154, SEQAN_PP_TUPLE_EAT_4)(o(154, s), p, o, m)
-# define SEQAN_PP_FOR_154(s, p, o, m) SEQAN_PP_IF(p(155, s), m, SEQAN_PP_TUPLE_EAT_2)(155, s) SEQAN_PP_IF(p(155, s), SEQAN_PP_FOR_155, SEQAN_PP_TUPLE_EAT_4)(o(155, s), p, o, m)
-# define SEQAN_PP_FOR_155(s, p, o, m) SEQAN_PP_IF(p(156, s), m, SEQAN_PP_TUPLE_EAT_2)(156, s) SEQAN_PP_IF(p(156, s), SEQAN_PP_FOR_156, SEQAN_PP_TUPLE_EAT_4)(o(156, s), p, o, m)
-# define SEQAN_PP_FOR_156(s, p, o, m) SEQAN_PP_IF(p(157, s), m, SEQAN_PP_TUPLE_EAT_2)(157, s) SEQAN_PP_IF(p(157, s), SEQAN_PP_FOR_157, SEQAN_PP_TUPLE_EAT_4)(o(157, s), p, o, m)
-# define SEQAN_PP_FOR_157(s, p, o, m) SEQAN_PP_IF(p(158, s), m, SEQAN_PP_TUPLE_EAT_2)(158, s) SEQAN_PP_IF(p(158, s), SEQAN_PP_FOR_158, SEQAN_PP_TUPLE_EAT_4)(o(158, s), p, o, m)
-# define SEQAN_PP_FOR_158(s, p, o, m) SEQAN_PP_IF(p(159, s), m, SEQAN_PP_TUPLE_EAT_2)(159, s) SEQAN_PP_IF(p(159, s), SEQAN_PP_FOR_159, SEQAN_PP_TUPLE_EAT_4)(o(159, s), p, o, m)
-# define SEQAN_PP_FOR_159(s, p, o, m) SEQAN_PP_IF(p(160, s), m, SEQAN_PP_TUPLE_EAT_2)(160, s) SEQAN_PP_IF(p(160, s), SEQAN_PP_FOR_160, SEQAN_PP_TUPLE_EAT_4)(o(160, s), p, o, m)
-# define SEQAN_PP_FOR_160(s, p, o, m) SEQAN_PP_IF(p(161, s), m, SEQAN_PP_TUPLE_EAT_2)(161, s) SEQAN_PP_IF(p(161, s), SEQAN_PP_FOR_161, SEQAN_PP_TUPLE_EAT_4)(o(161, s), p, o, m)
-# define SEQAN_PP_FOR_161(s, p, o, m) SEQAN_PP_IF(p(162, s), m, SEQAN_PP_TUPLE_EAT_2)(162, s) SEQAN_PP_IF(p(162, s), SEQAN_PP_FOR_162, SEQAN_PP_TUPLE_EAT_4)(o(162, s), p, o, m)
-# define SEQAN_PP_FOR_162(s, p, o, m) SEQAN_PP_IF(p(163, s), m, SEQAN_PP_TUPLE_EAT_2)(163, s) SEQAN_PP_IF(p(163, s), SEQAN_PP_FOR_163, SEQAN_PP_TUPLE_EAT_4)(o(163, s), p, o, m)
-# define SEQAN_PP_FOR_163(s, p, o, m) SEQAN_PP_IF(p(164, s), m, SEQAN_PP_TUPLE_EAT_2)(164, s) SEQAN_PP_IF(p(164, s), SEQAN_PP_FOR_164, SEQAN_PP_TUPLE_EAT_4)(o(164, s), p, o, m)
-# define SEQAN_PP_FOR_164(s, p, o, m) SEQAN_PP_IF(p(165, s), m, SEQAN_PP_TUPLE_EAT_2)(165, s) SEQAN_PP_IF(p(165, s), SEQAN_PP_FOR_165, SEQAN_PP_TUPLE_EAT_4)(o(165, s), p, o, m)
-# define SEQAN_PP_FOR_165(s, p, o, m) SEQAN_PP_IF(p(166, s), m, SEQAN_PP_TUPLE_EAT_2)(166, s) SEQAN_PP_IF(p(166, s), SEQAN_PP_FOR_166, SEQAN_PP_TUPLE_EAT_4)(o(166, s), p, o, m)
-# define SEQAN_PP_FOR_166(s, p, o, m) SEQAN_PP_IF(p(167, s), m, SEQAN_PP_TUPLE_EAT_2)(167, s) SEQAN_PP_IF(p(167, s), SEQAN_PP_FOR_167, SEQAN_PP_TUPLE_EAT_4)(o(167, s), p, o, m)
-# define SEQAN_PP_FOR_167(s, p, o, m) SEQAN_PP_IF(p(168, s), m, SEQAN_PP_TUPLE_EAT_2)(168, s) SEQAN_PP_IF(p(168, s), SEQAN_PP_FOR_168, SEQAN_PP_TUPLE_EAT_4)(o(168, s), p, o, m)
-# define SEQAN_PP_FOR_168(s, p, o, m) SEQAN_PP_IF(p(169, s), m, SEQAN_PP_TUPLE_EAT_2)(169, s) SEQAN_PP_IF(p(169, s), SEQAN_PP_FOR_169, SEQAN_PP_TUPLE_EAT_4)(o(169, s), p, o, m)
-# define SEQAN_PP_FOR_169(s, p, o, m) SEQAN_PP_IF(p(170, s), m, SEQAN_PP_TUPLE_EAT_2)(170, s) SEQAN_PP_IF(p(170, s), SEQAN_PP_FOR_170, SEQAN_PP_TUPLE_EAT_4)(o(170, s), p, o, m)
-# define SEQAN_PP_FOR_170(s, p, o, m) SEQAN_PP_IF(p(171, s), m, SEQAN_PP_TUPLE_EAT_2)(171, s) SEQAN_PP_IF(p(171, s), SEQAN_PP_FOR_171, SEQAN_PP_TUPLE_EAT_4)(o(171, s), p, o, m)
-# define SEQAN_PP_FOR_171(s, p, o, m) SEQAN_PP_IF(p(172, s), m, SEQAN_PP_TUPLE_EAT_2)(172, s) SEQAN_PP_IF(p(172, s), SEQAN_PP_FOR_172, SEQAN_PP_TUPLE_EAT_4)(o(172, s), p, o, m)
-# define SEQAN_PP_FOR_172(s, p, o, m) SEQAN_PP_IF(p(173, s), m, SEQAN_PP_TUPLE_EAT_2)(173, s) SEQAN_PP_IF(p(173, s), SEQAN_PP_FOR_173, SEQAN_PP_TUPLE_EAT_4)(o(173, s), p, o, m)
-# define SEQAN_PP_FOR_173(s, p, o, m) SEQAN_PP_IF(p(174, s), m, SEQAN_PP_TUPLE_EAT_2)(174, s) SEQAN_PP_IF(p(174, s), SEQAN_PP_FOR_174, SEQAN_PP_TUPLE_EAT_4)(o(174, s), p, o, m)
-# define SEQAN_PP_FOR_174(s, p, o, m) SEQAN_PP_IF(p(175, s), m, SEQAN_PP_TUPLE_EAT_2)(175, s) SEQAN_PP_IF(p(175, s), SEQAN_PP_FOR_175, SEQAN_PP_TUPLE_EAT_4)(o(175, s), p, o, m)
-# define SEQAN_PP_FOR_175(s, p, o, m) SEQAN_PP_IF(p(176, s), m, SEQAN_PP_TUPLE_EAT_2)(176, s) SEQAN_PP_IF(p(176, s), SEQAN_PP_FOR_176, SEQAN_PP_TUPLE_EAT_4)(o(176, s), p, o, m)
-# define SEQAN_PP_FOR_176(s, p, o, m) SEQAN_PP_IF(p(177, s), m, SEQAN_PP_TUPLE_EAT_2)(177, s) SEQAN_PP_IF(p(177, s), SEQAN_PP_FOR_177, SEQAN_PP_TUPLE_EAT_4)(o(177, s), p, o, m)
-# define SEQAN_PP_FOR_177(s, p, o, m) SEQAN_PP_IF(p(178, s), m, SEQAN_PP_TUPLE_EAT_2)(178, s) SEQAN_PP_IF(p(178, s), SEQAN_PP_FOR_178, SEQAN_PP_TUPLE_EAT_4)(o(178, s), p, o, m)
-# define SEQAN_PP_FOR_178(s, p, o, m) SEQAN_PP_IF(p(179, s), m, SEQAN_PP_TUPLE_EAT_2)(179, s) SEQAN_PP_IF(p(179, s), SEQAN_PP_FOR_179, SEQAN_PP_TUPLE_EAT_4)(o(179, s), p, o, m)
-# define SEQAN_PP_FOR_179(s, p, o, m) SEQAN_PP_IF(p(180, s), m, SEQAN_PP_TUPLE_EAT_2)(180, s) SEQAN_PP_IF(p(180, s), SEQAN_PP_FOR_180, SEQAN_PP_TUPLE_EAT_4)(o(180, s), p, o, m)
-# define SEQAN_PP_FOR_180(s, p, o, m) SEQAN_PP_IF(p(181, s), m, SEQAN_PP_TUPLE_EAT_2)(181, s) SEQAN_PP_IF(p(181, s), SEQAN_PP_FOR_181, SEQAN_PP_TUPLE_EAT_4)(o(181, s), p, o, m)
-# define SEQAN_PP_FOR_181(s, p, o, m) SEQAN_PP_IF(p(182, s), m, SEQAN_PP_TUPLE_EAT_2)(182, s) SEQAN_PP_IF(p(182, s), SEQAN_PP_FOR_182, SEQAN_PP_TUPLE_EAT_4)(o(182, s), p, o, m)
-# define SEQAN_PP_FOR_182(s, p, o, m) SEQAN_PP_IF(p(183, s), m, SEQAN_PP_TUPLE_EAT_2)(183, s) SEQAN_PP_IF(p(183, s), SEQAN_PP_FOR_183, SEQAN_PP_TUPLE_EAT_4)(o(183, s), p, o, m)
-# define SEQAN_PP_FOR_183(s, p, o, m) SEQAN_PP_IF(p(184, s), m, SEQAN_PP_TUPLE_EAT_2)(184, s) SEQAN_PP_IF(p(184, s), SEQAN_PP_FOR_184, SEQAN_PP_TUPLE_EAT_4)(o(184, s), p, o, m)
-# define SEQAN_PP_FOR_184(s, p, o, m) SEQAN_PP_IF(p(185, s), m, SEQAN_PP_TUPLE_EAT_2)(185, s) SEQAN_PP_IF(p(185, s), SEQAN_PP_FOR_185, SEQAN_PP_TUPLE_EAT_4)(o(185, s), p, o, m)
-# define SEQAN_PP_FOR_185(s, p, o, m) SEQAN_PP_IF(p(186, s), m, SEQAN_PP_TUPLE_EAT_2)(186, s) SEQAN_PP_IF(p(186, s), SEQAN_PP_FOR_186, SEQAN_PP_TUPLE_EAT_4)(o(186, s), p, o, m)
-# define SEQAN_PP_FOR_186(s, p, o, m) SEQAN_PP_IF(p(187, s), m, SEQAN_PP_TUPLE_EAT_2)(187, s) SEQAN_PP_IF(p(187, s), SEQAN_PP_FOR_187, SEQAN_PP_TUPLE_EAT_4)(o(187, s), p, o, m)
-# define SEQAN_PP_FOR_187(s, p, o, m) SEQAN_PP_IF(p(188, s), m, SEQAN_PP_TUPLE_EAT_2)(188, s) SEQAN_PP_IF(p(188, s), SEQAN_PP_FOR_188, SEQAN_PP_TUPLE_EAT_4)(o(188, s), p, o, m)
-# define SEQAN_PP_FOR_188(s, p, o, m) SEQAN_PP_IF(p(189, s), m, SEQAN_PP_TUPLE_EAT_2)(189, s) SEQAN_PP_IF(p(189, s), SEQAN_PP_FOR_189, SEQAN_PP_TUPLE_EAT_4)(o(189, s), p, o, m)
-# define SEQAN_PP_FOR_189(s, p, o, m) SEQAN_PP_IF(p(190, s), m, SEQAN_PP_TUPLE_EAT_2)(190, s) SEQAN_PP_IF(p(190, s), SEQAN_PP_FOR_190, SEQAN_PP_TUPLE_EAT_4)(o(190, s), p, o, m)
-# define SEQAN_PP_FOR_190(s, p, o, m) SEQAN_PP_IF(p(191, s), m, SEQAN_PP_TUPLE_EAT_2)(191, s) SEQAN_PP_IF(p(191, s), SEQAN_PP_FOR_191, SEQAN_PP_TUPLE_EAT_4)(o(191, s), p, o, m)
-# define SEQAN_PP_FOR_191(s, p, o, m) SEQAN_PP_IF(p(192, s), m, SEQAN_PP_TUPLE_EAT_2)(192, s) SEQAN_PP_IF(p(192, s), SEQAN_PP_FOR_192, SEQAN_PP_TUPLE_EAT_4)(o(192, s), p, o, m)
-# define SEQAN_PP_FOR_192(s, p, o, m) SEQAN_PP_IF(p(193, s), m, SEQAN_PP_TUPLE_EAT_2)(193, s) SEQAN_PP_IF(p(193, s), SEQAN_PP_FOR_193, SEQAN_PP_TUPLE_EAT_4)(o(193, s), p, o, m)
-# define SEQAN_PP_FOR_193(s, p, o, m) SEQAN_PP_IF(p(194, s), m, SEQAN_PP_TUPLE_EAT_2)(194, s) SEQAN_PP_IF(p(194, s), SEQAN_PP_FOR_194, SEQAN_PP_TUPLE_EAT_4)(o(194, s), p, o, m)
-# define SEQAN_PP_FOR_194(s, p, o, m) SEQAN_PP_IF(p(195, s), m, SEQAN_PP_TUPLE_EAT_2)(195, s) SEQAN_PP_IF(p(195, s), SEQAN_PP_FOR_195, SEQAN_PP_TUPLE_EAT_4)(o(195, s), p, o, m)
-# define SEQAN_PP_FOR_195(s, p, o, m) SEQAN_PP_IF(p(196, s), m, SEQAN_PP_TUPLE_EAT_2)(196, s) SEQAN_PP_IF(p(196, s), SEQAN_PP_FOR_196, SEQAN_PP_TUPLE_EAT_4)(o(196, s), p, o, m)
-# define SEQAN_PP_FOR_196(s, p, o, m) SEQAN_PP_IF(p(197, s), m, SEQAN_PP_TUPLE_EAT_2)(197, s) SEQAN_PP_IF(p(197, s), SEQAN_PP_FOR_197, SEQAN_PP_TUPLE_EAT_4)(o(197, s), p, o, m)
-# define SEQAN_PP_FOR_197(s, p, o, m) SEQAN_PP_IF(p(198, s), m, SEQAN_PP_TUPLE_EAT_2)(198, s) SEQAN_PP_IF(p(198, s), SEQAN_PP_FOR_198, SEQAN_PP_TUPLE_EAT_4)(o(198, s), p, o, m)
-# define SEQAN_PP_FOR_198(s, p, o, m) SEQAN_PP_IF(p(199, s), m, SEQAN_PP_TUPLE_EAT_2)(199, s) SEQAN_PP_IF(p(199, s), SEQAN_PP_FOR_199, SEQAN_PP_TUPLE_EAT_4)(o(199, s), p, o, m)
-# define SEQAN_PP_FOR_199(s, p, o, m) SEQAN_PP_IF(p(200, s), m, SEQAN_PP_TUPLE_EAT_2)(200, s) SEQAN_PP_IF(p(200, s), SEQAN_PP_FOR_200, SEQAN_PP_TUPLE_EAT_4)(o(200, s), p, o, m)
-# define SEQAN_PP_FOR_200(s, p, o, m) SEQAN_PP_IF(p(201, s), m, SEQAN_PP_TUPLE_EAT_2)(201, s) SEQAN_PP_IF(p(201, s), SEQAN_PP_FOR_201, SEQAN_PP_TUPLE_EAT_4)(o(201, s), p, o, m)
-# define SEQAN_PP_FOR_201(s, p, o, m) SEQAN_PP_IF(p(202, s), m, SEQAN_PP_TUPLE_EAT_2)(202, s) SEQAN_PP_IF(p(202, s), SEQAN_PP_FOR_202, SEQAN_PP_TUPLE_EAT_4)(o(202, s), p, o, m)
-# define SEQAN_PP_FOR_202(s, p, o, m) SEQAN_PP_IF(p(203, s), m, SEQAN_PP_TUPLE_EAT_2)(203, s) SEQAN_PP_IF(p(203, s), SEQAN_PP_FOR_203, SEQAN_PP_TUPLE_EAT_4)(o(203, s), p, o, m)
-# define SEQAN_PP_FOR_203(s, p, o, m) SEQAN_PP_IF(p(204, s), m, SEQAN_PP_TUPLE_EAT_2)(204, s) SEQAN_PP_IF(p(204, s), SEQAN_PP_FOR_204, SEQAN_PP_TUPLE_EAT_4)(o(204, s), p, o, m)
-# define SEQAN_PP_FOR_204(s, p, o, m) SEQAN_PP_IF(p(205, s), m, SEQAN_PP_TUPLE_EAT_2)(205, s) SEQAN_PP_IF(p(205, s), SEQAN_PP_FOR_205, SEQAN_PP_TUPLE_EAT_4)(o(205, s), p, o, m)
-# define SEQAN_PP_FOR_205(s, p, o, m) SEQAN_PP_IF(p(206, s), m, SEQAN_PP_TUPLE_EAT_2)(206, s) SEQAN_PP_IF(p(206, s), SEQAN_PP_FOR_206, SEQAN_PP_TUPLE_EAT_4)(o(206, s), p, o, m)
-# define SEQAN_PP_FOR_206(s, p, o, m) SEQAN_PP_IF(p(207, s), m, SEQAN_PP_TUPLE_EAT_2)(207, s) SEQAN_PP_IF(p(207, s), SEQAN_PP_FOR_207, SEQAN_PP_TUPLE_EAT_4)(o(207, s), p, o, m)
-# define SEQAN_PP_FOR_207(s, p, o, m) SEQAN_PP_IF(p(208, s), m, SEQAN_PP_TUPLE_EAT_2)(208, s) SEQAN_PP_IF(p(208, s), SEQAN_PP_FOR_208, SEQAN_PP_TUPLE_EAT_4)(o(208, s), p, o, m)
-# define SEQAN_PP_FOR_208(s, p, o, m) SEQAN_PP_IF(p(209, s), m, SEQAN_PP_TUPLE_EAT_2)(209, s) SEQAN_PP_IF(p(209, s), SEQAN_PP_FOR_209, SEQAN_PP_TUPLE_EAT_4)(o(209, s), p, o, m)
-# define SEQAN_PP_FOR_209(s, p, o, m) SEQAN_PP_IF(p(210, s), m, SEQAN_PP_TUPLE_EAT_2)(210, s) SEQAN_PP_IF(p(210, s), SEQAN_PP_FOR_210, SEQAN_PP_TUPLE_EAT_4)(o(210, s), p, o, m)
-# define SEQAN_PP_FOR_210(s, p, o, m) SEQAN_PP_IF(p(211, s), m, SEQAN_PP_TUPLE_EAT_2)(211, s) SEQAN_PP_IF(p(211, s), SEQAN_PP_FOR_211, SEQAN_PP_TUPLE_EAT_4)(o(211, s), p, o, m)
-# define SEQAN_PP_FOR_211(s, p, o, m) SEQAN_PP_IF(p(212, s), m, SEQAN_PP_TUPLE_EAT_2)(212, s) SEQAN_PP_IF(p(212, s), SEQAN_PP_FOR_212, SEQAN_PP_TUPLE_EAT_4)(o(212, s), p, o, m)
-# define SEQAN_PP_FOR_212(s, p, o, m) SEQAN_PP_IF(p(213, s), m, SEQAN_PP_TUPLE_EAT_2)(213, s) SEQAN_PP_IF(p(213, s), SEQAN_PP_FOR_213, SEQAN_PP_TUPLE_EAT_4)(o(213, s), p, o, m)
-# define SEQAN_PP_FOR_213(s, p, o, m) SEQAN_PP_IF(p(214, s), m, SEQAN_PP_TUPLE_EAT_2)(214, s) SEQAN_PP_IF(p(214, s), SEQAN_PP_FOR_214, SEQAN_PP_TUPLE_EAT_4)(o(214, s), p, o, m)
-# define SEQAN_PP_FOR_214(s, p, o, m) SEQAN_PP_IF(p(215, s), m, SEQAN_PP_TUPLE_EAT_2)(215, s) SEQAN_PP_IF(p(215, s), SEQAN_PP_FOR_215, SEQAN_PP_TUPLE_EAT_4)(o(215, s), p, o, m)
-# define SEQAN_PP_FOR_215(s, p, o, m) SEQAN_PP_IF(p(216, s), m, SEQAN_PP_TUPLE_EAT_2)(216, s) SEQAN_PP_IF(p(216, s), SEQAN_PP_FOR_216, SEQAN_PP_TUPLE_EAT_4)(o(216, s), p, o, m)
-# define SEQAN_PP_FOR_216(s, p, o, m) SEQAN_PP_IF(p(217, s), m, SEQAN_PP_TUPLE_EAT_2)(217, s) SEQAN_PP_IF(p(217, s), SEQAN_PP_FOR_217, SEQAN_PP_TUPLE_EAT_4)(o(217, s), p, o, m)
-# define SEQAN_PP_FOR_217(s, p, o, m) SEQAN_PP_IF(p(218, s), m, SEQAN_PP_TUPLE_EAT_2)(218, s) SEQAN_PP_IF(p(218, s), SEQAN_PP_FOR_218, SEQAN_PP_TUPLE_EAT_4)(o(218, s), p, o, m)
-# define SEQAN_PP_FOR_218(s, p, o, m) SEQAN_PP_IF(p(219, s), m, SEQAN_PP_TUPLE_EAT_2)(219, s) SEQAN_PP_IF(p(219, s), SEQAN_PP_FOR_219, SEQAN_PP_TUPLE_EAT_4)(o(219, s), p, o, m)
-# define SEQAN_PP_FOR_219(s, p, o, m) SEQAN_PP_IF(p(220, s), m, SEQAN_PP_TUPLE_EAT_2)(220, s) SEQAN_PP_IF(p(220, s), SEQAN_PP_FOR_220, SEQAN_PP_TUPLE_EAT_4)(o(220, s), p, o, m)
-# define SEQAN_PP_FOR_220(s, p, o, m) SEQAN_PP_IF(p(221, s), m, SEQAN_PP_TUPLE_EAT_2)(221, s) SEQAN_PP_IF(p(221, s), SEQAN_PP_FOR_221, SEQAN_PP_TUPLE_EAT_4)(o(221, s), p, o, m)
-# define SEQAN_PP_FOR_221(s, p, o, m) SEQAN_PP_IF(p(222, s), m, SEQAN_PP_TUPLE_EAT_2)(222, s) SEQAN_PP_IF(p(222, s), SEQAN_PP_FOR_222, SEQAN_PP_TUPLE_EAT_4)(o(222, s), p, o, m)
-# define SEQAN_PP_FOR_222(s, p, o, m) SEQAN_PP_IF(p(223, s), m, SEQAN_PP_TUPLE_EAT_2)(223, s) SEQAN_PP_IF(p(223, s), SEQAN_PP_FOR_223, SEQAN_PP_TUPLE_EAT_4)(o(223, s), p, o, m)
-# define SEQAN_PP_FOR_223(s, p, o, m) SEQAN_PP_IF(p(224, s), m, SEQAN_PP_TUPLE_EAT_2)(224, s) SEQAN_PP_IF(p(224, s), SEQAN_PP_FOR_224, SEQAN_PP_TUPLE_EAT_4)(o(224, s), p, o, m)
-# define SEQAN_PP_FOR_224(s, p, o, m) SEQAN_PP_IF(p(225, s), m, SEQAN_PP_TUPLE_EAT_2)(225, s) SEQAN_PP_IF(p(225, s), SEQAN_PP_FOR_225, SEQAN_PP_TUPLE_EAT_4)(o(225, s), p, o, m)
-# define SEQAN_PP_FOR_225(s, p, o, m) SEQAN_PP_IF(p(226, s), m, SEQAN_PP_TUPLE_EAT_2)(226, s) SEQAN_PP_IF(p(226, s), SEQAN_PP_FOR_226, SEQAN_PP_TUPLE_EAT_4)(o(226, s), p, o, m)
-# define SEQAN_PP_FOR_226(s, p, o, m) SEQAN_PP_IF(p(227, s), m, SEQAN_PP_TUPLE_EAT_2)(227, s) SEQAN_PP_IF(p(227, s), SEQAN_PP_FOR_227, SEQAN_PP_TUPLE_EAT_4)(o(227, s), p, o, m)
-# define SEQAN_PP_FOR_227(s, p, o, m) SEQAN_PP_IF(p(228, s), m, SEQAN_PP_TUPLE_EAT_2)(228, s) SEQAN_PP_IF(p(228, s), SEQAN_PP_FOR_228, SEQAN_PP_TUPLE_EAT_4)(o(228, s), p, o, m)
-# define SEQAN_PP_FOR_228(s, p, o, m) SEQAN_PP_IF(p(229, s), m, SEQAN_PP_TUPLE_EAT_2)(229, s) SEQAN_PP_IF(p(229, s), SEQAN_PP_FOR_229, SEQAN_PP_TUPLE_EAT_4)(o(229, s), p, o, m)
-# define SEQAN_PP_FOR_229(s, p, o, m) SEQAN_PP_IF(p(230, s), m, SEQAN_PP_TUPLE_EAT_2)(230, s) SEQAN_PP_IF(p(230, s), SEQAN_PP_FOR_230, SEQAN_PP_TUPLE_EAT_4)(o(230, s), p, o, m)
-# define SEQAN_PP_FOR_230(s, p, o, m) SEQAN_PP_IF(p(231, s), m, SEQAN_PP_TUPLE_EAT_2)(231, s) SEQAN_PP_IF(p(231, s), SEQAN_PP_FOR_231, SEQAN_PP_TUPLE_EAT_4)(o(231, s), p, o, m)
-# define SEQAN_PP_FOR_231(s, p, o, m) SEQAN_PP_IF(p(232, s), m, SEQAN_PP_TUPLE_EAT_2)(232, s) SEQAN_PP_IF(p(232, s), SEQAN_PP_FOR_232, SEQAN_PP_TUPLE_EAT_4)(o(232, s), p, o, m)
-# define SEQAN_PP_FOR_232(s, p, o, m) SEQAN_PP_IF(p(233, s), m, SEQAN_PP_TUPLE_EAT_2)(233, s) SEQAN_PP_IF(p(233, s), SEQAN_PP_FOR_233, SEQAN_PP_TUPLE_EAT_4)(o(233, s), p, o, m)
-# define SEQAN_PP_FOR_233(s, p, o, m) SEQAN_PP_IF(p(234, s), m, SEQAN_PP_TUPLE_EAT_2)(234, s) SEQAN_PP_IF(p(234, s), SEQAN_PP_FOR_234, SEQAN_PP_TUPLE_EAT_4)(o(234, s), p, o, m)
-# define SEQAN_PP_FOR_234(s, p, o, m) SEQAN_PP_IF(p(235, s), m, SEQAN_PP_TUPLE_EAT_2)(235, s) SEQAN_PP_IF(p(235, s), SEQAN_PP_FOR_235, SEQAN_PP_TUPLE_EAT_4)(o(235, s), p, o, m)
-# define SEQAN_PP_FOR_235(s, p, o, m) SEQAN_PP_IF(p(236, s), m, SEQAN_PP_TUPLE_EAT_2)(236, s) SEQAN_PP_IF(p(236, s), SEQAN_PP_FOR_236, SEQAN_PP_TUPLE_EAT_4)(o(236, s), p, o, m)
-# define SEQAN_PP_FOR_236(s, p, o, m) SEQAN_PP_IF(p(237, s), m, SEQAN_PP_TUPLE_EAT_2)(237, s) SEQAN_PP_IF(p(237, s), SEQAN_PP_FOR_237, SEQAN_PP_TUPLE_EAT_4)(o(237, s), p, o, m)
-# define SEQAN_PP_FOR_237(s, p, o, m) SEQAN_PP_IF(p(238, s), m, SEQAN_PP_TUPLE_EAT_2)(238, s) SEQAN_PP_IF(p(238, s), SEQAN_PP_FOR_238, SEQAN_PP_TUPLE_EAT_4)(o(238, s), p, o, m)
-# define SEQAN_PP_FOR_238(s, p, o, m) SEQAN_PP_IF(p(239, s), m, SEQAN_PP_TUPLE_EAT_2)(239, s) SEQAN_PP_IF(p(239, s), SEQAN_PP_FOR_239, SEQAN_PP_TUPLE_EAT_4)(o(239, s), p, o, m)
-# define SEQAN_PP_FOR_239(s, p, o, m) SEQAN_PP_IF(p(240, s), m, SEQAN_PP_TUPLE_EAT_2)(240, s) SEQAN_PP_IF(p(240, s), SEQAN_PP_FOR_240, SEQAN_PP_TUPLE_EAT_4)(o(240, s), p, o, m)
-# define SEQAN_PP_FOR_240(s, p, o, m) SEQAN_PP_IF(p(241, s), m, SEQAN_PP_TUPLE_EAT_2)(241, s) SEQAN_PP_IF(p(241, s), SEQAN_PP_FOR_241, SEQAN_PP_TUPLE_EAT_4)(o(241, s), p, o, m)
-# define SEQAN_PP_FOR_241(s, p, o, m) SEQAN_PP_IF(p(242, s), m, SEQAN_PP_TUPLE_EAT_2)(242, s) SEQAN_PP_IF(p(242, s), SEQAN_PP_FOR_242, SEQAN_PP_TUPLE_EAT_4)(o(242, s), p, o, m)
-# define SEQAN_PP_FOR_242(s, p, o, m) SEQAN_PP_IF(p(243, s), m, SEQAN_PP_TUPLE_EAT_2)(243, s) SEQAN_PP_IF(p(243, s), SEQAN_PP_FOR_243, SEQAN_PP_TUPLE_EAT_4)(o(243, s), p, o, m)
-# define SEQAN_PP_FOR_243(s, p, o, m) SEQAN_PP_IF(p(244, s), m, SEQAN_PP_TUPLE_EAT_2)(244, s) SEQAN_PP_IF(p(244, s), SEQAN_PP_FOR_244, SEQAN_PP_TUPLE_EAT_4)(o(244, s), p, o, m)
-# define SEQAN_PP_FOR_244(s, p, o, m) SEQAN_PP_IF(p(245, s), m, SEQAN_PP_TUPLE_EAT_2)(245, s) SEQAN_PP_IF(p(245, s), SEQAN_PP_FOR_245, SEQAN_PP_TUPLE_EAT_4)(o(245, s), p, o, m)
-# define SEQAN_PP_FOR_245(s, p, o, m) SEQAN_PP_IF(p(246, s), m, SEQAN_PP_TUPLE_EAT_2)(246, s) SEQAN_PP_IF(p(246, s), SEQAN_PP_FOR_246, SEQAN_PP_TUPLE_EAT_4)(o(246, s), p, o, m)
-# define SEQAN_PP_FOR_246(s, p, o, m) SEQAN_PP_IF(p(247, s), m, SEQAN_PP_TUPLE_EAT_2)(247, s) SEQAN_PP_IF(p(247, s), SEQAN_PP_FOR_247, SEQAN_PP_TUPLE_EAT_4)(o(247, s), p, o, m)
-# define SEQAN_PP_FOR_247(s, p, o, m) SEQAN_PP_IF(p(248, s), m, SEQAN_PP_TUPLE_EAT_2)(248, s) SEQAN_PP_IF(p(248, s), SEQAN_PP_FOR_248, SEQAN_PP_TUPLE_EAT_4)(o(248, s), p, o, m)
-# define SEQAN_PP_FOR_248(s, p, o, m) SEQAN_PP_IF(p(249, s), m, SEQAN_PP_TUPLE_EAT_2)(249, s) SEQAN_PP_IF(p(249, s), SEQAN_PP_FOR_249, SEQAN_PP_TUPLE_EAT_4)(o(249, s), p, o, m)
-# define SEQAN_PP_FOR_249(s, p, o, m) SEQAN_PP_IF(p(250, s), m, SEQAN_PP_TUPLE_EAT_2)(250, s) SEQAN_PP_IF(p(250, s), SEQAN_PP_FOR_250, SEQAN_PP_TUPLE_EAT_4)(o(250, s), p, o, m)
-# define SEQAN_PP_FOR_250(s, p, o, m) SEQAN_PP_IF(p(251, s), m, SEQAN_PP_TUPLE_EAT_2)(251, s) SEQAN_PP_IF(p(251, s), SEQAN_PP_FOR_251, SEQAN_PP_TUPLE_EAT_4)(o(251, s), p, o, m)
-# define SEQAN_PP_FOR_251(s, p, o, m) SEQAN_PP_IF(p(252, s), m, SEQAN_PP_TUPLE_EAT_2)(252, s) SEQAN_PP_IF(p(252, s), SEQAN_PP_FOR_252, SEQAN_PP_TUPLE_EAT_4)(o(252, s), p, o, m)
-# define SEQAN_PP_FOR_252(s, p, o, m) SEQAN_PP_IF(p(253, s), m, SEQAN_PP_TUPLE_EAT_2)(253, s) SEQAN_PP_IF(p(253, s), SEQAN_PP_FOR_253, SEQAN_PP_TUPLE_EAT_4)(o(253, s), p, o, m)
-# define SEQAN_PP_FOR_253(s, p, o, m) SEQAN_PP_IF(p(254, s), m, SEQAN_PP_TUPLE_EAT_2)(254, s) SEQAN_PP_IF(p(254, s), SEQAN_PP_FOR_254, SEQAN_PP_TUPLE_EAT_4)(o(254, s), p, o, m)
-# define SEQAN_PP_FOR_254(s, p, o, m) SEQAN_PP_IF(p(255, s), m, SEQAN_PP_TUPLE_EAT_2)(255, s) SEQAN_PP_IF(p(255, s), SEQAN_PP_FOR_255, SEQAN_PP_TUPLE_EAT_4)(o(255, s), p, o, m)
-# define SEQAN_PP_FOR_255(s, p, o, m) SEQAN_PP_IF(p(256, s), m, SEQAN_PP_TUPLE_EAT_2)(256, s) SEQAN_PP_IF(p(256, s), SEQAN_PP_FOR_256, SEQAN_PP_TUPLE_EAT_4)(o(256, s), p, o, m)
-# define SEQAN_PP_FOR_256(s, p, o, m) SEQAN_PP_IF(p(257, s), m, SEQAN_PP_TUPLE_EAT_2)(257, s) SEQAN_PP_IF(p(257, s), SEQAN_PP_FOR_257, SEQAN_PP_TUPLE_EAT_4)(o(257, s), p, o, m)
-#
-// # endif
-
-#else  // #ifdef SEQAN_PLATFORM_WINDOWS_VS
-
 // --------------------------------------------------------------------------
 // ==> boost/preprocessor/repetition/detail/for.hpp <==
 // --------------------------------------------------------------------------
@@ -2280,8 +1994,6 @@
 # define SEQAN_PP_FOR_255_C(c, s, p, o, m) SEQAN_PP_IIF(c, m, SEQAN_PP_TUPLE_EAT_2)(256, s) SEQAN_PP_IIF(c, SEQAN_PP_FOR_256, SEQAN_PP_TUPLE_EAT_4)(SEQAN_PP_EXPR_IIF(c, o)(256, s), p, o, m)
 # define SEQAN_PP_FOR_256_C(c, s, p, o, m) SEQAN_PP_IIF(c, m, SEQAN_PP_TUPLE_EAT_2)(257, s) SEQAN_PP_IIF(c, SEQAN_PP_FOR_257, SEQAN_PP_TUPLE_EAT_4)(SEQAN_PP_EXPR_IIF(c, o)(257, s), p, o, m)
 
-#endif  // #ifdef SEQAN_PLATFORM_WINDOWS_VS
-
 // --------------------------------------------------------------------------
 // ==> boost/preprocessor/detail/auto_rec.hpp <==
 // --------------------------------------------------------------------------
@@ -2932,12 +2644,12 @@
 // # endif
 #
 // # if ~SEQAN_PP_CONFIG_FLAGS() & SEQAN_PP_CONFIG_MSVC()
-#ifndef PLATFORM_WINDOWS_VS
+#ifndef STDLIB_VS
 #    define SEQAN_PP_IIF_I(bit, t, f) SEQAN_PP_IIF_ ## bit(t, f)
-# else // #ifndef PLATFORM_WINDOWS_VS
+# else // #ifndef STDLIB_VS
 #    define SEQAN_PP_IIF_I(bit, t, f) SEQAN_PP_IIF_II(SEQAN_PP_IIF_ ## bit(t, f))
 #    define SEQAN_PP_IIF_II(id) id
-# endif // #ifndef PLATFORM_WINDOWS_VS
+# endif // #ifndef STDLIB_VS
 #
 # define SEQAN_PP_IIF_0(t, f) f
 # define SEQAN_PP_IIF_1(t, f) t
@@ -4263,7 +3975,7 @@
 // # endif
 #
 // # if SEQAN_PP_CONFIG_FLAGS() & SEQAN_PP_CONFIG_MSVC()
-#ifdef PLATFORM_WINDOWS_VS
+#ifdef STDLIB_VS
 #    define SEQAN_PP_SEQ_ELEM_I(i, seq) SEQAN_PP_SEQ_ELEM_II((SEQAN_PP_SEQ_ELEM_ ## i seq))
 #    define SEQAN_PP_SEQ_ELEM_II(res) SEQAN_PP_SEQ_ELEM_IV(SEQAN_PP_SEQ_ELEM_III res)
 #    define SEQAN_PP_SEQ_ELEM_III(x, _) x SEQAN_PP_EMPTY()
@@ -4273,7 +3985,7 @@
 // #    define SEQAN_PP_SEQ_ELEM_II(i, seq) SEQAN_PP_SEQ_ELEM_III(SEQAN_PP_SEQ_ELEM_ ## i ## seq)
 // #    define SEQAN_PP_SEQ_ELEM_III(im) SEQAN_PP_SEQ_ELEM_IV(im)
 // #    define SEQAN_PP_SEQ_ELEM_IV(x, _) x
-# else  // #ifdef PLATFORM_WINDOWS_VS
+# else  // #ifdef STDLIB_VS
 // #    if defined(__IBMC__) || defined(__IBMCPP__)
 // #        define SEQAN_PP_SEQ_ELEM_I(i, seq) SEQAN_PP_SEQ_ELEM_II(SEQAN_PP_CAT(SEQAN_PP_SEQ_ELEM_ ## i, seq))
 // #    else
@@ -4281,7 +3993,7 @@
 // #    endif
 #    define SEQAN_PP_SEQ_ELEM_II(im) SEQAN_PP_SEQ_ELEM_III(im)
 #    define SEQAN_PP_SEQ_ELEM_III(x, _) x
-# endif  // #ifdef PLATFORM_WINDOWS_VS
+# endif  // #ifdef STDLIB_VS
 #
 # define SEQAN_PP_SEQ_ELEM_0(x) x, SEQAN_PP_NIL
 # define SEQAN_PP_SEQ_ELEM_1(_) SEQAN_PP_SEQ_ELEM_0
@@ -4370,15 +4082,15 @@
 // #    define SEQAN_PP_SEQ_TAIL_1(par) SEQAN_PP_SEQ_TAIL_2 ## par
 // #    define SEQAN_PP_SEQ_TAIL_2(seq) SEQAN_PP_SEQ_TAIL_I ## seq
 // # elif SEQAN_PP_CONFIG_FLAGS() & SEQAN_PP_CONFIG_MSVC()
-#ifdef PLATFORM_WINDOWS_VS
+#ifdef STDLIB_VS
 #    define SEQAN_PP_SEQ_TAIL(seq) SEQAN_PP_SEQ_TAIL_ID(SEQAN_PP_SEQ_TAIL_I seq)
 #    define SEQAN_PP_SEQ_TAIL_ID(id) id
 // # elif SEQAN_PP_CONFIG_FLAGS() & SEQAN_PP_CONFIG_EDG()
 // #    define SEQAN_PP_SEQ_TAIL(seq) SEQAN_PP_SEQ_TAIL_D(seq)
 // #    define SEQAN_PP_SEQ_TAIL_D(seq) SEQAN_PP_SEQ_TAIL_I seq
-# else  // #ifdef PLATFORM_WINDOWS_VS
+# else  // #ifdef STDLIB_VS
 #    define SEQAN_PP_SEQ_TAIL(seq) SEQAN_PP_SEQ_TAIL_I seq
-# endif  // #ifdef PLATFORM_WINDOWS_VS
+# endif  // #ifdef STDLIB_VS
 #
 # define SEQAN_PP_SEQ_TAIL_I(x)
 #
@@ -5010,21 +4722,21 @@
 # define SEQAN_PP_SEQ_FOR_EACH_P(r, x) SEQAN_PP_DEC(SEQAN_PP_SEQ_SIZE(SEQAN_PP_TUPLE_ELEM(3, 2, x)))
 #
 // # if SEQAN_PP_CONFIG_FLAGS() & SEQAN_PP_CONFIG_STRICT()
-#ifndef PLATFORM_WINDOWS_VS
+#ifndef STDLIB_VS
 #    define SEQAN_PP_SEQ_FOR_EACH_O(r, x) SEQAN_PP_SEQ_FOR_EACH_O_I x
-# else  // #ifndef PLATFORM_WINDOWS_VS
+# else  // #ifndef STDLIB_VS
 #    define SEQAN_PP_SEQ_FOR_EACH_O(r, x) SEQAN_PP_SEQ_FOR_EACH_O_I(SEQAN_PP_TUPLE_ELEM(3, 0, x), SEQAN_PP_TUPLE_ELEM(3, 1, x), SEQAN_PP_TUPLE_ELEM(3, 2, x))
-# endif  // #ifndef PLATFORM_WINDOWS_VS
+# endif  // #ifndef STDLIB_VS
 #
 # define SEQAN_PP_SEQ_FOR_EACH_O_I(macro, data, seq) (macro, data, SEQAN_PP_SEQ_TAIL(seq))
 #
 // # if SEQAN_PP_CONFIG_FLAGS() & SEQAN_PP_CONFIG_STRICT()
-#ifndef PLATFORM_WINDOWS_VS
+#ifndef STDLIB_VS
 #    define SEQAN_PP_SEQ_FOR_EACH_M(r, x) SEQAN_PP_SEQ_FOR_EACH_M_IM(r, SEQAN_PP_TUPLE_REM_3 x)
 #    define SEQAN_PP_SEQ_FOR_EACH_M_IM(r, im) SEQAN_PP_SEQ_FOR_EACH_M_I(r, im)
-# else  // #ifndef PLATFORM_WINDOWS_VS
+# else  // #ifndef STDLIB_VS
 #    define SEQAN_PP_SEQ_FOR_EACH_M(r, x) SEQAN_PP_SEQ_FOR_EACH_M_I(r, SEQAN_PP_TUPLE_ELEM(3, 0, x), SEQAN_PP_TUPLE_ELEM(3, 1, x), SEQAN_PP_TUPLE_ELEM(3, 2, x))
-# endif  // #ifndef PLATFORM_WINDOWS_VS
+# endif  // #ifndef STDLIB_VS
 #
 # define SEQAN_PP_SEQ_FOR_EACH_M_I(r, macro, data, seq) macro(r, data, SEQAN_PP_SEQ_HEAD(seq))
 #
diff --git a/include/seqan/basic/concept_checking.h b/include/seqan/basic/concept_checking.h
index 95072e5..96dcc8a 100644
--- a/include/seqan/basic/concept_checking.h
+++ b/include/seqan/basic/concept_checking.h
@@ -406,7 +406,7 @@ inline void functionRequires(Model* = 0)
  * operators.  Use this functions to remove a compile warning that otherwise would be raised in this case.
  */
 
-template <class T> SEQAN_HOST_DEVICE inline void ignoreUnusedVariableWarning(T const&) {}
+template <class T> inline void ignoreUnusedVariableWarning(T const&) {}
 
 // ---------------------------------------------------------------------------
 // ==> boost/concept/detail/concept_def.hpp <==
diff --git a/include/seqan/basic/debug_test_system.h b/include/seqan/basic/debug_test_system.h
index 7358035..d98d4e2 100644
--- a/include/seqan/basic/debug_test_system.h
+++ b/include/seqan/basic/debug_test_system.h
@@ -43,6 +43,106 @@
 #ifndef SEQAN_INCLUDE_SEQAN_BASIC_DEBUG_TEST_SYSTEM_H_
 #define SEQAN_INCLUDE_SEQAN_BASIC_DEBUG_TEST_SYSTEM_H_
 
+
+// SeqAn's has three global debug/testing levels: testing, debug and
+// release.  Depending on the level, the SEQAN_ASSERT_* macros will be enabled.
+//
+// The levels are enabled by the values of the macros
+// SEQAN_ENABLE_TESTING and SEQAN_ENABLE_DEBUG.  By setting a macro to
+// 0, one disables the level and by setting the macro to 1, one
+// enables a level.  Enabling testing also enables debug, overriding a
+// value of 0 for SEQAN_ENABLE_DEBUG.
+//
+// If the level is release (both the macros for debug and testing are
+// 0), the assertions will be disabled.  If the level is debug then
+// the assertions will be enabled.
+//
+// The default is to disable debugging and testing.
+//
+// You can print the current level using the function seqan::printDebugLevel().
+
+/*!
+ * @macro TestSystemMacros#SEQAN_ENABLE_TESTING
+ * @headerfile <seqan/basic.h>
+ * @brief Indicates whether testing is enabled.
+ *
+ * @signature SEQAN_ENABLE_TESTING
+ *
+ * When set to 1, testing is enabled.  If it is undefined or set to 0, testing is disabled.  This means the macros for
+ * the tests (SEQAN_BEGIN_TESTSUITE, SEQAN_DEFINE_TEST, SEQAN_CALL_TEST, and SEQAN_END_TESTSUITE) will be enabled.  This
+ * makes failing assertions raise exceptions instead of calling <tt>abort()</tt> (which terminates the program).
+ *
+ * By default, this is set to 0.
+ *
+ * If you want to change this value in your C++ program code you have to define this value before including any SeqAn header!
+ *
+ * If set to 1 then @link TestSystemMacros#SEQAN_ENABLE_DEBUG @endlink is forced to 1 as well.
+ *
+ * @see TestSystemMacros#SEQAN_ENABLE_DEBUG
+ */
+
+// Set default for SEQAN_ENABLE_TESTING.
+#ifndef SEQAN_ENABLE_TESTING
+#define SEQAN_ENABLE_TESTING 0
+#endif  // #ifndef SEQAN_ENABLE_TESTING
+
+// Force-enable debugging if testing is enabled.
+#if SEQAN_ENABLE_TESTING
+#undef SEQAN_ENABLE_DEBUG
+#define SEQAN_ENABLE_DEBUG 1
+#endif  // #if SEQAN_ENABLE_TESTING
+
+/*!
+ * @macro TestSystemMacros#SEQAN_ENABLE_DEBUG
+ * @headerfile <seqan/basic.h>
+ * @brief Indicates whether debugging is enabled.
+ *
+ * @signature SEQAN_ENABLE_DEBUG
+ *
+ * When enabled (set to 1) then debugging is enabled.  This means the assertion macros are expanded to actual test code.
+ * If debugging (and testing) is disabled then the SeqAn assertion macros expand to no instructions.
+ *
+ * Note that <tt>NDEBUG</tt> is set undefined if <tt>SEQAN_ENABLE_DEBUG</tt> = 1
+ * and <tt>NDEBUG</tt> is set to 1 if <tt>SEQAN_ENABLE_DEBUG</tt> = 0.
+ *
+ * If you want to change this value then you have to define this value before including any SeqAn header.
+ *
+ * Force-enabled if SEQAN_ENABLE_TESTING is set to 1.
+ *
+ * @see TestSystemMacros#SEQAN_ENABLE_TESTING
+ */
+
+// Set default for SEQAN_ENABLE_DEBUG.
+#ifndef SEQAN_ENABLE_DEBUG
+#define SEQAN_ENABLE_DEBUG 0
+#endif  // #ifndef SEQAN_ENABLE_DEBUG
+
+#if !SEQAN_ENABLE_DEBUG
+#define NDEBUG 1
+#else
+#undef NDEBUG
+#endif // #if !SEQAN_ENABLE_DEBUG
+
+/*!
+ * @macro TestSystemMacros#SEQAN_TYPEDEF_FOR_DEBUG
+ * @headerfile <seqan/basic.h>
+ * @brief When using typedefs that are only used in debug mode then they have to be marked with macro.
+ *
+ * @signature SEQAN_TYPEDE_FOR_DEBUG
+ *
+ * @section Examples
+ *
+ * @code{.cpp}
+ * typedef int TInt SEQAN_TYPEDEF_FOR_DEBUG;
+ * @endcode
+ */
+
+#if !SEQAN_ENABLE_DEBUG
+#define SEQAN_TYPEDEF_FOR_DEBUG SEQAN_UNUSED
+#else
+#define SEQAN_TYPEDEF_FOR_DEBUG
+#endif
+
 #include <iostream>  // stdout, stderr
 #include <iomanip>
 #include <cstring>   // strrpos
@@ -55,9 +155,9 @@
 #include <string>
 #include <typeinfo>
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 #include <Windows.h>    // DeleteFile()
-#else  // #ifdef PLATFORM_WINDOWS
+#else  // #ifdef STDLIB_VS
 #include <unistd.h>     // unlink()
 #include <sys/stat.h>   // mkdir()
 #include <dirent.h>     // DIR
@@ -66,7 +166,7 @@
 #endif  // #if SEQAN_HAS_EXECINFO
 #include <cxxabi.h>     // __cxa_demangle()
 #include <signal.h>
-#endif  // #ifdef PLATFORM_WINDOWS
+#endif  // #ifdef STDLIB_VS
 
 // ============================================================================
 // Classes
@@ -83,7 +183,7 @@ namespace seqan {
 template <typename T>
 struct Demangler
 {
-#ifdef PLATFORM_GCC
+#if !defined(STDLIB_VS)
     char *data_begin;
 #else
     const char *data_begin;
@@ -102,7 +202,7 @@ struct Demangler
 
     ~Demangler()
     {
-#ifdef PLATFORM_GCC
+#if !defined(STDLIB_VS)
         free(data_begin);
 #endif
     }
@@ -119,7 +219,7 @@ struct Demangler
 template <typename T>
 inline void _demangle(Demangler<T> & me, T const & t)
 {
-#ifdef PLATFORM_GCC
+#if !defined(STDLIB_VS)
     int status;
     me.data_begin = abi::__cxa_demangle(typeid(t).name(), NULL, NULL, &status);
 #else
@@ -145,9 +245,7 @@ inline const char * toCString(Demangler<T> const & me)
  * @brief The assertion and check macros provided by SeqAn.
  *
  * Assertions are checks performed at runtime when debugging is enabled.  Debugging is enabled by defining the
- * preprocessor symbol <tt>SEQAN_ENABLE_DEBUG</tt> as <tt>1</tt> (the default is to set it to <tt>0</tt> if the common C
- * macro <tt>NDEBUG</tt> is defined and to set it to <tt>1</tt> otherwise.  When using the SeqAn build system or the
- * CMake FindSeqAn.cmake module, this is automatically set appropriately.
+ * preprocessor symbol <tt>SEQAN_ENABLE_DEBUG</tt> as <tt>1</tt>.
  *
  * The SEQAN_CHECK and SEQAN_FAIL macro always lead to an exit of the program with a non-0 return value.
  */
@@ -260,105 +358,6 @@ inline const char * toCString(Demangler<T> const & me)
         }                                                               \
     } while (false)
 
-// SeqAn's has three global debug/testing levels: testing, debug and
-// release.  Depending on the level, the SEQAN_ASSERT_* macros will be enabled.
-//
-// Note that this is independent of the <cassert> assertions and
-// NDEBUG being defined.
-//
-// The levels are enabled by the values of the macros
-// SEQAN_ENABLE_TESTING and SEQAN_ENABLE_DEBUG.  By setting a macro to
-// 0, one disables the level and by setting the macro to 1, one
-// enables a level.  Enabling testing also enables debug, overriding a
-// value of 0 for SEQAN_ENABLE_DEBUG.
-//
-// If the level is release (both the macros for debug and testing are
-// 0), the assertions will be disabled.  If the level is debug then
-// the assertions will be enabled.
-//
-// The default is to enable debugging but disable testing.
-//
-// You can print the current level using the function seqan::printDebugLevel().
-
-/*!
- * @macro TestSystemMacros#SEQAN_ENABLE_TESTING
- * @headerfile <seqan/basic.h>
- * @brief Indicates whether testing is enabled.
- *
- * @signature SEQAN_ENABLE_TESTING
- *
- * When set to 1, testing is enabled.  If it is undefined or set to 0, testing is disabled.  This means the macros for
- * the tests (SEQAN_BEGIN_TESTSUITE, SEQAN_DEFINE_TEST, SEQAN_CALL_TEST, and SEQAN_END_TESTSUITE) will be enabled.  This
- * makes failing assertions raise exceptions instead of calling <tt>abort()</tt> (which terminates the program).
- *
- * By default, this is set to 0.
- *
- * If you want to change this value in your C++ program code you have to define this value before including any SeqAn header!
- *
- * If set to 1 then @link TestSystemMacros#SEQAN_ENABLE_DEBUG @endlink is forced to 1 as well.
- *
- * @see TestSystemMacros#SEQAN_ENABLE_DEBUG
- */
-
-// Set default for SEQAN_ENABLE_TESTING.
-#ifndef SEQAN_ENABLE_TESTING
-#define SEQAN_ENABLE_TESTING 0
-#endif  // #ifndef SEQAN_ENABLE_TESTING
-
-/*!
- * @macro TestSystemMacros#SEQAN_ENABLE_DEBUG
- * @headerfile <seqan/basic.h>
- * @brief Indicates whether debugging is enabled.
- *
- * @signature SEQAN_ENABLE_DEBUG
- *
- * When enabled (set to 1) then debugging is enabled.  This means the assertion macros are expanded to actual test code.
- * If debugging (and testing) is disabled then the SeqAn assertion macros expand to no instructions.
- *
- * By default, thi sis set to 0 if <tt>NDEBUG</tt> is defined and set to 1 if <tt>NDEBUG</tt> is not defined.
- *
- * If you want to change this value then you have to define this value before including any SeqAn header.
- *
- * Force-enabled if SEQAN_ENABLE_TESTING is set to 1.
- *
- * @see TestSystemMacros#SEQAN_ENABLE_TESTING
- */
-
-// Set default for SEQAN_ENABLE_DEBUG.
-#ifndef SEQAN_ENABLE_DEBUG
-  #ifdef NDEBUG
-    #define SEQAN_ENABLE_DEBUG 0
-  #else  // #ifdef NDEBUG
-    #define SEQAN_ENABLE_DEBUG 1
-  #endif  // #ifdef NDEBUG
-#endif  // #ifndef SEQAN_ENABLE_DEBUG
-
-// Force-enable debugging if testing is enabled.
-#if SEQAN_ENABLE_TESTING
-#undef SEQAN_ENABLE_DEBUG
-#define SEQAN_ENABLE_DEBUG 1
-#endif  // #if SEQAN_ENABLE_TESTING
-
-/*!
- * @macro TestSystemMacros#SEQAN_TYPEDEF_FOR_DEBUG
- * @headerfile <seqan/basic.h>
- * @brief When using typedefs that are only used in debug mode then they have to be marked with macro.
- *
- * @signature SEQAN_TYPEDE_FOR_DEBUG
- *
- * @section Examples
- *
- * @code{.cpp}
- * typedef int TInt SEQAN_TYPEDEF_FOR_DEBUG;
- * @endcode
- */
-
-#if !SEQAN_ENABLE_DEBUG
-#define SEQAN_TYPEDEF_FOR_DEBUG SEQAN_UNUSED
-#else
-#define SEQAN_TYPEDEF_FOR_DEBUG
-#endif
-
 namespace seqan {
 
 // SEQAN_CXX_FLAGS_ contains the compiler flags, SEQAN_CXX_FLAGS is a string
@@ -388,9 +387,10 @@ void printDebugLevel(TStream & stream)
     stream << "SEQAN_ENABLE_DEBUG == " << SEQAN_ENABLE_DEBUG << std::endl;
     stream << "SEQAN_ENABLE_TESTING == " << SEQAN_ENABLE_TESTING << std::endl;
     stream << "SEQAN_CXX_FLAGS == \"" << SEQAN_CXX_FLAGS << "\"" << std::endl;
+    stream << "SEQAN_ASYNC_IO == " << SEQAN_ASYNC_IO << std::endl;
 }
 
-#if defined(PLATFORM_WINDOWS) || !SEQAN_HAS_EXECINFO
+#if !SEQAN_HAS_EXECINFO
 
 template <typename TSize>
 void printStackTrace(TSize /*maxFrames*/)
@@ -523,7 +523,7 @@ volatile int signalHandlersDummy_ = SignalHandlersDummy_<void>::i;
 }
 
 #endif  // #if SEQAN_ENABLE_DEBUG
-#endif  // defined(PLATFORM_WINDOWS) || !SEQAN_HAS_EXECINFO
+#endif  // !SEQAN_HAS_EXECINFO
 
 
 // Namespace for the testing infrastructure.
@@ -640,7 +640,7 @@ struct StaticData
 /*
 inline
 int openTempFile() {
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     char * fileName = _tempnam(NULL, "SQN");
     if (!fileName) {
         ::std::cerr << "Cannot create a unique temporary filename" << ::std::endl;
@@ -655,7 +655,7 @@ int openTempFile() {
     int result = mkstemp(filenameBuffer);
     unlink(filenameBuffer);
     return result;
-#endif  // ifdef PLATFORM_WINDOWS
+#endif  // ifdef STDLIB_VS
 }
 */
 
@@ -665,7 +665,7 @@ inline
 const char * tempFileName()
 {
     static char fileNameBuffer[1000];
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     static char filePathBuffer[1000];
     //  Gets the temp path env string (no guarantee it's a valid path).
     DWORD dwRetVal = 0;
@@ -695,7 +695,7 @@ const char * tempFileName()
     strcat(fileNameBuffer, "\\test_file");
     return fileNameBuffer;
 
-#else  // ifdef PLATFORM_WINDOWS_VS
+#else  // ifdef STDLIB_VS
     strcpy(fileNameBuffer, "/tmp/SEQAN.XXXXXXXXXXXXXXXXXXXX");
     mode_t cur_umask = umask(S_IRWXO | S_IRWXG);  // to silence Coverity warning
     int _tmp = mkstemp(fileNameBuffer);
@@ -709,7 +709,7 @@ const char * tempFileName()
     strcat(fileNameBuffer, "/test_file");
     return fileNameBuffer;
 
-#endif  // ifdef PLATFORM_WINDOWS
+#endif  // ifdef STDLIB_VS
 }
 
 // Initialize the testing infrastructure.
@@ -743,7 +743,7 @@ void beginTestSuite(const char * testSuiteName, const char * argv0)
         strncpy(StaticData::basePath(), argv0, len);
     }
 
-#ifdef PLATFORM_WINDOWS_VS
+#ifdef STDLIB_VS
     // Set CRT reporting such that everything goes to stderr and there are
     // no popups causing timeouts.
     _set_error_mode(_OUT_TO_STDERR);
@@ -753,7 +753,70 @@ void beginTestSuite(const char * testSuiteName, const char * argv0)
     _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR);
     _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE);
     _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);
-#endif  // PLATFORM_WINDOWS_VS
+#endif  // STDLIB_VS
+}
+
+// cut off '/test_file' from tempFilename
+// returns fileNameBuffer
+inline
+std::string _stripFileName(const char * tempFilename)
+{
+    std::string s(tempFilename);
+    return s.substr(0, s.find_last_of("\\/"));
+}
+
+// delete temporary file from /tmp/ directory
+// needs only the directory name (fileNameBuffer)
+inline
+int _deleteTempFile(std::string tempFilename)
+{
+#ifdef STDLIB_VS
+    HANDLE hFind;
+    WIN32_FIND_DATA data;
+
+    std::string temp = tempFilename.c_str() + std::string("\\*");
+    hFind = FindFirstFile(temp.c_str(), &data);
+    if (hFind != INVALID_HANDLE_VALUE)
+    {
+        do
+        {
+            std::string tempp = tempFilename.c_str() + std::string("\\") + data.cFileName;
+            if (strcmp(data.cFileName, ".") == 0 || strcmp(data.cFileName, "..") == 0)
+                continue;  // Skip these.
+            DeleteFile(tempp.c_str());
+        }
+        while (FindNextFile(hFind, &data));
+        FindClose(hFind);
+    }
+
+    if (!RemoveDirectory(tempFilename.c_str()))
+    {
+        std::cerr << "ERROR: Could not delete directory " << tempFilename << "\n";
+        return 0;
+    }
+#else  // #ifdef STDLIB_VS
+    DIR * dpdf;
+    struct dirent * epdf;
+
+    dpdf = opendir(tempFilename.c_str());
+    if (dpdf != NULL)
+    {
+        while ((epdf = readdir(dpdf)) != NULL)
+        {
+            std::string temp = tempFilename.c_str() + std::string("/") + std::string(epdf->d_name);
+            unlink(temp.c_str());
+        }
+    }
+
+    rmdir(tempFilename.c_str());
+    if (closedir(dpdf) != 0)
+    {
+        std::cerr << "ERROR: Could not delete directory " << tempFilename << "\n";
+        return 0;
+    }
+#endif  // #ifdef STDLIB_VS
+
+    return 1;
 }
 
 // Run test suite finalization.
@@ -767,57 +830,17 @@ int endTestSuite()
 {
     delete[] StaticData::basePath();
 
+    // Delete all temporary files that still exist.
+    for (unsigned i = 0; i < StaticData::tempFileNames().size(); ++i)
+        if (!_deleteTempFile(StaticData::tempFileNames()[i]))
+            ++StaticData::errorCount();
+
     std::cout << "**************************************" << std::endl;
     std::cout << " Total Tests: " << StaticData::testCount() << std::endl;
     std::cout << " Skipped:     " << StaticData::skippedCount() << std::endl;
     std::cout << " Errors:      " << StaticData::errorCount() << std::endl;
     std::cout << "**************************************" << std::endl;
 
-    // Delete all temporary files that still exist.
-    for (unsigned i = 0; i < StaticData::tempFileNames().size(); ++i)
-    {
-#ifdef PLATFORM_WINDOWS
-        HANDLE hFind;
-        WIN32_FIND_DATA data;
-
-        std::string temp = StaticData::tempFileNames()[i].c_str() + std::string("\\*");
-        hFind = FindFirstFile(temp.c_str(), &data);
-        if (hFind != INVALID_HANDLE_VALUE)
-        {
-            do
-            {
-                std::string tempp = StaticData::tempFileNames()[i].c_str() + std::string("\\") + data.cFileName;
-                if (strcmp(data.cFileName, ".") == 0 || strcmp(data.cFileName, "..") == 0)
-                    continue;  // Skip these.
-                if (!DeleteFile(tempp.c_str()))
-                    std::cerr << "WARNING: Could not delete file " << tempp << "\n";
-            }
-            while (FindNextFile(hFind, &data));
-            FindClose(hFind);
-        }
-
-        if (!RemoveDirectory(StaticData::tempFileNames()[i].c_str()))
-            std::cerr << "WARNING: Could not delete directory " << StaticData::tempFileNames()[i] << "\n";
-#else  // #ifdef PLATFORM_WINDOWS
-        DIR * dpdf;
-        struct dirent * epdf;
-
-        dpdf = opendir(StaticData::tempFileNames()[i].c_str());
-        if (dpdf != NULL)
-        {
-            while ((epdf = readdir(dpdf)) != NULL)
-            {
-                std::string temp = StaticData::tempFileNames()[i].c_str() + std::string("/") + std::string(epdf->d_name);
-                unlink(temp.c_str());
-            }
-        }
-
-        rmdir(StaticData::tempFileNames()[i].c_str());
-        if (closedir(dpdf) != 0)
-            std::cerr << "WARNING: Could not delete directory " << StaticData::tempFileNames()[i] << "\n";
-#endif  // #ifdef PLATFORM_WINDOWS
-    }
-
     if (StaticData::errorCount() != 0)
         return 1;
 
@@ -1716,7 +1739,7 @@ inline void fail()
 #endif  // #if SEQAN_ENABLE_TESTING
 
 
-#if SEQAN_ENABLE_DEBUG && !defined(__CUDA_ARCH__)
+#if SEQAN_ENABLE_DEBUG
 
 /*!
  * @macro AssertMacros#SEQAN_ASSERT
@@ -2234,27 +2257,6 @@ inline void fail()
         }                                                             \
     } while (false)
 
-
-#elif SEQAN_ENABLE_DEBUG && defined(__CUDA_ARCH__)
-
-#define SEQAN_ASSERT_EQ(_arg1, _arg2) do { assert(_arg1 == _arg2); } while (false)
-#define SEQAN_ASSERT_EQ_MSG(_arg1, _arg2, ...) do { assert(_arg1 == _arg2); } while (false)
-#define SEQAN_ASSERT_NEQ(_arg1, _arg2) do { assert(_arg1 != _arg2); } while (false)
-#define SEQAN_ASSERT_NEQ_MSG(_arg1, _arg2, ...) do { assert(_arg1 != _arg2); } while (false)
-#define SEQAN_ASSERT_LEQ(_arg1, _arg2) do { assert(_arg1 <= _arg2); } while (false)
-#define SEQAN_ASSERT_LEQ_MSG(_arg1, _arg2, ...) do { assert(_arg1 <= _arg2); } while (false)
-#define SEQAN_ASSERT_LT(_arg1, _arg2) do { assert(_arg1 < _arg2); } while (false)
-#define SEQAN_ASSERT_LT_MSG(_arg1, _arg2, ...) do { assert(_arg1 < _arg2); } while (false)
-#define SEQAN_ASSERT_GEQ(_arg1, _arg2) do { assert(_arg1 >= _arg2); } while (false)
-#define SEQAN_ASSERT_GEQ_MSG(_arg1, _arg2, ...) do { assert(_arg1 >= _arg2); } while (false)
-#define SEQAN_ASSERT_GT(_arg1, _arg2) do { assert(_arg1 > _arg2); } while (false)
-#define SEQAN_ASSERT_GT_MSG(_arg1, _arg2, ...) do { assert(_arg1 > _arg2); } while (false)
-#define SEQAN_ASSERT(_arg1) do { assert(_arg1); } while (false)
-#define SEQAN_ASSERT_MSG(_arg1, ...) do { assert(_arg1); } while (false)
-#define SEQAN_ASSERT_NOT(_arg1) do { assert(!_arg1); } while (false)
-#define SEQAN_ASSERT_NOT_MSG(_arg1, ...) do { assert(!_arg1); } while (false)
-#define SEQAN_ASSERT_FAIL(...) do { assert(false); } while (false)
-
 #else
 
 #define SEQAN_ASSERT_EQ(_arg1, _arg2) do {} while (false)
@@ -2275,7 +2277,7 @@ inline void fail()
 #define SEQAN_ASSERT_NOT_MSG(_arg1, ...) do {} while (false)
 #define SEQAN_ASSERT_FAIL(...) do {} while (false)
 
-#endif  // #if defined(SEQAN_ENABLE_DEBUG) && !defined(__CUDA_ARCH__)
+#endif  // #if defined(SEQAN_ENABLE_DEBUG)
 
 // Returns a string (of type char*) with the path to the called binary.
 //
diff --git a/include/seqan/basic/fundamental_comparison.h b/include/seqan/basic/fundamental_comparison.h
index 6bfe19b..ca13458 100644
--- a/include/seqan/basic/fundamental_comparison.h
+++ b/include/seqan/basic/fundamental_comparison.h
@@ -45,9 +45,9 @@ namespace seqan {
 
 // Forwards for Metafunctions and Functions.
 template <typename T> struct ValueSize;
-template <typename T> SEQAN_HOST_DEVICE inline typename ValueSize<T>::Type valueSize();
+template <typename T> inline typename ValueSize<T>::Type valueSize();
 // Forwards for Metafunctions and Functions.
-template <typename TValue> SEQAN_HOST_DEVICE inline typename ValueSize<TValue>::Type ordValue(TValue const & c);
+template <typename TValue> inline typename ValueSize<TValue>::Type ordValue(TValue const & c);
 
 // ============================================================================
 // Tags, Classes, Enums
@@ -127,19 +127,19 @@ struct CompareType:
 // that is imposed by ordValue
 
 template <typename TValue1, typename TValue2>
-SEQAN_HOST_DEVICE inline bool ordLess(TValue1 const & left, TValue2 const & right)
+inline bool ordLess(TValue1 const & left, TValue2 const & right)
 {
     return ordValue(left) < ordValue(static_cast<TValue1>(right));
 }
 
 template <typename TValue1, typename TValue2>
-SEQAN_HOST_DEVICE inline bool ordEqual(TValue1 const & left, TValue2 const & right)
+inline bool ordEqual(TValue1 const & left, TValue2 const & right)
 {
     return ordValue(left) == ordValue(static_cast<TValue1>(right));
 }
 
 template <typename TValue1, typename TValue2>
-SEQAN_HOST_DEVICE inline bool ordGreater(TValue1 const & left, TValue2 const & right)
+inline bool ordGreater(TValue1 const & left, TValue2 const & right)
 {
     return ordValue(left) > ordValue(static_cast<TValue1>(right));
 }
diff --git a/include/seqan/basic/fundamental_conversion.h b/include/seqan/basic/fundamental_conversion.h
index 9cfc67f..6508247 100644
--- a/include/seqan/basic/fundamental_conversion.h
+++ b/include/seqan/basic/fundamental_conversion.h
@@ -111,7 +111,7 @@ struct Convert
 // NOTE(doering): Can copy or reinterpret, depending on Convert::Type
 
 template <typename TTarget, typename T, typename TSource>
-SEQAN_HOST_DEVICE inline typename Convert<TTarget, TSource>::Type
+inline typename Convert<TTarget, TSource>::Type
 convertImpl(Convert<TTarget, T> const,
             TSource const & source)
 {
@@ -143,7 +143,7 @@ convertImpl(Convert<TTarget, T> const,
  */
 
 template <typename TTarget, typename TSource>
-SEQAN_HOST_DEVICE inline typename Convert<TTarget, TSource>::Type
+inline typename Convert<TTarget, TSource>::Type
 convert(TSource const & source)
 {
     return convertImpl(Convert<TTarget, TSource>(), source);
diff --git a/include/seqan/basic/holder_simple.h b/include/seqan/basic/holder_simple.h
index 6eec659..dfd2f61 100644
--- a/include/seqan/basic/holder_simple.h
+++ b/include/seqan/basic/holder_simple.h
@@ -47,12 +47,6 @@ namespace seqan {
 // Tags, Classes, Enums
 // ============================================================================
 
-#ifdef PLATFORM_WINDOWS_VS
-// Disable warning C4521 locally (multiple copy constructors).
-#pragma warning( push )
-#pragma warning( disable: 4521 )
-#endif  // PLATFORM_WINDOWS_VS
-
 /*!
  * @class SimpleHolder
  * @extends Holder
@@ -135,11 +129,6 @@ struct Holder<TValue, Simple>
     }
 };
 
-#ifdef PLATFORM_WINDOWS_VS
-// Set old warning C4521 state again (multiple copy constructors).
-#pragma warning( pop )
-#endif  // PLATFORM_WINDOWS_VS
-
 // ============================================================================
 // Metafunctions
 // ============================================================================
diff --git a/include/seqan/basic/iterator_adapt_std.h b/include/seqan/basic/iterator_adapt_std.h
index 338eeb5..19cb783 100644
--- a/include/seqan/basic/iterator_adapt_std.h
+++ b/include/seqan/basic/iterator_adapt_std.h
@@ -56,15 +56,20 @@ namespace std
         typedef typename seqan::Reference<TIter>::Type reference; // nolint
     };
 
-	// there is a bug in vc2015 stl, it doesnt check the iterator_traits correctly
-	// I have reported this bug to microsoft already (filed as DevDiv#1208117). 
-	// For now, this is a workaround.
-#if _MSC_VER == 1900
-	template<class _Ty, class Tag>
-	struct _Is_iterator<typename seqan::Iter<_Ty, Tag> >
-		: true_type
-	{
-	};
+// there is a bug in vc2015 stl, it doesnt check the iterator_traits correctly
+// I have reported this bug to microsoft already (filed as DevDiv#1208117).
+// For now, this is a workaround.
+// Bug was fixed with VS2015 Update 2 -> disable workaround for >= VS2015.2
+//
+// NOTE(marehr): Clang/c2 compiler sets _MSC_FULL_VER = 190000000 and there
+// seems to be no obvious way to detect which patch level the current STDLIB_VS
+// has.
+#if (_MSC_VER == 1900) && (_MSC_FULL_VER < 190023918) && !defined(COMPILER_CLANG)
+template<class _Ty, class Tag>
+struct _Is_iterator<typename seqan::Iter<_Ty, Tag> >
+    : true_type
+{
+};
 #endif
 }
 
diff --git a/include/seqan/basic/iterator_adaptor.h b/include/seqan/basic/iterator_adaptor.h
index 8ff1d4e..006906e 100644
--- a/include/seqan/basic/iterator_adaptor.h
+++ b/include/seqan/basic/iterator_adaptor.h
@@ -96,7 +96,7 @@ public:
     // Constructors
     // ------------------------------------------------------------------------
 
-    SEQAN_HOST_DEVICE
+   
     Iter() : data_container()
     {
         data_iterator = TIterator();
@@ -112,14 +112,14 @@ public:
     }
     */
 
-    SEQAN_HOST_DEVICE
+   
     Iter(typename Parameter_<TContainer>::Type container_, TIterator it_)
             : data_container(_toPointer(container_)),
               data_iterator(it_)
     {
     }
 
-    SEQAN_HOST_DEVICE
+   
     Iter(Iter const & other_)
             : data_container(other_.data_container),
               data_iterator(other_.data_iterator)
@@ -128,7 +128,7 @@ public:
 
     // TODO(holtgrew): Use this technique to the other Iter specializations.
     template <typename TContainer_, typename TIterator2>
-    SEQAN_HOST_DEVICE
+   
     Iter(Iter<TContainer_, AdaptorIterator<TIterator2, TSpec> > const & other,
          SEQAN_CTOR_ENABLE_IF(IsSameType<TContainer, TContainer_ const>)) :
             data_container(other.data_container), data_iterator(other.data_iterator)
@@ -140,7 +140,7 @@ public:
     // Assignment Operators;  Have to be defined in class.
     // ------------------------------------------------------------------------
 
-    SEQAN_HOST_DEVICE
+   
     Iter &
     operator=(Iter const & other_)
     {
@@ -151,7 +151,7 @@ public:
 
     template <typename TContainer_>
     SEQAN_FUNC_ENABLE_IF(IsSameType<TContainer, TContainer_ const>, Iter &)
-    SEQAN_HOST_DEVICE
+   
     operator=(Iter<TContainer_, AdaptorIterator<TIterator, TSpec> > const & other_)
     {
         data_container = other_.data_container;
@@ -165,14 +165,14 @@ public:
 
     // For chaining behaviour of operator->(), see http://stackoverflow.com/a/8782794/84349
 
-    SEQAN_HOST_DEVICE
+   
     TIterator &
     operator->()
     {
         return data_iterator;
     }
 
-    SEQAN_HOST_DEVICE
+   
     TIterator const &
     operator->() const
     {
@@ -183,7 +183,7 @@ public:
     // Conversion Operators;  Have to be defined in class.
     // ------------------------------------------------------------------------
 
-    SEQAN_HOST_DEVICE
+   
     operator TIterator() const
     {
         return data_iterator;
@@ -249,28 +249,28 @@ struct Chunk<Iter<TContainer, AdaptorIterator<TValue*, TSpec> > >
 // ----------------------------------------------------------------------------
 
 //template <typename TContainer, typename TIterator, typename TSpec>
-//inline SEQAN_HOST_DEVICE typename Parameter_<TContainer>::Type
+//inline typename Parameter_<TContainer>::Type
 //container(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me)
 //{
 //    return _toParameter<TContainer>(me.data_container);
 //}
 //
 //template <typename TContainer, typename TIterator, typename TSpec>
-//inline SEQAN_HOST_DEVICE typename Parameter_<TContainer>::Type
+//inline typename Parameter_<TContainer>::Type
 //container(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me)
 //{
 //    return _toParameter<TContainer>(me.data_container);
 //}
 
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE TContainer &
+inline TContainer &
 container(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me)
 {
     return _referenceCast<TContainer &>(me.data_container);
 }
 
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE TContainer &
+inline TContainer &
 container(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me)
 {
     return container(const_cast<Iter<TContainer, AdaptorIterator<TIterator, TSpec> > &>(me));
@@ -292,7 +292,7 @@ container(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me)
 
 // TODO(holtgrew): Also defined in index module, change documentation?
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE void
+inline void
 setContainer(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me,
              typename Parameter_<TContainer>::Type container_)
 {
@@ -316,14 +316,14 @@ setContainer(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me,
  */
 
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE TIterator &
+inline TIterator &
 hostIterator(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me)
 {
     return me.data_iterator;
 }
 
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE TIterator const &
+inline TIterator const &
 hostIterator(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me)
 {
     return me.data_iterator;
@@ -334,14 +334,14 @@ hostIterator(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me)
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE typename Position<Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const>::Type
+inline typename Position<Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const>::Type
 position(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me)
 {
     return hostIterator(me) - begin(container(me), Standard());
 }
 
 template <typename TContainer, typename TIterator, typename TSpec, typename TContainer2>
-inline SEQAN_HOST_DEVICE typename Position<Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const>::Type
+inline typename Position<Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const>::Type
 position(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me,
          TContainer2 const &)
 {
@@ -363,7 +363,7 @@ position(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me,
  */
 
 template <typename TContainer, typename TIterator, typename TSpec, typename TPosition>
-inline SEQAN_HOST_DEVICE void
+inline void
 setPosition(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me,
             TPosition pos_)
 {
@@ -375,14 +375,14 @@ setPosition(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me,
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE typename Reference<Iter<TContainer, AdaptorIterator<TIterator, TSpec> > >::Type
+inline typename Reference<Iter<TContainer, AdaptorIterator<TIterator, TSpec> > >::Type
 value(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me)
 {
     return value(hostIterator(me));
 }
 
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE typename Reference<Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const>::Type
+inline typename Reference<Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const>::Type
 value(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me)
 {
     return value(hostIterator(me));
@@ -393,14 +393,14 @@ value(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me)
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE typename GetValue<Iter<TContainer, AdaptorIterator<TIterator, TSpec> > >::Type
+inline typename GetValue<Iter<TContainer, AdaptorIterator<TIterator, TSpec> > >::Type
 getValue(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me)
 {
     return getValue(hostIterator(me));
 }
 
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE typename GetValue<Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const>::Type
+inline typename GetValue<Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const>::Type
 getValue(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me)
 {
     return getValue(hostIterator(me));
@@ -411,7 +411,7 @@ getValue(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me)
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TIterator, typename TSpec, typename TValue>
-inline SEQAN_HOST_DEVICE void
+inline void
 assignValue(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me,
             TValue const & _value)
 {
@@ -419,7 +419,7 @@ assignValue(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me,
 }
 
 template <typename TContainer, typename TIterator, typename TSpec, typename TValue>
-inline SEQAN_HOST_DEVICE void
+inline void
 assignValue(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me,
             TValue const & _value)
 {
@@ -431,14 +431,14 @@ assignValue(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me,
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TIterator, typename TSpec, typename TValue>
-inline SEQAN_HOST_DEVICE void
+inline void
 moveValue(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me,
           TValue const & _value)
 {
     moveValue(hostIterator(me), _value);
 }
 template <typename TContainer, typename TIterator, typename TSpec, typename TValue>
-inline SEQAN_HOST_DEVICE void
+inline void
 moveValue(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me,
           TValue const & _value)
 {
@@ -450,7 +450,7 @@ moveValue(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me,
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE bool
+inline bool
 operator==(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & left,
            Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & right)
 {
@@ -460,7 +460,7 @@ operator==(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & left,
 // TODO(weese:) Why would we need IterComplementConst here? Disabled it.
 
 //template <typename TContainer, typename TIterator, typename TSpec>
-//inline SEQAN_HOST_DEVICE bool
+//inline bool
 //operator==(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & left,
 //           typename IterComplementConst<TIterator>::Type const & right)
 //{
@@ -468,7 +468,7 @@ operator==(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & left,
 //}
 
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE bool
+inline bool
 operator==(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & left,
            TIterator const & right)
 {
@@ -478,7 +478,7 @@ operator==(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & left,
 // TODO(weese:) Why would we need IterComplementConst here? Disabled it.
 
 //template <typename TContainer, typename TIterator, typename TSpec>
-//inline SEQAN_HOST_DEVICE bool
+//inline bool
 //operator==(typename IterComplementConst<TIterator>::Type const & left,
 //             Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & right)
 //{
@@ -486,7 +486,7 @@ operator==(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & left,
 //}
 
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE bool
+inline bool
 operator==(TIterator const & left,
            Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & right)
 {
@@ -498,7 +498,7 @@ operator==(TIterator const & left,
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE bool
+inline bool
 operator!=(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & left,
            Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & right)
 {
@@ -508,7 +508,7 @@ operator!=(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & left,
 // TODO(weese:) Why would we need IterComplementConst here? Disabled it.
 
 //template <typename TContainer, typename TIterator, typename TSpec>
-//inline SEQAN_HOST_DEVICE bool
+//inline bool
 //operator!=(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & left,
 //           typename IterComplementConst<TIterator>::Type const & right)
 //{
@@ -516,7 +516,7 @@ operator!=(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & left,
 //}
 
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE bool
+inline bool
 operator!=(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & left,
            TIterator const & right)
 {
@@ -526,7 +526,7 @@ operator!=(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & left,
 // TODO(weese:) Why would we need IterComplementConst here? Disabled it.
 
 //template <typename TContainer, typename TIterator, typename TSpec>
-//inline SEQAN_HOST_DEVICE bool
+//inline bool
 //operator!=(typename IterComplementConst<TIterator>::Type const & left,
 //           Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & right)
 //{
@@ -534,7 +534,7 @@ operator!=(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & left,
 //}
 
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE bool
+inline bool
 operator!=(TIterator const & left,
            Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & right)
 {
@@ -546,7 +546,7 @@ operator!=(TIterator const & left,
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE void
+inline void
 goNext(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me)
 {
     goNext(hostIterator(me));
@@ -557,7 +557,7 @@ goNext(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me)
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE void
+inline void
 goPrevious(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me)
 {
     goPrevious(hostIterator(me));
@@ -684,7 +684,7 @@ operator-=(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & left,
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TIterator, typename TSpec>
-inline SEQAN_HOST_DEVICE bool
+inline bool
 atEnd(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me)
 {
     return atEnd(hostIterator(me), container(me));
@@ -698,7 +698,7 @@ atEnd(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me)
 
 // Conversion assignment.
 template <typename TTargetContainer, typename TIterator, typename TSpec, typename TSource>
-inline SEQAN_HOST_DEVICE void
+inline void
 assign(Iter<TTargetContainer, AdaptorIterator<TIterator, TSpec> > & target,
        TSource const & source)
 {
diff --git a/include/seqan/basic/iterator_base.h b/include/seqan/basic/iterator_base.h
index 585c9bd..64535e3 100644
--- a/include/seqan/basic/iterator_base.h
+++ b/include/seqan/basic/iterator_base.h
@@ -363,7 +363,7 @@ operator -= (Iter<TContainer, TSpec> & me, TSize size)
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TSpec, typename TContainer2>
-inline SEQAN_HOST_DEVICE typename Position<Iter<TContainer, TSpec> const>::Type
+inline typename Position<Iter<TContainer, TSpec> const>::Type
 position(Iter<TContainer, TSpec> const & me,
          TContainer2 const &)
 {
diff --git a/include/seqan/basic/iterator_interface.h b/include/seqan/basic/iterator_interface.h
index be5a236..3cc7c0b 100644
--- a/include/seqan/basic/iterator_interface.h
+++ b/include/seqan/basic/iterator_interface.h
@@ -322,7 +322,7 @@ position(T * /*me*/)
 }
 
 template <typename TContainer, typename TIterator>
-inline SEQAN_HOST_DEVICE typename Position<TContainer>::Type
+inline typename Position<TContainer>::Type
 position(TIterator const & it,
          TContainer const & me)
 {
@@ -336,7 +336,7 @@ position(TIterator const & it,
 // TODO(doering): Was, wenn der Container leer ist?
 
 template <typename T, typename TContainer>
-inline SEQAN_HOST_DEVICE bool
+inline bool
 atBegin(T const & it,
         TContainer const & cont)
 {
@@ -344,7 +344,7 @@ atBegin(T const & it,
 }
 
 template <typename T>
-inline SEQAN_HOST_DEVICE bool
+inline bool
 atBegin(T const & it)
 {
     return atBegin(it, container(it));
@@ -355,7 +355,7 @@ atBegin(T const & it)
 // ---------------------------------------------------------------------------
 
 template <typename T, typename TContainer>
-inline SEQAN_HOST_DEVICE bool
+inline bool
 atEnd(T const & it,
       TContainer const & cont)
 {
@@ -363,7 +363,7 @@ atEnd(T const & it,
 }
 
 template <typename T>
-inline SEQAN_HOST_DEVICE bool
+inline bool
 atEnd(T const & it)
 {
     return atEnd(it, container(it));
@@ -374,7 +374,7 @@ atEnd(T const & it)
 // ---------------------------------------------------------------------------
 
 template <typename TIterator, typename TContainer>
-inline SEQAN_HOST_DEVICE void
+inline void
 goBegin(TIterator & it,
         TContainer & container)
 {
@@ -390,7 +390,7 @@ goBegin(TIterator & it,
 // }
 
 template <typename TIterator>
-inline SEQAN_HOST_DEVICE void
+inline void
 goBegin(TIterator & it)
 {
     typename Parameter_<typename Container<TIterator>::Type>::Type tmpContainer = container(it);
@@ -402,7 +402,7 @@ goBegin(TIterator & it)
 // ---------------------------------------------------------------------------
 
 template <typename TIterator, typename TContainer>
-inline SEQAN_HOST_DEVICE void
+inline void
 goEnd(TIterator & it,
       TContainer & container)
 {
@@ -410,7 +410,7 @@ goEnd(TIterator & it,
 }
 
 template <typename TIterator, typename TContainer>
-inline SEQAN_HOST_DEVICE void
+inline void
 goEnd(TIterator & it,
       TContainer const & container)
 {
@@ -418,7 +418,7 @@ goEnd(TIterator & it,
 }
 
 template <typename TIterator>
-inline SEQAN_HOST_DEVICE void
+inline void
 goEnd(TIterator & it)
 {
     goEnd(it, container(it));
@@ -429,7 +429,7 @@ goEnd(TIterator & it)
 // ---------------------------------------------------------------------------
 
 template <typename TIterator>
-inline SEQAN_HOST_DEVICE void
+inline void
 goNext(TIterator & it)
 {
     ++it;
@@ -440,7 +440,7 @@ goNext(TIterator & it)
 // ---------------------------------------------------------------------------
 
 template <typename TIterator, typename TDiff>
-inline SEQAN_HOST_DEVICE void
+inline void
 goFurther(TIterator & it,
           TDiff steps)
 {   // return distance type from arbitrary argument
@@ -452,7 +452,7 @@ goFurther(TIterator & it,
 // ---------------------------------------------------------------------------
 
 template <typename TIterator>
-inline SEQAN_HOST_DEVICE void
+inline void
 goPrevious(TIterator & it)
 {
     --it;
@@ -463,7 +463,7 @@ goPrevious(TIterator & it)
 // ---------------------------------------------------------------------------
 
 template <typename TIterator>
-inline SEQAN_HOST_DEVICE
+inline
 typename Difference<TIterator>::Type
 difference(TIterator const & begin,
            TIterator const & end)
diff --git a/include/seqan/basic/iterator_range.h b/include/seqan/basic/iterator_range.h
index b227f30..74e7c23 100644
--- a/include/seqan/basic/iterator_range.h
+++ b/include/seqan/basic/iterator_range.h
@@ -80,19 +80,19 @@ public:
     // Range Constructors
     // ------------------------------------------------------------------------
 
-    SEQAN_HOST_DEVICE
+   
     Range():
         begin(),
         end()
     {}
 
-    SEQAN_HOST_DEVICE
+   
     Range(Range const & range) :
         begin(range.begin),
         end(range.end)
     {}
 
-    SEQAN_HOST_DEVICE
+   
     Range(TIterator const & begin, TIterator const & end):
         begin(begin),
         end(end)
@@ -103,7 +103,7 @@ public:
     // ------------------------------------------------------------------------
 
     template <typename TOtherContainer>
-    SEQAN_HOST_DEVICE
+   
     Range &
     operator= (TOtherContainer &other)
     {
@@ -116,7 +116,7 @@ public:
     // ------------------------------------------------------------------------
 
     template <typename TPos>
-    SEQAN_HOST_DEVICE
+   
     typename Reference<Range>::Type
     operator[] (TPos pos)
     {
@@ -124,7 +124,7 @@ public:
     }
 
     template <typename TPos>
-    SEQAN_HOST_DEVICE
+   
     typename GetValue<Range>::Type
     operator[] (TPos pos) const
     {
@@ -228,14 +228,14 @@ struct Size<Range<TIterator> >
 // ----------------------------------------------------------------------------
 
 template <typename TIterator>
-SEQAN_HOST_DEVICE inline typename Iterator<Range<TIterator>, Standard>::Type
+inline typename Iterator<Range<TIterator>, Standard>::Type
 begin(Range<TIterator> & range, Standard)
 {
     return range.begin;
 }
 
 template <typename TIterator>
-SEQAN_HOST_DEVICE inline typename Iterator<Range<TIterator>, Standard>::Type
+inline typename Iterator<Range<TIterator>, Standard>::Type
 begin(Range<TIterator> const & range, Standard)
 {
     return range.begin;
@@ -246,14 +246,14 @@ begin(Range<TIterator> const & range, Standard)
 // ----------------------------------------------------------------------------
 
 template <typename TIterator>
-SEQAN_HOST_DEVICE inline typename Iterator<Range<TIterator>, Standard>::Type
+inline typename Iterator<Range<TIterator>, Standard>::Type
 end(Range<TIterator> & range, Standard)
 {
     return range.end;
 }
 
 template <typename TIterator>
-SEQAN_HOST_DEVICE inline typename Iterator<Range<TIterator>, Standard>::Type
+inline typename Iterator<Range<TIterator>, Standard>::Type
 end(Range<TIterator> const & range, Standard)
 {
     return range.end;
@@ -264,14 +264,14 @@ end(Range<TIterator> const & range, Standard)
 // ----------------------------------------------------------------------------
 
 template <typename TIterator, typename TPos>
-SEQAN_HOST_DEVICE inline typename Reference<Range<TIterator> >::Type
+inline typename Reference<Range<TIterator> >::Type
 value(Range<TIterator> & range, TPos pos)
 {
     return *(range.begin + pos);
 }
 
 template <typename TIterator, typename TPos>
-SEQAN_HOST_DEVICE inline typename Reference<Range<TIterator> const>::Type
+inline typename Reference<Range<TIterator> const>::Type
 value(Range<TIterator> const & range, TPos pos)
 {
     return *(range.begin + pos);
@@ -282,7 +282,7 @@ value(Range<TIterator> const & range, TPos pos)
 // ----------------------------------------------------------------------------
 
 template <typename TIterator>
-SEQAN_HOST_DEVICE inline typename Size<Range<TIterator> >::Type
+inline typename Size<Range<TIterator> >::Type
 length(Range<TIterator> const & range)
 {
     return range.end - range.begin;
@@ -297,7 +297,7 @@ length(Range<TIterator> const & range)
 // and need to make sure that it has a certain length
 
 template <typename TIterator, typename TSize, typename TExpand>
-SEQAN_HOST_DEVICE inline typename Size< Range<TIterator> >::Type
+inline typename Size< Range<TIterator> >::Type
 resize(
     Range<TIterator> & me,
     TSize new_length,
@@ -314,7 +314,7 @@ resize(
 // ----------------------------------------------------------------------------
 
 template <typename TIterator, typename TContainer>
-SEQAN_HOST_DEVICE inline void
+inline void
 assign(Range<TIterator> &range, TContainer &cont)
 {
     range.begin = begin(cont, Standard());
@@ -326,7 +326,7 @@ assign(Range<TIterator> &range, TContainer &cont)
 // ----------------------------------------------------------------------------
 
 template <typename TIterator, typename TIterator2, typename TIterator3>
-SEQAN_HOST_DEVICE inline void
+inline void
 assignRange(Range<TIterator> &result, TIterator2 const &begin, TIterator3 const &end)
 {
     result.begin = begin;
@@ -334,7 +334,7 @@ assignRange(Range<TIterator> &result, TIterator2 const &begin, TIterator3 const
 }
 
 template <typename TIterator>
-SEQAN_HOST_DEVICE inline
+inline
 Range<TIterator>
 toRange(TIterator const &begin, TIterator const &end)
 {
@@ -342,7 +342,7 @@ toRange(TIterator const &begin, TIterator const &end)
 }
 
 template <typename TContainer>
-SEQAN_HOST_DEVICE inline
+inline
 Range<typename Iterator<TContainer, Standard>::Type>
 toRange(TContainer &cont)
 {
@@ -350,7 +350,7 @@ toRange(TContainer &cont)
 }
 
 template <typename TContainer>
-SEQAN_HOST_DEVICE inline
+inline
 Range<typename Iterator<TContainer const, Standard>::Type>
 toRange(TContainer const &cont)
 {
diff --git a/include/seqan/basic/math_functions.h b/include/seqan/basic/math_functions.h
index 0b62d21..c88c6c6 100644
--- a/include/seqan/basic/math_functions.h
+++ b/include/seqan/basic/math_functions.h
@@ -142,7 +142,7 @@ log2(T val)
 // we define our own Min/Max functions
 
 template<typename Tx_>
-SEQAN_HOST_DEVICE inline
+inline
 const Tx_& _min(const Tx_& _Left, const Tx_& Right_)
 {   // return smaller of _Left and Right_
     if (_Left < Right_)
@@ -152,7 +152,7 @@ const Tx_& _min(const Tx_& _Left, const Tx_& Right_)
 }
 
 template<typename Tx_, typename Ty_>
-SEQAN_HOST_DEVICE inline
+inline
 Tx_ _min(const Tx_& _Left, const Ty_& Right_)
 {   // return smaller of _Left and Right_
     return (Right_ < _Left ? Right_ : _Left);
diff --git a/include/seqan/basic/metaprogramming_math.h b/include/seqan/basic/metaprogramming_math.h
index b4b7bc3..b7eab12 100644
--- a/include/seqan/basic/metaprogramming_math.h
+++ b/include/seqan/basic/metaprogramming_math.h
@@ -142,7 +142,7 @@ template <uint64_t base> struct LogNFloor<0, base> { static const uint64_t VALUE
  * @tparam BASE     The base of the term (<tt>int64_t</tt>).
  * @tparam EXPONENT The exponent of the term (<tt>int64_t</tt>).
  *
- * @return uint64_t b<sup>e</sup
+ * @return uint64_t BASE<sup>EXPONENT</sup>
  *
  * @snippet demos/dox/basic/metaprogramming_math.cpp power call
  */
diff --git a/include/seqan/basic/pair_base.h b/include/seqan/basic/pair_base.h
index 5dd77e5..da173ad 100644
--- a/include/seqan/basic/pair_base.h
+++ b/include/seqan/basic/pair_base.h
@@ -109,19 +109,19 @@ struct Pair
     // Constructors
     // ------------------------------------------------------------------------
 
-    SEQAN_HOST_DEVICE
+   
     Pair() : i1(T1()), i2(T2()) {}
 
     template <typename T1_, typename T2_>
-    SEQAN_HOST_DEVICE
+   
     Pair(Pair<T1_, T2_> const & _p) : i1(_p.i1), i2(_p.i2) {}
 
-    SEQAN_HOST_DEVICE
+   
     Pair(T1 const & _i1, T2 const & _i2) : i1(_i1), i2(_i2) {}
 
     template <typename T1_, typename T2_, typename TSpec__>
     // TODO(holtgrew): explicit?
-    SEQAN_HOST_DEVICE
+   
     Pair(Pair<T1_, T2_, TSpec__> const &_p) :
         i1(getValueI1(_p)), i2(getValueI2(_p))
     {}
@@ -274,7 +274,7 @@ operator<<(TStream & target,
 // There can be no getValue with index since T1 can be != T2.
 
 template <typename T1, typename T2, typename TSpec>
-SEQAN_HOST_DEVICE inline
+inline
 T1 getValueI1(Pair<T1, T2, TSpec> const & pair)
 {
     return pair.i1;
@@ -292,7 +292,7 @@ T1 getValueI1(Pair<T1, T2, TSpec> const & pair)
  */
 
 template <typename T1, typename T2, typename TSpec>
-SEQAN_HOST_DEVICE inline
+inline
 T2 getValueI2(Pair<T1, T2, TSpec> const & pair)
 {
     return pair.i2;
diff --git a/include/seqan/basic/pair_bit_compressed.h b/include/seqan/basic/pair_bit_compressed.h
index 231c8a0..6d7e5d5 100644
--- a/include/seqan/basic/pair_bit_compressed.h
+++ b/include/seqan/basic/pair_bit_compressed.h
@@ -71,9 +71,7 @@ namespace seqan {
  * <tt>getValue()</tt>, <tt>assignValue()</tt>, <tt>moveValue()</tt>, <tt>setValue()</tt> instead.
  */
 
-#ifdef PLATFORM_WINDOWS
-    #pragma pack(push,1)
-#endif
+#pragma pack(push,1)
 template <typename T1, typename T2, unsigned BITSIZE1, unsigned BITSIZE2>
 struct Pair<T1, T2, BitPacked<BITSIZE1, BITSIZE2> >
 {
@@ -98,14 +96,8 @@ struct Pair<T1, T2, BitPacked<BITSIZE1, BITSIZE2> >
     // TODO(holtgrew): explicit?
     inline Pair(Pair<T1_, T2_, TSpec__> const &_p)
             : i1(getValueI1(_p)), i2(getValueI2(_p)) {}
-}
-#ifndef PLATFORM_WINDOWS
-    __attribute__((packed))
-#endif
-    ;
-#ifdef PLATFORM_WINDOWS
-      #pragma pack(pop)
-#endif
+};
+#pragma pack(pop)
 
 // ============================================================================
 // Metafunctions
diff --git a/include/seqan/basic/pair_packed.h b/include/seqan/basic/pair_packed.h
index e21d26d..429e54f 100644
--- a/include/seqan/basic/pair_packed.h
+++ b/include/seqan/basic/pair_packed.h
@@ -71,9 +71,7 @@ namespace seqan {
  * <tt>getValue()</tt>, <tt>assignValue()</tt>, <tt>moveValue()</tt>, <tt>setValue()</tt> instead.
  */
 
-#ifdef PLATFORM_WINDOWS
-    #pragma pack(push,1)
-#endif
+#pragma pack(push,1)
 template <typename T1, typename T2>
 struct Pair<T1, T2, Pack>
 {
@@ -88,24 +86,18 @@ struct Pair<T1, T2, Pack>
     // Constructors
     // ------------------------------------------------------------------------
 
-    SEQAN_HOST_DEVICE Pair() : i1(T1()), i2(T2()) {}
+    Pair() : i1(T1()), i2(T2()) {}
 
-    SEQAN_HOST_DEVICE Pair(Pair const &_p) : i1(_p.i1), i2(_p.i2) {}
+    Pair(Pair const &_p) : i1(_p.i1), i2(_p.i2) {}
 
-    SEQAN_HOST_DEVICE Pair(T1 const & _i1, T2 const & _i2) : i1(_i1), i2(_i2) {}
+    Pair(T1 const & _i1, T2 const & _i2) : i1(_i1), i2(_i2) {}
 
     template <typename T1_, typename T2_, typename TSpec__>
     // TODO(holtgrew): explicit?
-    SEQAN_HOST_DEVICE Pair(Pair<T1_, T2_, TSpec__> const &_p)
+    Pair(Pair<T1_, T2_, TSpec__> const &_p)
             : i1(getValueI1(_p)), i2(getValueI2(_p)) {}
-}
-#ifndef PLATFORM_WINDOWS
-    __attribute__((packed))
-#endif
-    ;
-#ifdef PLATFORM_WINDOWS
-      #pragma pack(pop)
-#endif
+};
+#pragma pack(pop)
 
 // ============================================================================
 // Metafunctions
diff --git a/include/seqan/basic/profiling.h b/include/seqan/basic/profiling.h
index 12d91a2..63d1a20 100644
--- a/include/seqan/basic/profiling.h
+++ b/include/seqan/basic/profiling.h
@@ -86,7 +86,7 @@ namespace seqan
 
 #endif
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     typedef int64_t   ProfileInt_; //IOREV _notio_
 #else
     typedef int64_t ProfileInt_; //IOREV _notio_
@@ -241,7 +241,7 @@ namespace seqan
  * @see cpuTime
  */
 
-    #ifdef PLATFORM_WINDOWS
+    #ifdef STDLIB_VS
 //        inline _proFloat sysTime() { return GetTickCount() * 1e-3; }
         inline _proFloat sysTime() { return ( (_proFloat) clock() ) / CLOCKS_PER_SEC; }
     #else
diff --git a/include/seqan/basic/test_system.h b/include/seqan/basic/test_system.h
index 80afb42..00fd27b 100644
--- a/include/seqan/basic/test_system.h
+++ b/include/seqan/basic/test_system.h
@@ -44,18 +44,18 @@
 #ifndef INCLUDE_SEQAN_BASIC_TEST_SYSTEM_H_
 #define INCLUDE_SEQAN_BASIC_TEST_SYSTEM_H_
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 #include <typeinfo>
-#endif  // #ifdef PLATFORM_WINDOWS
+#endif  // #ifdef STDLIB_VS
 
 #include <seqan/basic/fundamental_tags.h>
 
 #include <memory>
 #include <string>
 
-#ifdef PLATFORM_GCC
+#if !defined(STDLIB_VS)
 #include <cxxabi.h>
-#endif  // #ifdef PLATFORM_GCC
+#endif  // #if !defined(STDLIB_VS)
 
 namespace seqan {
 
@@ -173,6 +173,11 @@ public:
             }
             seqan::ClassTest::endTest();
         }
+
+        // explicitly delete heap allocated resources
+        for (auto test: instance.testDescriptions)
+            delete test;
+
         return seqan::ClassTest::endTestSuite();
     }
 };
@@ -225,15 +230,15 @@ public:
     static std::string getTypeName()
     {
         const char* const name = typeid(T).name();
-#ifdef PLATFORM_GCC
+#if !defined(STDLIB_VS)
         int status = 0;
         char* const readableName = abi::__cxa_demangle(name, 0, 0, &status);
         std::string nameString(status == 0 ? readableName : name);
         free(readableName);
         return nameString;
-#else  // #ifdef PLATFORM_GCC
+#else  // #if !defined(STDLIB_VS)
         return name;
-#endif  // #ifdef PLATFORM_GCC
+#endif  // #if !defined(STDLIB_VS)
     }
 
     static bool make(char const * testCaseName, char const * testName)
diff --git a/include/seqan/basic/triple_packed.h b/include/seqan/basic/triple_packed.h
index 22afd08..f9b2b6e 100644
--- a/include/seqan/basic/triple_packed.h
+++ b/include/seqan/basic/triple_packed.h
@@ -61,9 +61,7 @@ namespace seqan {
  * @tparam T3 The third type of the Triple.
  */
 
-#ifdef PLATFORM_WINDOWS
-    #pragma pack(push,1)
-#endif
+#pragma pack(push,1)
 template <typename T1, typename T2, typename T3>
 struct Triple<T1, T2, T3, Pack>
 {
@@ -90,14 +88,8 @@ struct Triple<T1, T2, T3, Pack>
     template <typename T1_, typename T2_, typename T3_, typename TSpec__>
     inline Triple(Triple<T1_, T2_, T3_, TSpec__> const & _p)
             : i1(getValueI1(_p)), i2(getValueI2(_p)), i3(getValueI3(_p)) {}
-}
-#ifndef PLATFORM_WINDOWS
-    __attribute__((packed))
-#endif
-    ;
-#ifdef PLATFORM_WINDOWS
-    #pragma pack(pop)
-#endif
+};
+#pragma pack(pop)
 
 // ============================================================================
 // Metafunctions
diff --git a/include/seqan/basic/tuple_base.h b/include/seqan/basic/tuple_base.h
index 6b556fb..6cf1085 100644
--- a/include/seqan/basic/tuple_base.h
+++ b/include/seqan/basic/tuple_base.h
@@ -100,7 +100,7 @@ struct Tuple
     // TODO(holtgrew): Return Value<>::Type?
 
     template <typename TPos>
-    SEQAN_HOST_DEVICE inline
+    inline
     typename StoredTupleValue_<TValue>::Type &
     operator[](TPos k)
     {
@@ -110,7 +110,7 @@ struct Tuple
     }
 
     template <typename TPos>
-    SEQAN_HOST_DEVICE inline
+    inline
     typename StoredTupleValue_<TValue>::Type const &
     operator[](TPos k) const
     {
@@ -130,9 +130,7 @@ struct Tuple
 };
 
 
-#ifdef PLATFORM_WINDOWS
-    #pragma pack(push,1)
-#endif
+#pragma pack(push,1)
 template <typename TValue, unsigned SIZE>
 struct Tuple<TValue, SIZE, Pack>
 {
@@ -174,14 +172,8 @@ struct Tuple<TValue, SIZE, Pack>
     {
         return i[k] = source;
     }
-}
-#ifndef PLATFORM_WINDOWS
-    __attribute__((packed))
-#endif
-    ;
-#ifdef PLATFORM_WINDOWS
-      #pragma pack(pop)
-#endif
+};
+#pragma pack(pop)
 
 //template <typename TValue, unsigned SIZE>
 //const unsigned Tuple<TValue, SIZE, Pack>::SIZE = SIZE;
@@ -615,6 +607,19 @@ operator+(Tuple<TValue, SIZE, TSpecL> const & left,
     return tuple;
 }
 
+template <typename TValue1, unsigned SIZE, typename TSpecL, typename TValue2, typename TSpecR>
+inline Tuple<TValue1, SIZE, TSpecL>
+operator+(Tuple<TValue1, SIZE, TSpecL> const & left,
+          Tuple<TValue2, SIZE, TSpecR> const & right)
+{
+    Tuple<TValue1, SIZE, TSpecL>  tuple;
+
+    for (unsigned j = 0; j < SIZE; ++j)
+        tuple[j] = left[j] + right[j];
+
+    return tuple;
+}
+
 }  // namespace seqan
 
 #endif  // #ifndef SEQAN_INCLUDE_SEQAN_BASIC_TUPLE_BASE_H_
diff --git a/include/seqan/basic/tuple_bit_compressed.h b/include/seqan/basic/tuple_bit_compressed.h
index ee7f5f4..799f505 100644
--- a/include/seqan/basic/tuple_bit_compressed.h
+++ b/include/seqan/basic/tuple_bit_compressed.h
@@ -87,16 +87,16 @@ template <> struct BitVector_<255>;
 // TODO(holtgrew): There is a lot of stuff defined within the class itself. A lot of it could be moved into global functions.
 
 // bit-packed storage (space efficient)
-#ifdef PLATFORM_WINDOWS
-    #pragma pack(push,1)
-#endif
-template <typename TValue, unsigned SIZE>
-struct Tuple<TValue, SIZE, BitPacked<> >
+#pragma pack(push,1)
+template <typename TValue, unsigned SIZE, unsigned BITSIZE1, unsigned BITSIZE2, typename TSpec>
+struct Tuple<TValue, SIZE, BitPacked<BITSIZE1, BITSIZE2, TSpec> >
 {
-    typedef typename BitVector_<SIZE * BitsPerValue<TValue>::VALUE>::Type TBitVector;
+    static const unsigned BITS_PER_VALUE = BitsPerValue<TValue>::VALUE + (std::is_same<TSpec, PlusOne>::value ? 1 : 0);
+
+    typedef typename BitVector_<SIZE * BITS_PER_VALUE>::Type TBitVector;
 
-    static const uint64_t BIT_MASK = ((1ull << (BitsPerValue<TValue>::VALUE - 1)       ) - 1ull) << 1 | 1ull;
-    static const uint64_t MASK     = ((1ull << (SIZE * BitsPerValue<TValue>::VALUE - 1)) - 1ull) << 1 | 1ull;
+    static const uint64_t BIT_MASK = ((1ull << (BITS_PER_VALUE - 1)       ) - 1ull) << 1 | 1ull;
+    static const uint64_t MASK     = ((1ull << (SIZE * BITS_PER_VALUE - 1)) - 1ull) << 1 | 1ull;
 
     // -----------------------------------------------------------------------
     // Members
@@ -110,9 +110,9 @@ struct Tuple<TValue, SIZE, BitPacked<> >
 
     // TODO(holtgrew): There is the unresolved issue whether the initialize costs critical performance. Since Tuples are PODs, it should be able to initialize Strings/arrays of them with memset().
     // TODO(weese): Use static a assertion outside of the constructor here, see SEQAN_CONCEPT_ASSERT
-//    SEQAN_HOST_DEVICE Tuple() : i(0)
+//    Tuple() : i(0)
 //    {
-//        SEQAN_ASSERT_LEQ(static_cast<uint64_t>(BitsPerValue<TValue>::VALUE * SIZE), static_cast<uint64_t>(sizeof(TBitVector) * 8));
+//        SEQAN_ASSERT_LEQ(static_cast<uint64_t>(BITS_PER_VALUE * SIZE), static_cast<uint64_t>(sizeof(TBitVector) * 8));
 //    }
 
     // -----------------------------------------------------------------------
@@ -120,12 +120,12 @@ struct Tuple<TValue, SIZE, BitPacked<> >
     // -----------------------------------------------------------------------
 
     template <typename TPos>
-    SEQAN_HOST_DEVICE inline const TValue
+    inline const TValue
     operator[](TPos k) const
     {
         SEQAN_ASSERT_GEQ(static_cast<int64_t>(k), 0);
         SEQAN_ASSERT_LT(static_cast<int64_t>(k), static_cast<int64_t>(SIZE));
-        return (i >> (SIZE - 1 - k) * BitsPerValue<TValue>::VALUE) & BIT_MASK;
+        return (i >> (SIZE - 1 - k) * BITS_PER_VALUE) & BIT_MASK;
     }
 
     // -----------------------------------------------------------------------
@@ -144,25 +144,25 @@ struct Tuple<TValue, SIZE, BitPacked<> >
     template <typename TShiftSize>
     inline TBitVector operator<<=(TShiftSize shift)
     {
-        return i = (i << (shift * BitsPerValue<TValue>::VALUE)) & MASK;
+        return i = (i << (shift * BITS_PER_VALUE)) & MASK;
     }
 
     template <typename TShiftSize>
     inline TBitVector operator<<(TShiftSize shift) const
     {
-        return (i << (shift * BitsPerValue<TValue>::VALUE)) & MASK;
+        return (i << (shift * BITS_PER_VALUE)) & MASK;
     }
 
     template <typename TShiftSize>
     inline TBitVector operator>>=(TShiftSize shift)
     {
-        return i = (i >> (shift * BitsPerValue<TValue>::VALUE));
+        return i = (i >> (shift * BITS_PER_VALUE));
     }
 
     template <typename TShiftSize>
     inline TBitVector operator>>(TShiftSize shift) const
     {
-        return i >> (shift * BitsPerValue<TValue>::VALUE);
+        return i >> (shift * BITS_PER_VALUE);
     }
 
     template <typename T>
@@ -190,18 +190,12 @@ struct Tuple<TValue, SIZE, BitPacked<> >
         SEQAN_ASSERT_GEQ(static_cast<int64_t>(k), 0);
         SEQAN_ASSERT_LT(static_cast<int64_t>(k), static_cast<int64_t>(SIZE));
 
-        unsigned shift = ((SIZE - 1 - k) * BitsPerValue<TValue>::VALUE);
+        unsigned shift = ((SIZE - 1 - k) * BITS_PER_VALUE);
         i = (i & ~(BIT_MASK << shift)) | (TBitVector)ordValue(source) << shift;
         return source;
     }
-}
-#ifndef PLATFORM_WINDOWS
-    __attribute__((packed))
-#endif
-    ;
-#ifdef PLATFORM_WINDOWS
-    #pragma pack(pop)
-#endif
+};
+#pragma pack(pop)
 
 // ============================================================================
 // Metafunctions
@@ -223,7 +217,7 @@ getValue(Tuple<TValue, SIZE, BitPacked<> > const & me,
     SEQAN_ASSERT_GEQ(static_cast<int64_t>(k), 0);
     SEQAN_ASSERT_LT(static_cast<int64_t>(k), static_cast<int64_t>(SIZE));
 
-    return (me.i >> (SIZE - 1 - k) * BitsPerValue<TValue>::VALUE) & me.BIT_MASK;
+    return (me.i >> (SIZE - 1 - k) * Tuple<TValue, SIZE, BitPacked<> >::BITS_PER_VALUE) & me.BIT_MASK;
 }
 
 template <typename TValue, unsigned SIZE, typename TPos>
@@ -234,25 +228,25 @@ getValue(Tuple<TValue, SIZE, BitPacked<> > & me,
     SEQAN_ASSERT_GEQ(static_cast<int64_t>(k), 0);
     SEQAN_ASSERT_LT(static_cast<int64_t>(k), static_cast<int64_t>(SIZE));
 
-    return (me.i >> (SIZE - 1 - k) * BitsPerValue<TValue>::VALUE) & me.BIT_MASK;
+    return (me.i >> (SIZE - 1 - k) * Tuple<TValue, SIZE, BitPacked<> >::BITS_PER_VALUE) & me.BIT_MASK;
 }
 
 // -----------------------------------------------------------------------
 // Function assignValue()
 // -----------------------------------------------------------------------
 
-template <typename TValue, unsigned SIZE, typename TValue2, typename TPos>
+template <typename TValue, unsigned SIZE, unsigned BITSIZE1, unsigned BITSIZE2, typename TSpec, typename TValue2, typename TPos>
 inline TValue2
-assignValue(Tuple<TValue, SIZE, BitPacked<> > & me,
+assignValue(Tuple<TValue, SIZE, BitPacked<BITSIZE1, BITSIZE2, TSpec> > & me,
             TPos k,
             TValue2 const source)
 {
-    typedef typename Tuple<TValue, SIZE, BitPacked<> >::TBitVector TBitVector;
+    typedef typename Tuple<TValue, SIZE, BitPacked<BITSIZE1, BITSIZE2, TSpec> >::TBitVector TBitVector;
 
     SEQAN_ASSERT_GEQ(static_cast<int64_t>(k), 0);
     SEQAN_ASSERT_LT(static_cast<int64_t>(k), static_cast<int64_t>(SIZE));
 
-    unsigned shift = ((SIZE - 1 - k) * BitsPerValue<TValue>::VALUE);
+    unsigned shift = ((SIZE - 1 - k) * Tuple<TValue, SIZE, BitPacked<BITSIZE1, BITSIZE2, TSpec> >::BITS_PER_VALUE);
     me.i = (me.i & ~(me.BIT_MASK << shift)) | (TBitVector)ordValue(source) << shift;
     return source;
 }
diff --git a/include/seqan/blast.h b/include/seqan/blast.h
index 1f22833..851f73b 100644
--- a/include/seqan/blast.h
+++ b/include/seqan/blast.h
@@ -39,7 +39,7 @@
 
 #include <seqan/platform.h>
 
-#ifndef PLATFORM_WINDOWS_VS
+#ifndef COMPILER_MSVC
 
 #include <cinttypes>
 #include <cmath>
diff --git a/include/seqan/blast/blast_base.h b/include/seqan/blast/blast_base.h
index b4fa990..3d6c502 100644
--- a/include/seqan/blast/blast_base.h
+++ b/include/seqan/blast/blast_base.h
@@ -295,7 +295,7 @@ sNumFrames(BlastProgram p)
 template <typename TVoidSpec = void>
 struct BlastProgramStrings_
 {
-    static constexpr char const * const VALUE [] =
+    static constexpr char const * const VALUE [6] =
     {
         "BLASTN",
         "BLASTP",
diff --git a/include/seqan/blast/blast_report_out.h b/include/seqan/blast/blast_report_out.h
index 56ce3f7..bf071af 100644
--- a/include/seqan/blast/blast_report_out.h
+++ b/include/seqan/blast/blast_report_out.h
@@ -113,7 +113,7 @@ typedef Tag<BlastReport_> BlastReport;
  * </ul>
  *
  * For a detailed example have a look at the
- * <a href="http://seqan.readthedocs.org/en/develop/Tutorial/BlastIO.html">Blast IO tutorial</a>.
+ * <a href="http://seqan.readthedocs.io/en/develop/Tutorial/BlastIO.html">Blast IO tutorial</a>.
  *
  * @see BlastRecord
  */
@@ -247,6 +247,36 @@ _matrixName(Pam250 const & /**/)
     return "PAM250";
 }
 
+template <typename TCurTag>
+constexpr const char *
+_matrixNameTagDispatch(TagList<TCurTag, void> const &,
+                       AminoAcidScoreMatrixID const m)
+{
+    using TUndType = std::underlying_type_t<AminoAcidScoreMatrixID>;
+    return (Find<impl::score::MatrixTags, TCurTag>::VALUE == static_cast<TUndType>(m))
+            ? _matrixName(Score<int, ScoreMatrix<AminoAcid, TCurTag>>())
+            : "ERROR: Matrix name deduction failed, report this as a bug!";
+}
+
+template <typename TCurTag,
+          typename TRestList>
+constexpr const char *
+_matrixNameTagDispatch(TagList<TCurTag, TRestList> const &,
+                       AminoAcidScoreMatrixID const m)
+{
+    using TUndType = std::underlying_type_t<AminoAcidScoreMatrixID>;
+    return (Find<impl::score::MatrixTags, TCurTag>::VALUE == static_cast<TUndType>(m))
+            ? _matrixName(Score<int, ScoreMatrix<AminoAcid, TCurTag>>())
+            : _matrixNameTagDispatch(TRestList(), m);
+}
+
+template <typename TValue>
+constexpr const char *
+_matrixName(Score<TValue, ScoreMatrix<AminoAcid, ScoreSpecSelectable> > const & sc)
+{
+    return _matrixNameTagDispatch(impl::score::MatrixTags(), getScoreMatrixId(sc));
+}
+
 // ----------------------------------------------------------------------------
 // Function _writeStatsBlock
 // ----------------------------------------------------------------------------
@@ -449,7 +479,7 @@ _writeAlignmentBlock(TStream & stream,
     while (aPos < m.alignStats.alignmentLength)
     {
         // Query line
-        sprintf(buffer, "Query  %-*d  ", numberWidth, qPos + effQStart);
+        snprintf(buffer, 40, "Query  %-*d  ", numberWidth, qPos + effQStart);
         write(stream, buffer);
 
         TPos const end = std::min(static_cast<TPos>(aPos + windowSize), m.alignStats.alignmentLength);
@@ -457,9 +487,9 @@ _writeAlignmentBlock(TStream & stream,
         {
             if (!isGap(m.alignRow0, i))
                 qPos += qStep;
-            write(stream, value(m.alignRow0, i));
+            write(stream, getValue(m.alignRow0, i));
         }
-        sprintf(buffer, "  %-*d", numberWidth, (qPos + effQStart) - qStepOne);
+        snprintf(buffer, 40, "  %-*d", numberWidth, (qPos + effQStart) - qStepOne);
         write(stream, buffer);
 
         // intermediate line
@@ -468,19 +498,19 @@ _writeAlignmentBlock(TStream & stream,
             write(stream, ' ');
 
         for (TPos i = aPos; i < end; ++i)
-            _writeAlignmentBlockIntermediateChar(stream, context, value(m.alignRow0,i), value(m.alignRow1,i), BlastReport());
+            _writeAlignmentBlockIntermediateChar(stream, context, getValue(m.alignRow0,i), getValue(m.alignRow1,i), BlastReport());
 
         // Subject line
-        sprintf(buffer, "\nSbjct  %-*d  ", numberWidth, sPos + effSStart);
+        snprintf(buffer, 40, "\nSbjct  %-*d  ", numberWidth, sPos + effSStart);
         write(stream, buffer);
 
         for (TPos i = aPos; i < end; ++i)
         {
             if (!isGap(m.alignRow1, i))
                 sPos += sStep;
-            write(stream, value(m.alignRow1, i));
+            write(stream, getValue(m.alignRow1, i));
         }
-        sprintf(buffer, "  %-*d\n\n", numberWidth, (sPos + effSStart) - sStepOne);
+        snprintf(buffer, 40, "  %-*d\n\n", numberWidth, (sPos + effSStart) - sStepOne);
         write(stream, buffer);
 
         aPos = end;
@@ -790,10 +820,10 @@ writeMatrixName(TStream & stream, SimpleScore const & scheme)
 
 template <typename TStream, typename TScheme>
 inline void
-writeMatrixName(TStream & stream, TScheme const &)
+writeMatrixName(TStream & stream, TScheme const & scheme)
 {
     // see top of file
-    write(stream, _matrixName(TScheme()));
+    write(stream, _matrixName(scheme));
 }
 
 template <typename TStream,
diff --git a/include/seqan/blast/blast_statistics.h b/include/seqan/blast/blast_statistics.h
index 8017d60..98624ac 100644
--- a/include/seqan/blast/blast_statistics.h
+++ b/include/seqan/blast/blast_statistics.h
@@ -86,7 +86,21 @@ namespace seqan
 
 /// GENERIC
 template <typename TScore, typename TSpec = void>
-struct KarlinAltschulValues;
+struct KarlinAltschulValues
+{
+    typedef uint8_t TSize;
+
+    /* statics */
+    static constexpr TSize nParams = 0;
+    static constexpr TSize nParamSets = 0;
+    static double const VALUE[1][8]; // size 8 to silence warnings
+};
+
+template <typename TScore, typename TSpec>
+double const KarlinAltschulValues<TScore, TSpec>::VALUE[1][8] =
+{
+    {0,0,0,0,0,0,0,0}
+};
 
 /// BLOSUM30
 // not implemented in BLAST
@@ -401,6 +415,8 @@ double const KarlinAltschulValues<Score<int, Simple>, TSpec>::VALUE
  * This would however involve adding a new template parameter to score and
  * changing lots of code. Also it would become confusing as the shortcuts
  * like Blosum62 would no longer work...
+ * TODO for SeqAn3: include this files implications when redesigning scoring schemes
+ * and reduce complexity
  */
 template <typename TScore>
 struct BlastScoringScheme
@@ -414,6 +430,10 @@ struct BlastScoringScheme
 
     /* parameter selection */
     TNumValues parameterIndex = std::numeric_limits<TNumValues>::max();
+
+    /* hacks for the dynamic matrix */
+    double const * _m;
+    TNumValues _nParams;
 };
 
 // ============================================================================
@@ -528,19 +548,17 @@ inline bool
 isValid(BlastScoringScheme<TScore> const & scheme)
 {
     typedef KarlinAltschulValues<TScore> TKAValues;
-    return scheme.parameterIndex < TKAValues::nParamSets;
+    return scheme.parameterIndex != std::numeric_limits<typename TKAValues::TSize>::max();
 }
 
 // ----------------------------------------------------------------------------
 // Function _selectSet
 // ----------------------------------------------------------------------------
 
-template <typename TScore>
+template <typename TScore, typename TKAValues>
 inline bool
 _selectSet(BlastScoringScheme<TScore> & scheme)
 {
-    typedef KarlinAltschulValues<TScore> TKAValues;
-
     for (typename TKAValues::TSize i = 0; i < TKAValues::nParamSets; ++i)
     {
         if ((TKAValues::VALUE[i][0] == -scoreGapOpenBlast(scheme)) &&
@@ -555,6 +573,35 @@ _selectSet(BlastScoringScheme<TScore> & scheme)
     return false;
 }
 
+template <typename TValue, typename TSpec>
+inline bool
+_selectSet(BlastScoringScheme<Score<TValue, ScoreMatrix<AminoAcid, TSpec>>> & scheme)
+{
+    using TScore = Score<TValue, ScoreMatrix<AminoAcid, TSpec>>;
+    using TKAValues = KarlinAltschulValues<TScore>;
+    return _selectSet<TScore, TKAValues>(scheme);
+}
+
+template <typename TValue>
+inline bool
+_selectSet(BlastScoringScheme<Score<TValue, ScoreMatrix<AminoAcid, ScoreSpecSelectable>>> & scheme)
+{
+    using TScoreOrig = Score<TValue, ScoreMatrix<AminoAcid, ScoreSpecSelectable>>;
+    bool ret = false;
+    impl::score::matrixTagDispatch(impl::score::MatrixTags(),
+                                   getScoreMatrixId(seqanScheme(scheme)),
+                                   [&] (auto const & tag)
+    {
+        using TScoreMod = Score<TValue, ScoreMatrix<AminoAcid, std::decay_t<decltype(tag)>>>;
+        using TKAValues = KarlinAltschulValues<TScoreMod>;
+        ret =  _selectSet<TScoreOrig, TKAValues>(scheme);
+        // save some KAV data in scheme for retrievel without tag dispatching
+        scheme._m = &TKAValues::VALUE[0][0];
+        scheme._nParams = TKAValues::nParams;
+    });
+    return ret;
+}
+
 inline bool
 _selectSet(BlastScoringScheme<Score<int, Simple>> & scheme)
 {
@@ -678,6 +725,13 @@ setScoreGapExtend(BlastScoringScheme<TScore> & scheme, typename Value<TScore>::T
  * @signature double getLambda(blastScoringScheme);
  */
 
+inline double
+getLambda(BlastScoringScheme<Score<int, ScoreMatrix<AminoAcid, ScoreSpecSelectable>>> const & scoringScheme)
+{
+    SEQAN_ASSERT(isValid(scoringScheme));
+    return *(scoringScheme._m + scoringScheme.parameterIndex * scoringScheme._nParams + 3);
+}
+
 template <typename TMatrixSpec>
 inline double
 getLambda(BlastScoringScheme<Score<int, ScoreMatrix<AminoAcid, TMatrixSpec>>> const & scoringScheme)
@@ -706,6 +760,13 @@ getLambda(BlastScoringScheme<Score<int, Simple>> const & scoringScheme)
  * @signature double getKappa(blastScoringScheme);
  */
 
+inline double
+getKappa(BlastScoringScheme<Score<int, ScoreMatrix<AminoAcid, ScoreSpecSelectable>>> const & scoringScheme)
+{
+    SEQAN_ASSERT(isValid(scoringScheme));
+    return *(scoringScheme._m + scoringScheme.parameterIndex * scoringScheme._nParams + 4);
+}
+
 template <typename TMatrixSpec>
 inline double
 getKappa(BlastScoringScheme<Score<int, ScoreMatrix<AminoAcid, TMatrixSpec>>> const & scoringScheme)
@@ -735,6 +796,13 @@ getKappa(BlastScoringScheme<Score<int, Simple>> const & scoringScheme)
  * @signature double getH(blastScoringScheme);
  */
 
+inline double
+getH(BlastScoringScheme<Score<int, ScoreMatrix<AminoAcid, ScoreSpecSelectable>>> const & scoringScheme)
+{
+    SEQAN_ASSERT(isValid(scoringScheme));
+    return *(scoringScheme._m + scoringScheme.parameterIndex * scoringScheme._nParams + 5);
+}
+
 template <typename TMatrixSpec>
 inline double
 getH(BlastScoringScheme<Score<int, ScoreMatrix<AminoAcid, TMatrixSpec>>> const & scoringScheme)
@@ -764,6 +832,14 @@ getH(BlastScoringScheme<Score<int, Simple>> const & scoringScheme)
  * @signature double getAlpha(blastScoringScheme);
  */
 
+inline double
+getAlpha(BlastScoringScheme<Score<int, ScoreMatrix<AminoAcid, ScoreSpecSelectable>>> const & scoringScheme)
+{
+    SEQAN_ASSERT(isValid(scoringScheme));
+    return *(scoringScheme._m + scoringScheme.parameterIndex * scoringScheme._nParams + 6);
+}
+
+
 template <typename TMatrixSpec>
 inline double
 getAlpha(BlastScoringScheme<Score<int, ScoreMatrix<AminoAcid, TMatrixSpec>>> const & scoringScheme)
@@ -792,6 +868,13 @@ getAlpha(BlastScoringScheme<Score<int, Simple>> const & scoringScheme)
  * @signature double getBeta(blastScoringScheme);
  */
 
+inline double
+getBeta(BlastScoringScheme<Score<int, ScoreMatrix<AminoAcid, ScoreSpecSelectable>>> const & scoringScheme)
+{
+    SEQAN_ASSERT(isValid(scoringScheme));
+    return *(scoringScheme._m + scoringScheme.parameterIndex * scoringScheme._nParams + 7);
+}
+
 template <typename TMatrixSpec>
 inline double
 getBeta(BlastScoringScheme<Score<int, ScoreMatrix<AminoAcid, TMatrixSpec>>> const & scoringScheme)
@@ -1003,6 +1086,20 @@ _computeEValue(double const rawScore,
     return getKappa(scheme) * adjustedQueryLength * adjustedDbLength * std::exp(-getLambda(scheme) * rawScore);
 }
 
+template <typename T, typename TScore>
+inline void
+_conditionalDec(T &, BlastScoringScheme<TScore> const &)
+{}
+
+template <typename T>
+inline void
+_conditionalDec(T & val, BlastScoringScheme<Score<int, Simple>> const & scheme)
+{
+    typedef KarlinAltschulValues<Score<int, Simple>> TKAValues;
+    if (TKAValues::VALUE[scheme.parameterIndex][10])
+        --val;
+}
+
 template <typename TScore>
 inline double
 computeEValue(uint64_t rawScore,
@@ -1010,10 +1107,8 @@ computeEValue(uint64_t rawScore,
               uint64_t const dbLength,
               BlastScoringScheme<TScore> const & scheme)
 {
-    typedef KarlinAltschulValues<TScore> TKAValues;
     // for some parameters the score has to be "rounded down" to being even
-    if ((TKAValues::nParams >= 11) && (TKAValues::VALUE[scheme.parameterIndex][10]))
-        --rawScore;
+    _conditionalDec(rawScore, scheme);
 
     uint64_t adj = _lengthAdjustment(dbLength, queryLength, scheme);
     return _computeEValue(rawScore, queryLength - adj, dbLength - adj, scheme);
diff --git a/include/seqan/blast/blast_tabular_in.h b/include/seqan/blast/blast_tabular_in.h
index 42ab6bd..16224ca 100644
--- a/include/seqan/blast/blast_tabular_in.h
+++ b/include/seqan/blast/blast_tabular_in.h
@@ -118,7 +118,7 @@ namespace seqan
  * </ul>
  *
  * For a detailed example have a look at the
- * <a href="http://seqan.readthedocs.org/en/develop/Tutorial/BlastIO.html">Blast IO tutorial</a>.
+ * <a href="http://seqan.readthedocs.io/en/develop/Tutorial/BlastIO.html">Blast IO tutorial</a>.
  *
  * @see BlastRecord
  */
diff --git a/include/seqan/blast/blast_tabular_out.h b/include/seqan/blast/blast_tabular_out.h
index d726df4..d9e0d77 100644
--- a/include/seqan/blast/blast_tabular_out.h
+++ b/include/seqan/blast/blast_tabular_out.h
@@ -85,7 +85,7 @@ namespace seqan {
  * </ul>
  *
  * For a detailed example have a look at the
- * <a href="http://seqan.readthedocs.org/en/develop/Tutorial/BlastIO.html">Blast IO tutorial</a>.
+ * <a href="http://seqan.readthedocs.io/en/develop/Tutorial/BlastIO.html">Blast IO tutorial</a>.
  *
  * Strictly speaking the <tt>writeHeader()</tt> call is not required for BlastTabular, but for consistency with
  * other (blast) formats and the read interface it is recommended.
diff --git a/include/seqan/file/file_base.h b/include/seqan/file/file_base.h
index c28b0d7..8852d03 100644
--- a/include/seqan/file/file_base.h
+++ b/include/seqan/file/file_base.h
@@ -43,7 +43,7 @@
  * base class with SPecs and Tags
  * also contains standard calls for IO as wrappers around members
  * in system/file_sync.h and system/file_ssync.h
- * (hese files are built around c++ fstream IO)
+ * (these files are built around c++ fstream IO)
  * well documented (in comparison to other files)
  *
  * SEQAN_DIRECTIO Macro mentioned here but not documented or tested
@@ -197,7 +197,7 @@ inline typename Position< File<TSpec> >::Type seek(File<TSpec> &me, TPos const f
  *
  * @section Remarks
  *
- * The records are written at the position pointed to by th ecurrent file pointer (see @link File#seek @endlink).
+ * The records are written at the position pointed to by the current file pointer (see @link File#seek @endlink).
  */
 
     template < typename TSpec, typename TValue, typename TSize >
@@ -491,7 +491,7 @@ inline typename Position< File<TSpec> >::Type seek(File<TSpec> &me, TPos const f
 */
 
     //////////////////////////////////////////////////////////////////////
-    // queue-less request based pseudo asychronous read/write
+    // queue-less request based pseudo asynchronous read/write
 
 /*!
  * @fn File#asyncReadAt
@@ -531,7 +531,7 @@ inline typename Position< File<TSpec> >::Type seek(File<TSpec> &me, TPos const f
  * @param[in]     fileOfs The absolute file position in bytes measured form the beginning.
  * @param[in]     request Reference to a structure that will be associated with this asynchronous request.
  *
- * @return bool <tt>true</tt> on succcess, <tt>false</tt> on failure.
+ * @return bool <tt>true</tt> on success, <tt>false</tt> on failure.
  */
 
     template < typename File, typename TValue, typename TSize, typename TPos,
@@ -565,7 +565,7 @@ inline typename Position< File<TSpec> >::Type seek(File<TSpec> &me, TPos const f
 
 /*!
  * @fn File#waitFor
- * @brief Waits for an asychronous request to complete.
+ * @brief Waits for an asynchronous request to complete.
  *
  * @signature bool waitFor(request[, timeout]);
  *
diff --git a/include/seqan/file/file_cstyle.h b/include/seqan/file/file_cstyle.h
index 34ceefd..aa1fc7a 100644
--- a/include/seqan/file/file_cstyle.h
+++ b/include/seqan/file/file_cstyle.h
@@ -45,7 +45,7 @@
  * Tested by tests/file
  * documentation non-existent
  * relation to cstream.h not clear
- * Metafunctions supposedly moved hereto from file_cstyle.h are commented here awell
+ * Metafunctions supposedly moved here to from file_cstyle.h are commented here as well
  */
 
 //////////////////////////////////////////////////////////////////////////////
@@ -85,7 +85,7 @@ namespace seqan
     template <>
     struct Difference< FILE* >
     {
-//IOREV shouldnt this be ulong, as the file can be ulong bytes big?
+//IOREV shouldn't this be ulong, as the file can be ulong bytes big?
         typedef long Type;
     };
 
@@ -93,7 +93,7 @@ namespace seqan
     inline const char *
     _getCStyleOpenMode(int openMode)
     {
-//IOREV double check whether this translates FileOpenMode correctly (doesnt look like it)
+//IOREV double check whether this translates FileOpenMode correctly (doesn't look like it)
         switch (openMode & OPEN_MASK) {
             case OPEN_WRONLY:
                 if (!(openMode & OPEN_APPEND))
@@ -150,7 +150,7 @@ namespace seqan
     inline unsigned
     sectorSize(FILE* const &)
     {
-//IOREV _duplicate_ _nodoc_ duplicate or identical spec. in file_base.h should'nt this be variable
+//IOREV _duplicate_ _nodoc_ duplicate or identical spec. in file_base.h shouldn't this be variable
         return 4096;
     }
 
diff --git a/include/seqan/file/file_interface.h b/include/seqan/file/file_interface.h
index 2efa85e..3df0245 100644
--- a/include/seqan/file/file_interface.h
+++ b/include/seqan/file/file_interface.h
@@ -69,8 +69,14 @@ struct Sync;
  * @tparam TSpec Further specializing type.  Default: <tt>void</tt>.
  */
 
+#if SEQAN_ASYNC_IO
 template <typename TSpec = void>
 struct Async;
+#else
+// define async as sync
+template <typename TSpec = void>
+using Async = Sync<TSpec>;
+#endif
 
 /*!
  * @class File
@@ -89,7 +95,7 @@ class File;
 /*!
  * @enum FileOpenMode
  * @headerfile <seqan/file.h>
- * @brief Flags to select th eopen mode of a @link File @endlink or external string.
+ * @brief Flags to select the open mode of a @link File @endlink or external string.
  *
  * These flags can be combined via the <tt>|</tt> operator (bitwise OR).  The defualt open mode is <tt>OPEN_RDWR |
  * OPEN_CREATE | OPEN_APPEND</tt>.
@@ -168,7 +174,7 @@ typedef Tag<Bidirectional_> Bidirectional;
 // Metafunction DefaultOpenMode
 // --------------------------------------------------------------------------
 
-// helper metafunction to avoid ambigous partial specializations of the 1st/2nd argument
+// helper metafunction to avoid ambiguous partial specializations of the 1st/2nd argument
 template <typename TDirection>
 struct DefaultFileOpenMode_
 {
diff --git a/include/seqan/file/file_mapping.h b/include/seqan/file/file_mapping.h
index 22c1c32..61b9c68 100644
--- a/include/seqan/file/file_mapping.h
+++ b/include/seqan/file/file_mapping.h
@@ -101,7 +101,7 @@ enum FileMappingMode {
  * @brief The address range in the advise will not be needed any more.
  */
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 
 enum FileMappingAdvise {
     MAP_NORMAL = 0,
@@ -136,7 +136,7 @@ enum FileMappingAdvise {
  * This structure represents both a file and its memory mapping.
  */
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 static SECURITY_ATTRIBUTES FileMappingDefaultAttributes =
 {
     sizeof(SECURITY_ATTRIBUTES),
@@ -159,7 +159,7 @@ struct FileMapping
     // Members
     // -----------------------------------------------------------------------
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     HANDLE      handle;
 #endif
 
@@ -241,7 +241,7 @@ template <typename TSpec>
 inline void
 _initialize(FileMapping<TSpec> &mapping)
 {
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     mapping.handle = NULL;
 #endif
     mapping.fileSize = 0;
@@ -262,7 +262,7 @@ _mapFile(FileMapping<TSpec> &mapping, TSize mappingSize)
     ignoreUnusedVariableWarning(mappingSize);
 
     bool result = true;
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     if (mappingSize == 0)
     {
         mapping.handle = NULL;
@@ -313,12 +313,25 @@ _unmapFile(FileMapping<TSpec> &mapping)
     ignoreUnusedVariableWarning(mapping);
 
     bool result = true;
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     if (mapping.handle != NULL)
     {
         result &= (CloseHandle(mapping.handle) != 0);
         if (!result)
-            SEQAN_FAIL("CloseHandle failed in unmap: \"%s\"", strerror(errno));
+        {
+            LPVOID lpMsgBuf;
+            FormatMessage(
+                FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
+                NULL,
+                GetLastError(),
+                MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
+                (LPTSTR) &lpMsgBuf,
+                0,
+                NULL);
+
+            SEQAN_FAIL("CloseHandle failed in unmap: \"%s\"", lpMsgBuf /*strerror(GetLastError())*/);
+            LocalFree(lpMsgBuf);
+        }
         mapping.handle = NULL;
     }
 #endif
@@ -543,7 +556,7 @@ template <typename TSpec, typename TPos, typename TSize>
 inline bool
 flushFileSegment(FileMapping<TSpec> &, void *addr, TPos beginPos, TSize size)
 {
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     ignoreUnusedVariableWarning(addr);
     ignoreUnusedVariableWarning(beginPos);
     ignoreUnusedVariableWarning(size);
@@ -572,7 +585,7 @@ template <typename TSpec, typename TPos, typename TSize>
 inline bool
 cancelFileSegment(FileMapping<TSpec> &, void *addr, TPos fileOfs, TSize size)
 {
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     ignoreUnusedVariableWarning(addr);
     ignoreUnusedVariableWarning(fileOfs);
     ignoreUnusedVariableWarning(size);
@@ -588,9 +601,9 @@ cancelFileSegment(FileMapping<TSpec> &, void *addr, TPos fileOfs, TSize size)
  *
  * @signature bool adviseFileSegment(fileMapping, advise, addr, fileOfs, size);
  *
- * @param[in,out] fileMapping The FileMapping object to adsive segment in.
+ * @param[in,out] fileMapping The FileMapping object to advise segment in.
  * @param[in]     advise      The advise type.  Type: @link FileMappingAdvise @endlink.
- * @param[in]     addr        A pointer t othe beginning of the memory-mapped segment in memory (returned by a
+ * @param[in]     addr        A pointer to the beginning of the memory-mapped segment in memory (returned by a
  *                            prior call of @link FileMapping#mapFileSegment @endlink).
  * @param[in]     fileOfs     The absolute start address of the segment in bytes.
  * @param[in]     size        The segment length in bytes.
@@ -606,7 +619,7 @@ template <typename TSpec, typename TPos, typename TSize>
 inline bool
 adviseFileSegment(FileMapping<TSpec> &, FileMappingAdvise advise, void *addr, TPos fileOfs, TSize size)
 {
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     ignoreUnusedVariableWarning(advise);
     ignoreUnusedVariableWarning(addr);
     ignoreUnusedVariableWarning(fileOfs);
@@ -627,7 +640,7 @@ adviseFileSegment(FileMapping<TSpec> &, FileMappingAdvise advise, void *addr, TP
  * @param[in,out] fileMapping A FileMapping object.
  * @param[in]     fileOfs     The absolute start address of the segment in bytes.
  * @param[in]     size        The segment length in bytes.
- * @param[in]     mode        The mapping access mode.  Default rread/write open mode of the underlying file.
+ * @param[in]     mode        The mapping access mode.  Default read/write open mode of the underlying file.
  *                            Type: @link FileMappingMode @endlink.
  *
  * @return TPtr A pointer to the beginning of the memory-mapped segment in memory or <tt>NULL</tt> on error.  TPtr is
@@ -646,7 +659,7 @@ mapFileSegment(FileMapping<TSpec> &mapping, TPos fileOfs, TSize size, TFileMappi
         return NULL;
     mode = (FileMappingMode)(mode & (mapping.openMode & OPEN_MASK));
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 
     DWORD access = ((mode & OPEN_MASK) == OPEN_RDONLY) ? FILE_MAP_READ : FILE_MAP_ALL_ACCESS;
     LARGE_INTEGER largeOfs;
@@ -721,7 +734,7 @@ inline bool
 unmapFileSegment(FileMapping<TSpec> &, void *addr, TSize size)
 {
     bool result;
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     ignoreUnusedVariableWarning(size);
     result = (UnmapViewOfFile(addr) != 0);
 #else
@@ -755,7 +768,7 @@ inline void *
 remapFileSegment(FileMapping<TSpec> &mapping, void *oldAddr, TPos oldFileOfs, TSize oldSize, TSize newSize)
 {
     void *addr;
-#if !defined(PLATFORM_WINDOWS) && defined(MREMAP_MAYMOVE)
+#if !defined(STDLIB_VS) && defined(MREMAP_MAYMOVE)
     ignoreUnusedVariableWarning(mapping);
     ignoreUnusedVariableWarning(oldFileOfs);
     addr = mremap(oldAddr, oldSize, newSize, MREMAP_MAYMOVE);
diff --git a/include/seqan/file/file_page.h b/include/seqan/file/file_page.h
index 349be4d..21f5595 100644
--- a/include/seqan/file/file_page.h
+++ b/include/seqan/file/file_page.h
@@ -638,7 +638,7 @@ struct MMap;
     {
         if (pf.begin)
         {
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 #else
             munmap(pf.begin, length(pf) * sizeof(TValue));
 #endif
@@ -655,7 +655,7 @@ struct MMap;
         pf.status = READY;
         SEQAN_ASSERT_GT(size, 0);
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 #if 0
         DWORD prot = 0;
         DWORD access = 0;
@@ -718,7 +718,7 @@ struct MMap;
         pf.status = READY;
         SEQAN_ASSERT_GT(size, 0u);
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 #else
         pf.begin = (TValue*)mmap(NULL, size * sizeof(TValue), PROT_READ | PROT_WRITE, MAP_SHARED, file.handle, (TPos)pf.pageNo * (TPos)capacity(pf) * (TPos)sizeof(TValue));
 
diff --git a/include/seqan/file/string_external.h b/include/seqan/file/string_external.h
index 08fb6ca..c7bbf47 100644
--- a/include/seqan/file/string_external.h
+++ b/include/seqan/file/string_external.h
@@ -62,13 +62,13 @@ namespace seqan
  * @signature template <[typename TFile[, unsigned PAGESIZE[, unsigned FRAMES]]>
  *            struct ExternalConfig;
  *
- * @tparam TFile     The @link File @endlink type to use.  Default: <tt>File<></tt>.
- * @tparam PAGESIZE The number of values in one page.  This should be a power of 2 to speed up transfer and
- *                   calculations.  Default: 2<sup>20</sup>.
- * @tparam FRAMES    The number of pages that should reside in internal memory.  To enable prefetching and automatic
- *                   swap-out, <tt>frames</tt> should be greater than 1.  Default: 2.
+ * @tparam TFile     The @link File @endlink type to use. Default: <tt>File<></tt>.
+ * @tparam PAGESIZE The number of values in one page. This should be a power of 2 to speed up transfer and
+ *                   calculations. Default: 2<sup>20</sup>.
+ * @tparam FRAMES    The number of pages that should reside in internal memory. To enable prefetching and automatic
+ *                   swap-out, <tt>frames</tt> should be greater than 1. Default: 2.
  *
- * When using this configuration, the Size type of the ExternalString is <tt>unsigned</tt>.  Thus, with this configuration at
+ * When using this configuration, the <tt>Size</tt> type of the ExternalString is <tt>unsigned</tt>. Thus, with this configuration at
  * most 4.294.967.296 values can be stored in an ExternalString on a 32 bit system.
  *
  * For a larger size type use @link ExternalConfigLarge @endlink.
@@ -84,20 +84,20 @@ namespace seqan
  * @signature template <[typename TFile[, unsigned PAGESIZE[, unsigned FRAMES]]>
  *            struct ExternalConfigLarge;
  *
- * @tparam TFile     The @link File @endlink type to use.  Default: <tt>File<></tt>.
- * @tparam PAGESIZE The number of values in one page.  This should be a power of 2 to speed up transfer and
- *                   calculations.  Default: 2<sup>20</sup>.
- * @tparam FRAMES    The number of pages that should reside in internal memory.  To enable prefetching and automatic
- *                   swap-out, <tt>frames</tt> should be greater than 1.  Default: 2.
+ * @tparam TFile     The @link File @endlink type to use. Default: <tt>File<></tt>.
+ * @tparam PAGESIZE The number of values in one page. This should be a power of 2 to speed up transfer and
+ *                   calculations. Default: 2<sup>20</sup>.
+ * @tparam FRAMES    The number of pages that should reside in internal memory. To enable prefetching and automatic
+ *                   swap-out, <tt>frames</tt> should be greater than 1. Default: 2.
  *
  * @see ExternalConfig
  *
  * @section Remarks
  *
- * When using this configuration ,th eSize type o fthe ExternalString is Size type of <tt>TFile</tt>.  Normally, this is
- * a 64 bit integer.  For a smaller size type use ExternalConfig.
+ * When using this configuration ,the <tt>Size</tt> type of the ExternalString is <tt>Size</tt> type of <tt>TFile</tt>. Normally, this is
+ * a 64 bit integer. For a smaller size type use ExternalConfig.
  *
- * Some data structures store size types values (e.g. suffix arrays in indices).  To save memory, you should think o
+ * Some data structures store size types values (e.g. suffix arrays in indices). To save memory, you should think o
  * fusing ExternalConfig.
  */
 
@@ -110,11 +110,11 @@ namespace seqan
  *            class ExternalConfigSize;
  *
  * @tparam TSize The size type of the ExternalString.
- * @tparam TFile Type of file the ExternalString will be based on.  Defaults to <tt>File<></tt>.
- * @tparam PAGESIZE The number of values in one page.  This should be a power of 2 to speed up transfer and
- *                   calculations.  Default: 2<sup>20</sup>.
- * @tparam FRAMES    The number of pages that should reside in internal memory.  To enable prefetching and automatic
- *                   swap-out, <tt>frames</tt> should be greater than 1.  Default: 2.
+ * @tparam TFile Type of file the ExternalString will be based on. Defaults to <tt>File<></tt>.
+ * @tparam PAGESIZE The number of values in one page. This should be a power of 2 to speed up transfer and
+ *                   calculations. Default: 2<sup>20</sup>.
+ * @tparam FRAMES    The number of pages that should reside in internal memory. To enable prefetching and automatic
+ *                   swap-out, <tt>frames</tt> should be greater than 1. Default: 2.
  */
 
 /*!
@@ -127,25 +127,25 @@ namespace seqan
  *            class String<TValue, External<TConfig> >;
  *
  * @tparam TValue  The type that is used for the items/characters stored in the string.
- * @tparam TConfig A structure to confgure the external string.  Defaults to <tt>ExternalConfigLarge<>.  See
+ * @tparam TConfig A structure to configure the external string. Defaults to <tt>ExternalConfigLarge<>. See
  *                 ExternalConfig, ExternalConfigLarge, and ExternalConfigSize.
  *
  * The External String enables to access sequences larger than the available internal memory (RAM) by using external
- * memory (e.g. Hard disk, Network storage, ...) via a File object.  Sequences of nearly arbitrary size can be accessed
+ * memory (e.g. Hard disk, Network storage, ...) via a File object. Sequences of nearly arbitrary size can be accessed
  * even larger than the logically addressable memory, i.e. they can in particular contain more than 2^32 elements on a
- * 32bit system (see Tag.ExternalConfigLarge).  See the String constructor for more details.
+ * 32bit system (see Tag.ExternalConfigLarge). See the String constructor for more details.
  *
  * This String also supports fast appending and removing of values at the end (see Block String, appendValue)
  *
- * The External String implements a LRU mechanism to swap out pages.  The External String's Iterator detects a forward or
+ * The External String implements a LRU mechanism to swap out pages. The External String's Iterator detects a forward or
  * backward iteration and asynchronously prefetches pages that certainly will be accessed and automatically swaps out
  * pages that certainly won't be accessed any more in the iteration process.
  *
- * The String is implemented like a virtual memory manager.  It divides its character sequence into pages of a fixed
+ * The String is implemented like a virtual memory manager. It divides its character sequence into pages of a fixed
  * length (e.g. 4MB) and maintains a page table with information for each page (e.g. resides in memory or was swapped
- * out, is dirty and needs to be saved, ...).  Besides the page table the String also contains a size-limited list of
- * page frames.  A page frame is reserved internal memory for a page.  When accessing values of a page that is stored in
- * external memory, the page is loaded to a page frame first.  In case that there is no page frame free, another page is
+ * out, is dirty and needs to be saved, ...). Besides the page table the String also contains a size-limited list of
+ * page frames. A page frame is reserved internal memory for a page. When accessing values of a page that is stored in
+ * external memory, the page is loaded to a page frame first. In case that there is no page frame free, another page is
  * swapped out before to free a page frame.
  */
 
@@ -1146,7 +1146,7 @@ namespace seqan
  * @signature String::String(file);
  * @signature String::String(fileName[, openMode]);
  *
- * @param[in]     file     The @link File @endlink to use for reading and writing.  You must ensture that
+ * @param[in]     file     The @link File @endlink to use for reading and writing. You must ensure that
  *                         <tt>file</tt> is open as the string will not call <tt>open</tt> and <tt>close</tt>
  *                         on the file.
  * @param[in]     fileName The path to open. Type: <tt>char const *</tt>
@@ -1154,12 +1154,12 @@ namespace seqan
  *
  * @section Remarks
  *
- * When a file or file name is given, this file will be used for the ExternalString.  If the file exists, this file will
- * be used and determines the strings length and content.  If the file doesn't exist, a new and empty file will be
- * created and used for the string.  In both cases, the string won't delete the file in the destructor.
+ * When a file or file name is given, this file will be used for the ExternalString. If the file exists, this file will
+ * be used and determines the strings length and content. If the file doesn't exist, a new and empty file will be
+ * created and used for the string. In both cases, the string won't delete the file in the destructor.
  *
  * When no file is given (default c'tor) the string will be empty and no file is used until the string needs to swap out
- * page frames.  Then a temporary file will be used which will be deleted when the string is destroyed.
+ * page frames. Then a temporary file will be used which will be deleted when the string is destroyed.
  *
  * Instead of giving file or fileName to the constructor, you could also use the default constructor and call open or
  * openTemp afterwards to reach the same behaviour.
diff --git a/include/seqan/file/string_mmap.h b/include/seqan/file/string_mmap.h
index 3a37332..b4fb7ca 100644
--- a/include/seqan/file/string_mmap.h
+++ b/include/seqan/file/string_mmap.h
@@ -48,7 +48,7 @@
  *
  * relation to file_format_mmap.h unclear
  *
- * relation to string_external unclear, what benifit does string_mmap provide?
+ * relation to string_external unclear, what benefit does string_mmap provide?
  *
  */
 
@@ -481,12 +481,12 @@ namespace seqan
     inline bool
     _remap(String<TValue, MMap<TConfig> > &me, TCapSize new_capacity)
     {
-        typedef typename Size<String<TValue, MMap<TConfig> > >::Type    TSize;
-        typedef typename Size<typename TConfig::TFile>::Type            TFileSize;
+        typedef typename Size<String<TValue, MMap<TConfig> > >::Type    TSize SEQAN_UNUSED_TYPEDEF;
+        typedef typename Size<typename TConfig::TFile>::Type            TFileSize SEQAN_UNUSED_TYPEDEF;
 
         bool result = true;
 
-#ifndef PLATFORM_WINDOWS
+#ifndef STDLIB_VS
         // Windows doesn't allow to resize the file while having a mapped file segment
         // Thus, the following part is only supported on Linux/BSD/Mac OS
         TSize old_capacity = capacity(me);
diff --git a/include/seqan/find/find_base.h b/include/seqan/find/find_base.h
index b514d88..62304e9 100644
--- a/include/seqan/find/find_base.h
+++ b/include/seqan/find/find_base.h
@@ -194,7 +194,7 @@ struct Needle<Segment<THost, TSpec> const>
  * @section Examples
  *
  * The following example shows how one can search online for a pattern in a haystack.  Note that it is neccessary to
- * reset the finder befor searching for another pattern.
+ * reset the finder before searching for another pattern.
  *
  * @include demos/dox/find/finder_online.cpp
  *
@@ -203,7 +203,7 @@ struct Needle<Segment<THost, TSpec> const>
  * @include demos/dox/find/finder_online.cpp.stdout
  *
  * In contrast to the example above the code below shows how one can use a Finder with an index as base.  Again, note
- * that it is neccessary to reset the finder befor searching for another pattern.
+ * that it is neccessary to reset the finder before searching for another pattern.
  *
  * @include demos/dox/find/finder_index.cpp
  *
@@ -563,14 +563,14 @@ length(Finder<THaystack, TSpec> const & me)
  */
 
 template <typename THaystack, typename TSpec>
-inline typename Infix<THaystack>::Type
+inline typename InfixOnValue<THaystack>::Type
 infix(Finder<THaystack, TSpec> & me)
 {
     return infix(haystack(me), beginPosition(me), endPosition(me));
 }
 
 template <typename THaystack, typename TSpec>
-inline typename Infix<THaystack const>::Type
+inline typename InfixOnValue<THaystack const>::Type
 infix(Finder<THaystack, TSpec> const & me)
 {
     return infix(haystack(me), beginPosition(me), endPosition(me));
diff --git a/include/seqan/graph_msa/graph_align_tcoffee_msa.h b/include/seqan/graph_msa/graph_align_tcoffee_msa.h
index 87261d3..07c1cfb 100644
--- a/include/seqan/graph_msa/graph_align_tcoffee_msa.h
+++ b/include/seqan/graph_msa/graph_align_tcoffee_msa.h
@@ -134,7 +134,7 @@ public:
      * @brief Default constructor.
      * @signature MsaOptions::MsaOptions();
      */
-    MsaOptions() : rescore(true), outputFormat(0), build(0), pairwiseAlignmentMethod(0)
+    MsaOptions() : rescore(true), outputFormat(0), build(0), isDefaultPairwiseAlignment(true), pairwiseAlignmentMethod(0)
     {}
 };
 
diff --git a/include/seqan/index.h b/include/seqan/index.h
index 1014d70..b296116 100644
--- a/include/seqan/index.h
+++ b/include/seqan/index.h
@@ -74,6 +74,7 @@
 #endif  // #ifdef SEQAN_PARALLEL
 
 #include <seqan/index/index_base.h>
+#include <seqan/index/index_bidirectional.h>
 
 #include <seqan/index/find_index_binary.h>
 
@@ -135,6 +136,7 @@
 
 #include <seqan/index/index_esa_base.h>
 #include <seqan/index/index_esa_stree.h>
+#include <seqan/index/index_bidirectional_stree.h>
 #include <seqan/index/index_wotd.h>
 #include <seqan/index/index_dfi.h>
 #include <seqan/index/index_sa_stree.h>
@@ -170,6 +172,13 @@
 #include <seqan/index/index_fm_stree.h>
 
 // ----------------------------------------------------------------------------
+// Bidirectional FM index.
+// ----------------------------------------------------------------------------
+
+#include <seqan/index/index_bifm.h>
+#include <seqan/index/index_bifm_stree.h>
+
+// ----------------------------------------------------------------------------
 // Suffix tree algorithms.
 // ----------------------------------------------------------------------------
 
@@ -196,10 +205,6 @@
 // ----------------------------------------------------------------------------
 
 #include <seqan/index/index_view.h>
-// NOTE(esiragusa): CUDA FM-index is broken.
-//#ifdef PLATFORM_CUDA
-//#include <seqan/index/index_device.h>
-//#endif
 
 // ==========================================================================
 // Finder interface.
diff --git a/include/seqan/index/find2_backtracking.h b/include/seqan/index/find2_backtracking.h
index 1f17ea1..e51608a 100644
--- a/include/seqan/index/find2_backtracking.h
+++ b/include/seqan/index/find2_backtracking.h
@@ -776,7 +776,7 @@ _updateScore(Finder_<Index<TText, TTextIndexSpec>, Index<TPattern, TPatternIndex
 {
     typedef Index<TPattern, TPatternIndexSpec>                              TPatternIndex;
     typedef typename Fibre<TPatternIndex, FibreText>::Type const            TPatternFibreText;
-    typedef typename Infix<TPatternFibreText>::Type                         TPatternRepr;
+    typedef typename InfixOnValue<TPatternFibreText>::Type                  TPatternRepr;
     typedef typename Iterator<TPatternRepr, Standard>::Type                 TPatternReprIterator;
 
     // Get pattern read so far.
@@ -797,7 +797,7 @@ _updateScore(Finder_<Index<TText, TTextIndexSpec>, Index<TPattern, TPatternIndex
 {
     typedef Index<TPattern, TPatternIndexSpec>                              TPatternIndex;
     typedef typename Fibre<TPatternIndex, FibreText>::Type const            TPatternFibreText;
-    typedef typename Infix<TPatternFibreText>::Type                         TPatternRepr;
+    typedef typename InfixOnValue<TPatternFibreText>::Type                  TPatternRepr;
     typedef typename Iterator<TPatternRepr, Standard>::Type                 TPatternReprIterator;
 
     // Get last 2k + 1 pattern symbols.
@@ -818,7 +818,7 @@ _updateScore(Finder_<Index<TText, TTextIndexSpec>, Index<TPattern, TPatternIndex
 {
     typedef Index<TPattern, TPatternIndexSpec>                              TPatternIndex;
     typedef typename Fibre<TPatternIndex, FibreText>::Type const            TPatternFibreText;
-    typedef typename Infix<TPatternFibreText>::Type                         TPatternRepr;
+    typedef typename InfixOnValue<TPatternFibreText>::Type                  TPatternRepr;
     typedef typename Iterator<TPatternRepr, Standard>::Type                 TPatternReprIterator;
 
     // Get last pattern symbols.
@@ -905,7 +905,7 @@ _getScore(Finder_<Index<TText, TTextIndexSpec>, Index<TPattern, TPatternIndexSpe
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TTextIndexSpec, typename TPattern, typename TPatternIndexSpec, typename TDistance, typename TSpec>
-SEQAN_HOST_DEVICE inline
+inline
 typename TextIterator_<Index<TText, TTextIndexSpec>, Index<TPattern, TPatternIndexSpec>, Backtracking<TDistance, TSpec> >::Type &
 _textIterator(Finder_<Index<TText, TTextIndexSpec>, Index<TPattern, TPatternIndexSpec>, Backtracking<TDistance, TSpec> > & finder)
 {
@@ -913,7 +913,7 @@ _textIterator(Finder_<Index<TText, TTextIndexSpec>, Index<TPattern, TPatternInde
 }
 
 template <typename TText, typename TTextIndexSpec, typename TPattern, typename TPatternIndexSpec, typename TDistance, typename TSpec>
-SEQAN_HOST_DEVICE inline
+inline
 typename TextIterator_<Index<TText, TTextIndexSpec>, Index<TPattern, TPatternIndexSpec>, Backtracking<TDistance, TSpec> >::Type const &
 _textIterator(Finder_<Index<TText, TTextIndexSpec>, Index<TPattern, TPatternIndexSpec>, Backtracking<TDistance, TSpec> > const & finder)
 {
@@ -925,7 +925,7 @@ _textIterator(Finder_<Index<TText, TTextIndexSpec>, Index<TPattern, TPatternInde
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TTextIndexSpec, typename TPattern, typename TPatternIndexSpec, typename TDistance, typename TSpec>
-SEQAN_HOST_DEVICE inline
+inline
 typename PatternIterator_<Index<TText, TTextIndexSpec>, Index<TPattern, TPatternIndexSpec>, Backtracking<TDistance, TSpec> >::Type &
 _patternIterator(Finder_<Index<TText, TTextIndexSpec>, Index<TPattern, TPatternIndexSpec>, Backtracking<TDistance, TSpec> > & finder)
 {
@@ -933,7 +933,7 @@ _patternIterator(Finder_<Index<TText, TTextIndexSpec>, Index<TPattern, TPatternI
 }
 
 template <typename TText, typename TTextIndexSpec, typename TPattern, typename TPatternIndexSpec, typename TDistance, typename TSpec>
-SEQAN_HOST_DEVICE inline
+inline
 typename PatternIterator_<Index<TText, TTextIndexSpec>, Index<TPattern, TPatternIndexSpec>, Backtracking<TDistance, TSpec> >::Type const &
 _patternIterator(Finder_<Index<TText, TTextIndexSpec>, Index<TPattern, TPatternIndexSpec>, Backtracking<TDistance, TSpec> > const & finder)
 {
diff --git a/include/seqan/index/find2_base.h b/include/seqan/index/find2_base.h
index 182ed1a..1ac4bf1 100644
--- a/include/seqan/index/find2_base.h
+++ b/include/seqan/index/find2_base.h
@@ -156,14 +156,14 @@ struct Score_
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TPattern, typename TSpec>
-SEQAN_HOST_DEVICE inline typename TextIterator_<TText, TPattern, TSpec>::Type &
+inline typename TextIterator_<TText, TPattern, TSpec>::Type &
 _textIterator(Finder_<TText, TPattern, TSpec> & finder)
 {
     return finder._textIt;
 }
 
 template <typename TText, typename TPattern, typename TSpec>
-SEQAN_HOST_DEVICE inline typename TextIterator_<TText, TPattern, TSpec>::Type const &
+inline typename TextIterator_<TText, TPattern, TSpec>::Type const &
 _textIterator(Finder_<TText, TPattern, TSpec> const & finder)
 {
     return finder._textIt;
@@ -174,14 +174,14 @@ _textIterator(Finder_<TText, TPattern, TSpec> const & finder)
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TPattern, typename TSpec>
-SEQAN_HOST_DEVICE inline typename PatternIterator_<TText, TPattern, TSpec>::Type &
+inline typename PatternIterator_<TText, TPattern, TSpec>::Type &
 _patternIterator(Finder_<TText, TPattern, TSpec> & finder)
 {
     return finder._patternIt;
 }
 
 template <typename TText, typename TPattern, typename TSpec>
-SEQAN_HOST_DEVICE inline typename PatternIterator_<TText, TPattern, TSpec>::Type const &
+inline typename PatternIterator_<TText, TPattern, TSpec>::Type const &
 _patternIterator(Finder_<TText, TPattern, TSpec> const & finder)
 {
     return finder._patternIt;
@@ -192,7 +192,7 @@ _patternIterator(Finder_<TText, TPattern, TSpec> const & finder)
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TPattern, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Score_<TSpec>::Type
+inline typename Score_<TSpec>::Type
 _getScore(Finder_<TText, TPattern, TSpec> const & finder)
 {
     return finder._score;
@@ -203,7 +203,7 @@ _getScore(Finder_<TText, TPattern, TSpec> const & finder)
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TPattern, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Score_<TSpec>::Type
+inline typename Score_<TSpec>::Type
 _getScoreThreshold(Finder_<TText, TPattern, TSpec> const & finder)
 {
     return finder._scoreThreshold;
@@ -214,7 +214,7 @@ _getScoreThreshold(Finder_<TText, TPattern, TSpec> const & finder)
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TPattern, typename TSpec, typename TScore>
-SEQAN_HOST_DEVICE inline void
+inline void
 _setScoreThreshold(Finder_<TText, TPattern, TSpec> & finder, TScore score)
 {
     finder._scoreThreshold = score;
@@ -225,7 +225,7 @@ _setScoreThreshold(Finder_<TText, TPattern, TSpec> & finder, TScore score)
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TIndexSpec, typename TPattern, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 clear(Finder_<TText, TPattern, TSpec> & finder)
 {
     // NOTE(esiragusa): if find wasn't called yet, _textIterator is uninitialized.
diff --git a/include/seqan/index/find2_functors.h b/include/seqan/index/find2_functors.h
index 213fd94..61bd274 100644
--- a/include/seqan/index/find2_functors.h
+++ b/include/seqan/index/find2_functors.h
@@ -72,7 +72,7 @@ struct OccurrencesCounter_
     }
 
     template <typename TFinder>
-    inline SEQAN_HOST_DEVICE void
+    inline void
     operator() (TFinder const & finder)
     {
         counts[getThreadId()] += countOccurrences(_textIterator(finder));
@@ -89,14 +89,6 @@ struct Member<OccurrencesCounter_<TIndex, TSpec>, Counts_>
     typedef String<typename Size<TIndex>::Type> Type;
 };
 
-#ifdef PLATFORM_CUDA
-template <typename TIndex, typename TSpec>
-struct Member<OccurrencesCounter_<TIndex, Device<TSpec> >, Counts_>
-{
-    typedef thrust::device_vector<typename Size<TIndex>::Type>  Type;
-};
-#endif
-
 template <typename TIndex, typename TSpec>
 struct Member<OccurrencesCounter_<TIndex, View<Device<TSpec> > >, Counts_>
 {
@@ -171,15 +163,6 @@ _getCount(OccurrencesCounter_<TIndex, TSpec> & counter)
     return sum(counter.counts);
 }
 
-#ifdef PLATFORM_CUDA
-template <typename TIndex, typename TSpec>
-inline typename Size<TIndex>::Type
-_getCount(OccurrencesCounter_<TIndex, Device<TSpec> > & counter)
-{
-    return thrust::reduce(begin(counter.counts, Standard()), end(counter.counts, Standard()));
-}
-#endif
-
 // --------------------------------------------------------------------------
 // Function countOccurrences()
 // --------------------------------------------------------------------------
diff --git a/include/seqan/index/find2_index.h b/include/seqan/index/find2_index.h
index 03f9836..bf3c356 100644
--- a/include/seqan/index/find2_index.h
+++ b/include/seqan/index/find2_index.h
@@ -106,20 +106,20 @@ struct Finder_<Index<TText, TIndexSpec>, TPattern, TSpec>
     TScore              _scoreThreshold;
     TScore              _score;
 
-    SEQAN_HOST_DEVICE
+   
     Finder_() :
         _scoreThreshold(),
         _score()
     {}
 
-    SEQAN_HOST_DEVICE
+   
     Finder_(TIndex /* const */ & index) :
         _textIt(index),
         _scoreThreshold(),
         _score()
     {}
 
-    SEQAN_HOST_DEVICE
+   
     Finder_(TTextIterator const & textIt) :
         _textIt(textIt),
         _scoreThreshold(),
@@ -136,7 +136,7 @@ struct Finder_<Index<TText, TIndexSpec>, TPattern, TSpec>
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TIndexSpec, typename TPattern, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 clear(Finder_<Index<TText, TIndexSpec>, TPattern, TSpec> & finder)
 {
     // NOTE(esiragusa): should clear() be called on text/patternIt?
@@ -151,7 +151,7 @@ clear(Finder_<Index<TText, TIndexSpec>, TPattern, TSpec> & finder)
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TIndexSpec, typename TPattern, typename TDelegate>
-SEQAN_HOST_DEVICE inline void
+inline void
 _find(Finder_<Index<TText, TIndexSpec>, TPattern, FinderSTree> & finder,
       TPattern const & pattern,
       TDelegate & delegate)
@@ -168,7 +168,7 @@ _find(Finder_<Index<TText, TIndexSpec>, TPattern, FinderSTree> & finder,
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TPattern, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Score_<Backtracking<HammingDistance, TSpec> >::Type
+inline typename Score_<Backtracking<HammingDistance, TSpec> >::Type
 _getVertexScore(Finder_<TText, TPattern, Backtracking<HammingDistance, TSpec> > const & finder)
 {
     return !ordEqual(parentEdgeLabel(_textIterator(finder)), value(_patternIterator(finder)));
@@ -179,7 +179,7 @@ _getVertexScore(Finder_<TText, TPattern, Backtracking<HammingDistance, TSpec> >
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TIndexSpec, typename TPattern, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 _printState(Finder_<Index<TText, TIndexSpec>, TPattern, Backtracking<HammingDistance, TSpec> > & finder)
 {
     std::cout << "Text:        " << parentEdgeLabel(_textIterator(finder)) << std::endl;
@@ -195,7 +195,7 @@ _printState(Finder_<Index<TText, TIndexSpec>, TPattern, Backtracking<HammingDist
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TIndexSpec, typename TPattern, typename TSpec, typename TDelegate>
-SEQAN_HOST_DEVICE inline void
+inline void
 _find(Finder_<Index<TText, TIndexSpec>, TPattern, Backtracking<HammingDistance, TSpec> > & finder,
       TPattern const & pattern,
       TDelegate & delegate)
diff --git a/include/seqan/index/find2_index_multi.h b/include/seqan/index/find2_index_multi.h
index bc5fcb7..c17fac2 100644
--- a/include/seqan/index/find2_index_multi.h
+++ b/include/seqan/index/find2_index_multi.h
@@ -35,11 +35,6 @@
 #ifndef SEQAN_INDEX_FIND_INDEX_MULTIPLE_H
 #define SEQAN_INDEX_FIND_INDEX_MULTIPLE_H
 
-#ifdef PLATFORM_CUDA
-#include <thrust/sort.h>
-#include <thrust/reduce.h>
-#endif
-
 namespace seqan {
 
 // ============================================================================
@@ -157,7 +152,7 @@ struct FinderContext_<TText, TPattern, Multiple<TSpec>, TDelegate>
 //    TPatternIterator _patternIt;
     unsigned        _patternIt;
 
-    explicit SEQAN_HOST_DEVICE
+    explicit
     FinderContext_(TFinder & finder, TDelegate & delegate) :
         finder(finder),
         delegate(delegate),
@@ -172,7 +167,7 @@ struct FinderContext_<TText, TPattern, Multiple<TSpec>, TDelegate>
     {}
 
     template <typename TOther>
-    SEQAN_HOST_DEVICE inline void
+    inline void
     operator()(TOther & /* other */)
     {
         delegate(*this);
@@ -239,20 +234,6 @@ struct Member<Pattern<TNeedles, Multiple<TSpec> >, Hashes_>
     typedef Nothing Type;
 };
 
-#ifdef PLATFORM_CUDA
-template <typename TValue, typename TAlloc, typename TSSetSpec, typename TSpec>
-struct Member<Pattern<StringSet<thrust::device_vector<TValue, TAlloc>, TSSetSpec>, Multiple<TSpec> >, Hashes_>
-{
-    typedef thrust::device_vector<TValue, TAlloc>   TNeedle_;
-    typedef StringSet<TNeedle_, TSSetSpec>          TNeedles_;
-    typedef Pattern<TNeedles_, Multiple<TSpec> >    TPattern_;
-    typedef typename PatternShape_<TPattern_>::Type TShape_;
-    typedef typename Value<TShape_>::Type           THash_;
-
-    typedef thrust::device_vector<THash_>           Type;
-};
-#endif
-
 template <typename TNeedle, typename TViewSpec, typename TSSetSpec, typename TSpec>
 struct Member<Pattern<StringSet<ContainerView<TNeedle, TViewSpec>, TSSetSpec>, Multiple<TSpec> >, Hashes_>
 {
@@ -270,18 +251,6 @@ struct Member<Pattern<TNeedles, Multiple<TSpec> >, Permutation_>
     typedef Nothing Type;
 };
 
-#ifdef PLATFORM_CUDA
-template <typename TValue, typename TAlloc, typename TSSetSpec, typename TSpec>
-struct Member<Pattern<StringSet<thrust::device_vector<TValue, TAlloc>, TSSetSpec>, Multiple<TSpec> >, Permutation_>
-{
-    typedef thrust::device_vector<TValue, TAlloc>   TNeedle_;
-    typedef StringSet<TNeedle_, TSSetSpec>          TNeedles_;
-    typedef typename Size<TNeedles_>::Type          TSize_;
-
-    typedef thrust::device_vector<TSize_>           Type;
-};
-#endif
-
 template <typename TNeedle, typename TViewSpec, typename TSSetSpec, typename TSpec>
 struct Member<Pattern<StringSet<ContainerView<TNeedle, TViewSpec>, TSSetSpec>, Multiple<TSpec> >, Permutation_>
 {
@@ -310,66 +279,6 @@ struct Member<Finder_<TText, TPattern, Multiple<TSpec> >, Factory_>
 //};
 
 // ============================================================================
-// Kernels
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// Kernel _preprocessKernel()                                         [Pattern]
-// ----------------------------------------------------------------------------
-
-#ifdef PLATFORM_CUDA
-template <typename TNeedles, typename TSpec>
-SEQAN_GLOBAL void
-_preprocessKernel(Pattern<TNeedles, Multiple<TSpec> > pattern)
-{
-    typedef Pattern<TNeedles, Multiple<TSpec> >     TPattern;
-    typedef typename PatternShape_<TPattern>::Type  TShape;
-
-    unsigned threadId = getThreadId();
-
-    // Return silently if there is no job left.
-    if (threadId >= length(pattern.data_host)) return;
-
-    // Compute the hash of a needle.
-    TShape shape;
-    SEQAN_ASSERT_LEQ(weight(shape), length(pattern.data_host[threadId]));
-    pattern._hashes[threadId] = hash(shape, begin(pattern.data_host[threadId], Standard()));
-
-    // Fill with the identity permutation.
-    pattern._permutation[threadId] = threadId;
-}
-#endif
-
-// ----------------------------------------------------------------------------
-// Kernel _findKernel()                                                [Finder]
-// ----------------------------------------------------------------------------
-
-#ifdef PLATFORM_CUDA
-template <typename TText, typename TPattern, typename TSpec, typename TDelegate>
-SEQAN_GLOBAL void
-_findKernel(Finder_<TText, TPattern, Multiple<TSpec> > finder, TPattern pattern, TDelegate delegate)
-{
-    typedef FinderContext_<TText, TPattern, Multiple<TSpec>, TDelegate> TFinderContext;
-
-    unsigned threadId = getThreadId();
-
-    // Return if there is no job left.
-    if (threadId >= length(pattern.data_host)) return;
-
-    // Instantiate a thread context.
-    TFinderContext ctx(finder, delegate);
-
-    // Get the sorted needle id.
-    ctx._patternIt = pattern._permutation[threadId];
-
-    // Find a single needle.
-    clear(ctx.baseFinder);
-    _setScoreThreshold(ctx.baseFinder, _getScoreThreshold(finder));
-    _find(ctx.baseFinder, pattern.data_host[ctx._patternIt], ctx);
-}
-#endif
-
-// ============================================================================
 // Functions
 // ============================================================================
 
@@ -382,36 +291,6 @@ inline void
 _preprocess(Pattern<TNeedles, Multiple<TSpec> > & /* pattern */, ExecHost const & /* tag */) {}
 
 // ----------------------------------------------------------------------------
-// Function _preprocess()                                 [Pattern; ExecDevice]
-// ----------------------------------------------------------------------------
-
-#ifdef PLATFORM_CUDA
-template <typename TNeedles, typename TSpec>
-inline void
-_preprocess(Pattern<TNeedles, Multiple<TSpec> > & pattern, ExecDevice const & /* tag */)
-{
-    typedef Pattern<TNeedles, Multiple<TSpec> > TPattern;
-    typedef typename Size<TNeedles>::Type       TSize;
-
-    TSize needlesCount = length(needle(pattern));
-
-    resize(pattern._hashes, needlesCount, Exact());
-    resize(pattern._permutation, needlesCount, Exact());
-
-    // Compute grid size.
-    unsigned ctaSize = CtaSize<TPattern>::VALUE;
-    unsigned activeBlocks = (needlesCount + ctaSize - 1) / ctaSize;
-
-    // Launch the preprocessing kernel.
-    _preprocessKernel<<<activeBlocks, ctaSize>>>(view(pattern));
-    SEQAN_ASSERT_EQ(cudaGetLastError(), cudaSuccess);
-
-    // Sort the pattern.
-    thrust::sort_by_key(pattern._hashes.begin(), pattern._hashes.end(), pattern._permutation.begin());
-}
-#endif
-
-// ----------------------------------------------------------------------------
 // Function _preprocess()                                             [Pattern]
 // ----------------------------------------------------------------------------
 
@@ -429,7 +308,7 @@ _preprocess(Pattern<TNeedles, Multiple<TSpec> > & pattern)
 // ----------------------------------------------------------------------------
 
 //template <typename TNeedles, typename TSpec, typename TOtherNeedles>
-//SEQAN_HOST_DEVICE inline void
+//inline void
 //setHost(Pattern<TNeedles, Multiple<TSpec> > & pattern, TOtherNeedles const & needles)
 //{
 //}
@@ -496,41 +375,6 @@ _find(Finder_<TText, TPattern, Multiple<TSpec> > & finder,
 }
 
 // ----------------------------------------------------------------------------
-// Function _find()                                        [Finder; ExecDevice]
-// ----------------------------------------------------------------------------
-
-#ifdef PLATFORM_CUDA
-template <typename TText, typename TPattern, typename TSpec, typename TDelegate>
-inline void
-_find(Finder_<TText, TPattern, Multiple<TSpec> > & finder,
-      TPattern /* const */ & pattern,
-      TDelegate & delegate,
-      ExecDevice const & /* tag */)
-{
-    typedef Finder_<TText, TPattern, Multiple<TSpec> >  TFinder;
-    typedef typename View<TFinder>::Type                TFinderView;
-
-    // NOTE(esiragusa): Use this to switch to persistent threads.
-//    unsigned activeBlocks = cudaMaxActiveBlocks(_findKernel<TTextView, TPatternsView, TSpec, TDelegateView>, ctaSize, 0);
-//    setMaxObjects(finder._factory, activeBlocks * ctaSize);
-
-    // Compute grid size.
-    unsigned ctaSize = CtaSize<TFinderView>::VALUE;
-    unsigned activeBlocks = (length(needle(pattern)) + ctaSize - 1) / ctaSize;
-
-    // Initialize the iterator factory.
-    _initFactory(finder, 33 + 1, length(needle(pattern)));
-    // TODO(esiragusa): Compute the longest pattern.
-    // NOTE(esiragusa): back/value do not work on thrust::device_vector.
-//    _initFactory(finder, length(back(needle(pattern))) + 1, length(needle(pattern)));
-
-    // Launch the find kernel.
-    _findKernel<<<activeBlocks, ctaSize>>>(view(finder), view(pattern), view(delegate));
-    SEQAN_ASSERT_EQ(cudaGetLastError(), cudaSuccess);
-}
-#endif
-
-// ----------------------------------------------------------------------------
 // Function _find()                                                    [Finder]
 // ----------------------------------------------------------------------------
 
@@ -582,14 +426,14 @@ view(Finder_<TText, TPattern, Multiple<TSpec> > & finder)
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TPattern, typename TSpec, typename TDelegate>
-inline SEQAN_HOST_DEVICE typename TextIterator_<TText, TPattern, Multiple<TSpec> >::Type &
+inline typename TextIterator_<TText, TPattern, Multiple<TSpec> >::Type &
 _textIterator(FinderContext_<TText, TPattern, Multiple<TSpec>, TDelegate> & ctx)
 {
     return _textIterator(ctx.baseFinder);
 }
 
 template <typename TText, typename TPattern, typename TSpec, typename TDelegate>
-inline SEQAN_HOST_DEVICE typename TextIterator_<TText, TPattern, Multiple<TSpec> >::Type const &
+inline typename TextIterator_<TText, TPattern, Multiple<TSpec> >::Type const &
 _textIterator(FinderContext_<TText, TPattern, Multiple<TSpec>, TDelegate> const & ctx)
 {
     return _textIterator(ctx.baseFinder);
@@ -600,7 +444,7 @@ _textIterator(FinderContext_<TText, TPattern, Multiple<TSpec>, TDelegate> const
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TPattern, typename TSpec, typename TDelegate>
-SEQAN_HOST_DEVICE inline typename Score_<TSpec>::Type
+inline typename Score_<TSpec>::Type
 _getScore(FinderContext_<TText, TPattern, Multiple<TSpec>, TDelegate> const & ctx)
 {
     return _getScore(ctx.baseFinder);
diff --git a/include/seqan/index/find2_vstree_factory.h b/include/seqan/index/find2_vstree_factory.h
index 0baee27..74815f4 100644
--- a/include/seqan/index/find2_vstree_factory.h
+++ b/include/seqan/index/find2_vstree_factory.h
@@ -179,7 +179,7 @@ host(Factory<Iter<TIndex, VSTree<TSpec> > > & factory)
 }
 
 template <typename TIndex, typename TSpec>
-inline SEQAN_HOST_DEVICE typename Host<Factory<Iter<TIndex, VSTree<TSpec> > > >::Type &
+inline typename Host<Factory<Iter<TIndex, VSTree<TSpec> > > >::Type &
 _host(Factory<Iter<TIndex, VSTree<TSpec> > > & factory, True const & /* isView */)
 {
     return factory._index;
@@ -200,7 +200,7 @@ host(Factory<Iter<TIndex, VSTree<TSpec> > > const & factory)
 }
 
 template <typename TIndex, typename TSpec>
-inline SEQAN_HOST_DEVICE typename Host<Factory<Iter<TIndex, VSTree<TSpec> > > const>::Type &
+inline typename Host<Factory<Iter<TIndex, VSTree<TSpec> > > const>::Type &
 _host(Factory<Iter<TIndex, VSTree<TSpec> > > const & factory, True const & /* isView */)
 {
     return factory._index;
@@ -295,7 +295,7 @@ build(Factory<Iter<TIndex, VSTree<TopDown<ParentLinks<TSpec> > > > > & factory)
 // ----------------------------------------------------------------------------
 
 template <typename TIndex, typename TSpec, typename TId>
-inline SEQAN_HOST_DEVICE Iter<TIndex, VSTree<TSpec> >
+inline Iter<TIndex, VSTree<TSpec> >
 getObject(Factory<Iter<TIndex, VSTree<TSpec> > > & factory, TId /* objectId */)
 {
     return Iter<TIndex, VSTree<TSpec> >(_host(factory, typename IsView<TIndex>::Type()));
@@ -306,7 +306,7 @@ getObject(Factory<Iter<TIndex, VSTree<TSpec> > > & factory, TId /* objectId */)
 // ----------------------------------------------------------------------------
 
 template <typename TIndex, typename TSpec, typename TId>
-inline SEQAN_HOST_DEVICE Iter<TIndex, VSTree<TopDown<ParentLinks<TSpec> > > >
+inline Iter<TIndex, VSTree<TopDown<ParentLinks<TSpec> > > >
 getObject(Factory<Iter<TIndex, VSTree<TopDown<ParentLinks<TSpec> > > > > & factory, TId objectId)
 {
     SEQAN_ASSERT_LT(objectId, factory._maxObjects);
diff --git a/include/seqan/index/find_backtracking.h b/include/seqan/index/find_backtracking.h
index b7c26c8..d95798c 100644
--- a/include/seqan/index/find_backtracking.h
+++ b/include/seqan/index/find_backtracking.h
@@ -177,7 +177,7 @@ public:
     Pattern(TNeedle && needle,
             SEQAN_CTOR_DISABLE_IF(IsSameType<typename std::remove_reference<TNeedle>::type const &, Pattern const &>))
     {
-        ignoreUnusedVaraiableWarning(dummy);
+        ignoreUnusedVariableWarning(dummy);
         setHost(*this, std::forward<TNeedle>(needle));
     }
 
diff --git a/include/seqan/index/find_index_binary.h b/include/seqan/index/find_index_binary.h
index e926109..79edad5 100644
--- a/include/seqan/index/find_index_binary.h
+++ b/include/seqan/index/find_index_binary.h
@@ -511,7 +511,7 @@ namespace seqan
         typename Difference<TText>::Type parentRepLen = 0)
     {    // find first element not before query, using operator<
         //typedef typename Difference<TText>::Type            TDiff;
-        typedef typename Suffix<TText>::Type                TSuffix;
+        typedef typename SuffixOnValue<TText>::Type         TSuffix;
         typedef typename Iterator<TSuffix, Standard>::Type    TTextIter;
         typedef typename Iterator<TQuery, Standard>::Type    TQueryIter;
         typedef typename Value<TSuffix>::Type               TTextAlphabet;
@@ -557,7 +557,7 @@ namespace seqan
         typename Difference<TText>::Type parentRepLen = 0)
     {    // find first element not before query, using operator<
         typedef typename Difference<TText>::Type            TDiff;
-        typedef typename Suffix<TText>::Type                TSuffix;
+        typedef typename SuffixOnValue<TText>::Type         TSuffix;
         typedef typename Iterator<TSuffix, Standard>::Type    TTextIter;
         typedef typename Iterator<TQuery, Standard>::Type    TQueryIter;
         typedef typename Value<TSuffix>::Type               TTextAlphabet;
@@ -613,7 +613,7 @@ namespace seqan
         typename Difference<TText>::Type parentRepLen = 0)
     {    // find first element that query is before, using operator<
         //typedef typename Difference<TText>::Type            TDiff;
-        typedef typename Suffix<TText>::Type                TSuffix;
+        typedef typename SuffixOnValue<TText>::Type         TSuffix;
         typedef typename Iterator<TSuffix, Standard>::Type    TTextIter;
         typedef typename Iterator<TQuery, Standard>::Type    TQueryIter;
         typedef typename Value<TSuffix>::Type               TTextAlphabet;
@@ -659,9 +659,9 @@ namespace seqan
         typename Difference<TText>::Type parentRepLen = 0)
     {    // find first element that query is before, using operator<
         typedef typename Difference<TText>::Type            TDiff;
-        typedef typename Suffix<TText>::Type                TSuffix;
-        typedef typename Iterator<TSuffix, Standard>::Type    TTextIter;
-        typedef typename Iterator<TQuery, Standard>::Type    TQueryIter;
+        typedef typename SuffixOnValue<TText>::Type         TSuffix;
+        typedef typename Iterator<TSuffix, Standard>::Type  TTextIter;
+        typedef typename Iterator<TQuery, Standard>::Type   TQueryIter;
         typedef typename Value<TSuffix>::Type               TTextAlphabet;
 
         TDiff lcpLower = 0;
@@ -715,7 +715,7 @@ namespace seqan
         typename Difference<TText>::Type parentRepLen = 0)
     {    // find range equivalent to query, using operator<
         //typedef typename Difference<TText>::Type            TDiff;
-        typedef typename Suffix<TText>::Type                TSuffix;
+        typedef typename SuffixOnValue<TText>::Type           TSuffix;
         typedef typename Iterator<TSuffix, Standard>::Type    TTextIter;
         typedef typename Iterator<TQuery, Standard>::Type    TQueryIter;
         typedef typename Iterator<TSA, Standard>::Type        TSAIter;
@@ -775,7 +775,7 @@ namespace seqan
         typename Difference<TText>::Type parentRepLen = 0)
     {    // find range equivalent to query, using operator<
         typedef typename Difference<TText>::Type            TDiff;
-        typedef typename Suffix<TText>::Type                TSuffix;
+        typedef typename SuffixOnValue<TText>::Type           TSuffix;
         typedef typename Iterator<TSuffix, Standard>::Type    TTextIter;
         typedef typename Iterator<TQuery, Standard>::Type    TQueryIter;
         typedef typename Iterator<TSA, Standard>::Type        TSAIter;
@@ -1163,7 +1163,7 @@ namespace seqan
         TDiff_ lcpUpper)
     {    // find first element not before query, using operator<
         typedef typename Difference<TText>::Type            TDiff;
-        typedef typename Suffix<TText>::Type                TSuffix;
+        typedef typename SuffixOnValue<TText>::Type         TSuffix;
         typedef typename Iterator<TSuffix, Standard>::Type    TTextIter;
         typedef typename Iterator<TSA, Standard>::Type        TSAIter;
         typedef SearchTreeIterator< TLCP, TSpec >            TLCPTreeIt;
@@ -1364,7 +1364,7 @@ namespace seqan
         TDiff_ lcpUpper)
     {    // find first element not before query, using operator<
         typedef typename Difference<TText>::Type            TDiff;
-        typedef typename Suffix<TText>::Type                TSuffix;
+        typedef typename SuffixOnValue<TText>::Type         TSuffix;
         typedef typename Iterator<TSuffix, Standard>::Type    TTextIter;
         typedef typename Iterator<TSA, Standard>::Type        TSAIter;
         typedef SearchTreeIterator< TLCP, TSpec >            TLCPTreeIt;
@@ -1535,7 +1535,7 @@ namespace seqan
         TQuery &query)
     {    // find first element not before query, using operator<
         typedef typename Difference<TText>::Type            TDiff;
-        typedef typename Suffix<TText>::Type                TSuffix;
+        typedef typename SuffixOnValue<TText>::Type         TSuffix;
         typedef typename Iterator<TSuffix, Standard>::Type    TTextIter;
         typedef typename Iterator<TSA, Standard>::Type        TSAIter;
         typedef SearchTreeIterator< TLCP, TSpec >            TLCPTreeIt;
diff --git a/include/seqan/index/index_base.h b/include/seqan/index/index_base.h
index 402fc12..bb74311 100644
--- a/include/seqan/index/index_base.h
+++ b/include/seqan/index/index_base.h
@@ -573,11 +573,11 @@ template <
 
     template < typename TText, typename TSpec >
     struct Infix< Index<TText, TSpec> >:
-        public Infix<TText> {};
+        InfixOnValue<TText> {};
 
     template < typename TText, typename TSpec >
     struct Infix< Index<TText, TSpec> const >:
-        public Infix<TText> {};
+        InfixOnValue<TText> {};
 
 //////////////////////////////////////////////////////////////////////////////
 // default table type
@@ -806,12 +806,12 @@ template <
 //////////////////////////////////////////////////////////////////////////////
 
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec>, FibreSA>::Type &
+    inline typename Fibre<Index<TText, TSpec>, FibreSA>::Type &
     getFibre(Index<TText, TSpec> &index, FibreSA) {
         return index.sa;
     }
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec> const, FibreSA>::Type &
+    inline typename Fibre<Index<TText, TSpec> const, FibreSA>::Type &
     getFibre(Index<TText, TSpec> const &index, FibreSA) {
         return index.sa;
     }
@@ -819,12 +819,12 @@ template <
 //////////////////////////////////////////////////////////////////////////////
 
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec>, FibreIsa>::Type &
+    inline typename Fibre<Index<TText, TSpec>, FibreIsa>::Type &
     getFibre(Index<TText, TSpec> &index, FibreIsa) {
         return index.isa;
     }
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec> const, FibreIsa>::Type &
+    inline typename Fibre<Index<TText, TSpec> const, FibreIsa>::Type &
     getFibre(Index<TText, TSpec> const &index, FibreIsa) {
         return index.isa;
     }
@@ -878,12 +878,12 @@ template <
 //////////////////////////////////////////////////////////////////////////////
 
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec>, FibreLcp>::Type &
+    inline typename Fibre<Index<TText, TSpec>, FibreLcp>::Type &
     getFibre(Index<TText, TSpec> &index, FibreLcp) {
         return index.lcp;
     }
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec> const, FibreLcp>::Type &
+    inline typename Fibre<Index<TText, TSpec> const, FibreLcp>::Type &
     getFibre(Index<TText, TSpec> const &index, FibreLcp) {
         return index.lcp;
     }
@@ -904,12 +904,12 @@ template <
 //////////////////////////////////////////////////////////////////////////////
 
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec>, FibreChildtab>::Type &
+    inline typename Fibre<Index<TText, TSpec>, FibreChildtab>::Type &
     getFibre(Index<TText, TSpec> &index, FibreChildtab) {
         return index.childtab;
     }
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec> const, FibreChildtab>::Type &
+    inline typename Fibre<Index<TText, TSpec> const, FibreChildtab>::Type &
     getFibre(Index<TText, TSpec> const &index, FibreChildtab) {
         return index.childtab;
     }
@@ -917,12 +917,12 @@ template <
 //////////////////////////////////////////////////////////////////////////////
 
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec>, FibreBwt>::Type &
+    inline typename Fibre<Index<TText, TSpec>, FibreBwt>::Type &
     getFibre(Index<TText, TSpec> &index, FibreBwt) {
         return index.bwt;
     }
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec> const, FibreBwt>::Type &
+    inline typename Fibre<Index<TText, TSpec> const, FibreBwt>::Type &
     getFibre(Index<TText, TSpec> const &index, FibreBwt) {
         return index.bwt;
     }
@@ -954,7 +954,7 @@ template <
  */
 
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Size<Index<TText, TSpec> >::Type
+    inline typename Size<Index<TText, TSpec> >::Type
     length(Index<TText, TSpec> const &index) {
         return length(indexRawText(index));
     }
@@ -1010,14 +1010,14 @@ template <
 //////////////////////////////////////////////////////////////////////////////
 // TODO(singer): Since this is a public function it should be documented
     template <typename TSeqNo, typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename GetSequenceByNo< Index<TText, TSpec> >::Type
+    inline typename GetSequenceByNo< Index<TText, TSpec> >::Type
     getSequenceByNo(TSeqNo seqNo, Index<TText, TSpec> &index)
     {
         return getSequenceByNo(seqNo, indexText(index));
     }
 
     template <typename TSeqNo, typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename GetSequenceByNo< Index<TText, TSpec> const>::Type
+    inline typename GetSequenceByNo< Index<TText, TSpec> const>::Type
     getSequenceByNo(TSeqNo seqNo, Index<TText, TSpec> const &index)
     {
         return getSequenceByNo(seqNo, indexText(index));
@@ -1026,7 +1026,7 @@ template <
 //////////////////////////////////////////////////////////////////////////////
 // TODO(singer): Since this is a public function it should be documented
     template <typename TSeqNo, typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Size<Index<TText, TSpec> >::Type
+    inline typename Size<Index<TText, TSpec> >::Type
     sequenceLength(TSeqNo seqNo, Index<TText, TSpec> const &index) {
         return sequenceLength(seqNo, indexText(index));
     }
@@ -1034,14 +1034,14 @@ template <
 //////////////////////////////////////////////////////////////////////////////
 // TODO(singer): Since this is a public function it should be documented
     template <typename TPos, typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Size<Index<TText, TSpec> >::Type
+    inline typename Size<Index<TText, TSpec> >::Type
     suffixLength(TPos pos, Index<TText, TSpec> const &index)
     {
         return length(indexText(index)) - pos;
     }
 
     template <typename TPos, typename TString, typename TSSetSpec, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Size<Index<StringSet<TString, TSSetSpec>, TSpec> >::Type
+    inline typename Size<Index<StringSet<TString, TSSetSpec>, TSpec> >::Type
     suffixLength(TPos pos, Index<StringSet<TString, TSSetSpec>, TSpec> const &index)
     {
         typename StringSetLimits<StringSet<TString, TSSetSpec> >::Type const &limits = stringSetLimits(index);
@@ -1101,14 +1101,14 @@ template <
 // infix
 
     template <typename TText, typename TSpec, typename TPosBegin, typename TPosEnd>
-    inline typename Infix<TText>::Type
+    inline typename InfixOnValue<TText>::Type
     infix(Index<TText, TSpec> &index, TPosBegin pos_begin, TPosEnd pos_end)
     {
         return infix(indexText(index), pos_begin, pos_end);
     }
 
     template <typename TText, typename TSpec, typename TPosBegin, typename TPosEnd>
-    inline typename Infix<TText>::Type
+    inline typename InfixOnValue<TText>::Type
     infix(Index<TText, TSpec> const &index, TPosBegin pos_begin, TPosEnd pos_end)
     {
         return infix(indexText(index), pos_begin, pos_end);
@@ -1156,11 +1156,11 @@ template <
  */
 
     template <typename TPos, typename TIndex>
-    SEQAN_HOST_DEVICE inline typename Reference<typename Fibre<TIndex, FibreSA>::Type>::Type saAt(TPos i, TIndex &index) {
+    inline typename Reference<typename Fibre<TIndex, FibreSA>::Type>::Type saAt(TPos i, TIndex &index) {
         return value(getFibre(index, FibreSA()), i);
     }
     template <typename TPos, typename TIndex>
-    SEQAN_HOST_DEVICE inline typename Reference<typename Fibre<TIndex const, FibreSA>::Type>::Type saAt(TPos i, TIndex const &index) {
+    inline typename Reference<typename Fibre<TIndex const, FibreSA>::Type>::Type saAt(TPos i, TIndex const &index) {
         return value(getFibre(index, FibreSA()), i);
     }
 
@@ -1202,11 +1202,11 @@ template <
  */
 
     template <typename TPos, typename TIndex>
-    SEQAN_HOST_DEVICE inline typename Reference<typename Fibre<TIndex, FibreIsa>::Type>::Type isaAt(TPos i, TIndex &index) {
+    inline typename Reference<typename Fibre<TIndex, FibreIsa>::Type>::Type isaAt(TPos i, TIndex &index) {
         return value(getFibre(index, FibreIsa()), i);
     }
     template <typename TPos, typename TIndex>
-    SEQAN_HOST_DEVICE inline typename Reference<typename Fibre<TIndex const, FibreIsa>::Type>::Type isaAt(TPos i, TIndex const &index) {
+    inline typename Reference<typename Fibre<TIndex const, FibreIsa>::Type>::Type isaAt(TPos i, TIndex const &index) {
         return value(getFibre(index, FibreIsa()), i);
     }
 //////////////////////////////////////////////////////////////////////////////
@@ -1224,11 +1224,11 @@ template <
  */
 
     template <typename TPos, typename TIndex>
-    SEQAN_HOST_DEVICE inline typename Reference<typename Fibre<TIndex, FibreLcp>::Type>::Type lcpAt(TPos i, TIndex &index) {
+    inline typename Reference<typename Fibre<TIndex, FibreLcp>::Type>::Type lcpAt(TPos i, TIndex &index) {
         return value(getFibre(index, FibreLcp()), i);
     }
     template <typename TPos, typename TIndex>
-    SEQAN_HOST_DEVICE inline typename Reference<typename Fibre<TIndex const, FibreLcp>::Type>::Type lcpAt(TPos i, TIndex const &index) {
+    inline typename Reference<typename Fibre<TIndex const, FibreLcp>::Type>::Type lcpAt(TPos i, TIndex const &index) {
         return value(getFibre(index, FibreLcp()), i);
     }
 
@@ -1270,11 +1270,11 @@ template <
  */
 
     template <typename TPos, typename TIndex>
-    SEQAN_HOST_DEVICE inline typename Reference<typename Fibre<TIndex, FibreChildtab>::Type>::Type childAt(TPos i, TIndex &index) {
+    inline typename Reference<typename Fibre<TIndex, FibreChildtab>::Type>::Type childAt(TPos i, TIndex &index) {
         return value(getFibre(index, FibreChildtab()), i);
     }
     template <typename TPos, typename TIndex>
-    SEQAN_HOST_DEVICE inline typename Reference<typename Fibre<TIndex const, FibreChildtab>::Type>::Type childAt(TPos i, TIndex const &index) {
+    inline typename Reference<typename Fibre<TIndex const, FibreChildtab>::Type>::Type childAt(TPos i, TIndex const &index) {
         return value(getFibre(index, FibreChildtab()), i);
     }
 
@@ -1316,12 +1316,12 @@ template <
 // interface for infinity/invalid values
 
     template <typename TValue>
-    SEQAN_HOST_DEVICE inline void _setSizeInval(TValue &v) {
+    inline void _setSizeInval(TValue &v) {
         v = MaxValue<TValue>::VALUE;
     }
 
     template <typename TValue>
-    SEQAN_HOST_DEVICE inline bool _isSizeInval(TValue const &v) {
+    inline bool _isSizeInval(TValue const &v) {
 //IOREV _notio_
         return v == MaxValue<TValue>::VALUE;
     }
@@ -1360,25 +1360,25 @@ template <
 //////////////////////////////////////////////////////////////////////////////
 
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename StringSetLimits<TText const>::Type
+    inline typename StringSetLimits<TText const>::Type
     stringSetLimits(Index<TText, TSpec> &) {
         return Nothing();
     }
 
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename StringSetLimits<TText const>::Type
+    inline typename StringSetLimits<TText const>::Type
     stringSetLimits(Index<TText, TSpec> const &) {
         return Nothing();
     }
 
     template <typename TString, typename TSSetSpec, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename StringSetLimits< StringSet<TString, TSSetSpec> const >::Type &
+    inline typename StringSetLimits< StringSet<TString, TSSetSpec> const >::Type &
     stringSetLimits(Index<StringSet<TString, TSSetSpec>, TSpec> &index) {
         return stringSetLimits(indexText(index));
     }
 
     template <typename TString, typename TSSetSpec, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename StringSetLimits< StringSet<TString, TSSetSpec> const >::Type &
+    inline typename StringSetLimits< StringSet<TString, TSSetSpec> const >::Type &
     stringSetLimits(Index<StringSet<TString, TSSetSpec>, TSpec> const &index) {
         return stringSetLimits(indexText(index));
     }
@@ -1410,7 +1410,7 @@ template <
  */
 
     template <typename TText, typename TSpec>
-    inline SEQAN_HOST_DEVICE
+    inline
     typename Fibre<Index<TText, TSpec>, FibreRawText>::Type &
     indexRawText(Index<TText, TSpec> &index)
     {
@@ -1418,7 +1418,7 @@ template <
     }
 
     template <typename TText, typename TSpec>
-    inline SEQAN_HOST_DEVICE
+    inline
     typename Fibre<Index<TText, TSpec> const, FibreRawText>::Type &
     indexRawText(Index<TText, TSpec> const &index)
     {
@@ -1440,9 +1440,9 @@ template <
  */
 
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec>, FibreSA>::Type & indexSA(Index<TText, TSpec> &index) { return getFibre(index, FibreSA()); }
+    inline typename Fibre<Index<TText, TSpec>, FibreSA>::Type & indexSA(Index<TText, TSpec> &index) { return getFibre(index, FibreSA()); }
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec> const, FibreSA>::Type & indexSA(Index<TText, TSpec> const &index) { return getFibre(index, FibreSA()); }
+    inline typename Fibre<Index<TText, TSpec> const, FibreSA>::Type & indexSA(Index<TText, TSpec> const &index) { return getFibre(index, FibreSA()); }
 
 //////////////////////////////////////////////////////////////////////////////
 
@@ -1479,9 +1479,9 @@ template <
  */
 
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec>, FibreIsa>::Type & indexIsa(Index<TText, TSpec> &index) { return getFibre(index, FibreIsa()); }
+    inline typename Fibre<Index<TText, TSpec>, FibreIsa>::Type & indexIsa(Index<TText, TSpec> &index) { return getFibre(index, FibreIsa()); }
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec> const, FibreIsa>::Type & indexIsa(Index<TText, TSpec> const &index) { return getFibre(index, FibreIsa()); }
+    inline typename Fibre<Index<TText, TSpec> const, FibreIsa>::Type & indexIsa(Index<TText, TSpec> const &index) { return getFibre(index, FibreIsa()); }
 
 //////////////////////////////////////////////////////////////////////////////
 /*!
@@ -1497,9 +1497,9 @@ template <
  */
 
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec>, FibreLcp>::Type & indexLcp(Index<TText, TSpec> &index) { return getFibre(index, FibreLcp()); }
+    inline typename Fibre<Index<TText, TSpec>, FibreLcp>::Type & indexLcp(Index<TText, TSpec> &index) { return getFibre(index, FibreLcp()); }
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec> const, FibreLcp>::Type & indexLcp(Index<TText, TSpec> const &index) { return getFibre(index, FibreLcp()); }
+    inline typename Fibre<Index<TText, TSpec> const, FibreLcp>::Type & indexLcp(Index<TText, TSpec> const &index) { return getFibre(index, FibreLcp()); }
 
 //////////////////////////////////////////////////////////////////////////////
 /*!
@@ -1533,9 +1533,9 @@ template <
  */
 
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec>, FibreBwt>::Type & indexBwt(Index<TText, TSpec> &index) { return getFibre(index, FibreBwt()); }
+    inline typename Fibre<Index<TText, TSpec>, FibreBwt>::Type & indexBwt(Index<TText, TSpec> &index) { return getFibre(index, FibreBwt()); }
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec> const, FibreBwt>::Type & indexBwt(Index<TText, TSpec> const &index) { return getFibre(index, FibreBwt()); }
+    inline typename Fibre<Index<TText, TSpec> const, FibreBwt>::Type & indexBwt(Index<TText, TSpec> const &index) { return getFibre(index, FibreBwt()); }
 
 //////////////////////////////////////////////////////////////////////////////
 /*!
@@ -1551,9 +1551,9 @@ template <
  */
 
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec>, FibreChildtab>::Type & indexChildtab(Index<TText, TSpec> &index) { return getFibre(index, FibreChildtab()); }
+    inline typename Fibre<Index<TText, TSpec>, FibreChildtab>::Type & indexChildtab(Index<TText, TSpec> &index) { return getFibre(index, FibreChildtab()); }
     template <typename TText, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, TSpec> const, FibreChildtab>::Type & indexChildtab(Index<TText, TSpec> const &index) { return getFibre(index, FibreChildtab()); }
+    inline typename Fibre<Index<TText, TSpec> const, FibreChildtab>::Type & indexChildtab(Index<TText, TSpec> const &index) { return getFibre(index, FibreChildtab()); }
 
 
 // ----------------------------------------------------------------------------
diff --git a/include/seqan/index/index_bidirectional.h b/include/seqan/index/index_bidirectional.h
new file mode 100644
index 0000000..872d9e8
--- /dev/null
+++ b/include/seqan/index/index_bidirectional.h
@@ -0,0 +1,211 @@
+// ==========================================================================
+//                 SeqAn - The Library for Sequence Analysis
+// ==========================================================================
+// Copyright (c) 2006-2015, Knut Reinert, FU Berlin
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
+//       its contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+//
+// ==========================================================================
+// Author: Christopher Pockrandt <christopher.pockrandt at fu-berlin.de>
+// ==========================================================================
+
+//SEQAN_NO_DDDOC:do not generate documentation for this file
+
+#ifndef INDEX_BIDIRECTIONAL_H_
+#define INDEX_BIDIRECTIONAL_H_
+
+namespace seqan {
+
+// ==========================================================================
+// Forwards
+// ==========================================================================
+
+template <typename TIndexSpec>
+class BidirectionalIndex;
+
+// ============================================================================
+// Metafunctions
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// Metafunction RevTextFibre
+// ----------------------------------------------------------------------------
+
+/*!
+ * @class RevTextFibre
+ * @headerfile <seqan/index.h>
+ * @brief A helper object that stores the type of the modifier of a given type.
+ *
+ * @signature template <TText>
+ *            struct RevTextFibre;
+ */
+
+template <typename TText>
+struct RevTextFibre
+{
+    typedef ModifiedString<TText, ModReverse> Type;
+};
+
+template <typename TText>
+struct RevTextFibre<ModifiedString<TText, ModReverse> >
+{
+    typedef TText Type;
+};
+
+template <typename TText, typename TTextConfig>
+struct RevTextFibre<StringSet<TText, TTextConfig> >
+{
+    typedef StringSet<typename RevTextFibre<TText>::Type, TTextConfig> Type;
+};
+
+// ----------------------------------------------------------------------------
+// Class BidirectionalIndex
+// ----------------------------------------------------------------------------
+
+/*!
+ * @class BidirectionalIndex
+ * @headerfile <seqan/index.h>
+ * @brief A bidirectional index class.
+ *
+ * @signature template <typename TText, typename TIndexSpec>
+ *            class Index<TText, Bidirectional<TIndexSpec> >;
+ *
+ * @tparam TText           The text type. Types: @link String @endlink, @link StringSet @endlink
+ * @tparam TIndexSpec   Unidirectional index used for constructing a bidirectional one.
+ *
+ * @section Structure
+ *
+ * The BidirectionalIndex consists of two unidirectional indices that index the original text and the reverse text.
+ */
+
+template <typename TText, typename TIndexSpec>
+class Index<TText, BidirectionalIndex<TIndexSpec> >
+{
+    typedef typename RevTextFibre<TText>::Type  TRevText;
+    typedef Index<TRevText, TIndexSpec>         TRevIndex;
+    typedef Index<TText, TIndexSpec>            TFwdIndex;
+
+    public:
+
+    TRevText    revText;
+    TRevIndex   rev;
+    TFwdIndex   fwd;
+
+    Index()    {}
+
+    Index(TText & text) :
+        revText(text),
+        rev(revText),
+        fwd(text)
+    {}
+};
+
+// ============================================================================
+// Functions
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// Function indexCreate()
+// ----------------------------------------------------------------------------
+
+template <typename TText, typename TIndexSpec, typename TFibre>
+inline bool indexCreate(Index<TText, BidirectionalIndex<TIndexSpec> > & index, Tag<TFibre>)
+{
+    return indexCreate(index.fwd, Tag<TFibre>()) && indexCreate(index.rev, Tag<TFibre>());
+}
+
+// ----------------------------------------------------------------------------
+// Function clear()
+// ----------------------------------------------------------------------------
+
+// Already documented
+template <typename TText, typename TIndexSpec>
+inline void clear(Index<TText, BidirectionalIndex<TIndexSpec> > & index)
+{
+    clear(index.fwd);
+    clear(index.rev);
+    clear(index.revText);
+}
+
+// ----------------------------------------------------------------------------
+// Function empty()
+// ----------------------------------------------------------------------------
+
+// This function checks whether the index is empty. Its already documented.
+template <typename TText, typename TIndexSpec>
+inline bool empty(Index<TText, BidirectionalIndex<TIndexSpec> > const & index)
+{
+    return empty(index.fwd) || empty(index.rev);
+}
+
+// This function can be used to open a previously saved index.
+template <typename TText, typename TIndexSpec>
+inline bool open(Index<TText, BidirectionalIndex<TIndexSpec> > & index, const char * fileName)
+{
+    String<char> name;
+
+    name = fileName;
+    if (open(index.fwd, toCString(name), DefaultOpenMode<Index<TText, TIndexSpec> >::VALUE))
+    {
+        name = fileName;    append(name, ".rev");
+        return open(index.rev, toCString(name), DefaultOpenMode<Index<TText, TIndexSpec> >::VALUE);
+    }
+    return false;
+}
+
+// This function can be used to save an index on disk.
+template <typename TText, typename TIndexSpec>
+inline bool save(Index<TText, BidirectionalIndex<TIndexSpec> > const & index, const char * fileName)
+{
+    String<char> name;
+
+    name = fileName;
+    if (save(index.fwd, toCString(name), DefaultOpenMode<Index<TText, TIndexSpec> >::VALUE))
+    {
+        name = fileName;    append(name, ".rev");
+        return save(index.rev, toCString(name), DefaultOpenMode<Index<TText, TIndexSpec> >::VALUE);
+    }
+    return false;
+}
+
+// ----------------------------------------------------------------------------
+// Function getFibre()
+// ----------------------------------------------------------------------------
+// only used for testing open/save
+
+template <typename TText, typename TSpec>
+inline typename Fibre<Index<TText, TSpec>, FibreText>::Type &
+getFibre(Index<TText, BidirectionalIndex<TSpec> > &index, FibreText) {
+    return value(index.fwd.text);
+}
+template <typename TText, typename TSpec>
+inline typename Fibre<Index<TText, TSpec>, const FibreText>::Type &
+getFibre(Index<TText, BidirectionalIndex<TSpec> > const &index, FibreText) {
+    return value(index.fwd.text);
+}
+
+}
+#endif /* INDEX_BIDIRECTIONAL_H_ */
diff --git a/include/seqan/index/index_bidirectional_stree.h b/include/seqan/index/index_bidirectional_stree.h
new file mode 100644
index 0000000..5d23a10
--- /dev/null
+++ b/include/seqan/index/index_bidirectional_stree.h
@@ -0,0 +1,392 @@
+// ==========================================================================
+//                 SeqAn - The Library for Sequence Analysis
+// ==========================================================================
+// Copyright (c) 2006-2015, Knut Reinert, FU Berlin
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
+//       its contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+//
+// ==========================================================================
+// Author: Christopher Pockrandt <christopher.pockrandt at fu-berlin.de>
+// ==========================================================================
+
+//SEQAN_NO_DDDOC:do not generate documentation for this file
+
+#ifndef INDEX_BIDIRECTIONAL_STREE_H_
+#define INDEX_BIDIRECTIONAL_STREE_H_
+
+namespace seqan {
+
+struct BidirectionalDirection {};
+
+struct BidirectionalFwd_ : BidirectionalDirection {};
+struct BidirectionalRev_ : BidirectionalDirection {};
+typedef Tag<BidirectionalFwd_> const         Fwd;
+typedef Tag<BidirectionalRev_> const         Rev;
+
+// ==========================================================================
+// Classes
+// ==========================================================================
+
+// ----------------------------------------------------------------------------
+// Class BidirectionalIndex-Iter
+// ----------------------------------------------------------------------------
+
+// TopDown-Iterator for bidirectional indices
+template <typename TText, typename TIndexSpec, typename TSpec>
+class Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > >
+{
+public:
+    typedef Index<TText, BidirectionalIndex<TIndexSpec> > TBiIndex;
+
+    typedef typename RevTextFibre<TText>::Type                                                      TRevText;
+
+    typedef Index<TText, TIndexSpec>     TFwdIndex;
+    typedef Index<TRevText, TIndexSpec>  TRevIndex;
+
+    typedef Iter<TFwdIndex, VSTree<TopDown<TSpec> > >                                                   TFwdIndexIter;
+    typedef Iter<TRevIndex, VSTree<TopDown<TSpec> > >                                                   TRevIndexIter;
+
+    TFwdIndexIter    fwdIter;
+    TRevIndexIter    revIter;
+
+//____________________________________________________________________________
+
+    Iter():
+        fwdIter(),
+        revIter() {}
+
+    Iter(TBiIndex &_index):
+        fwdIter(_index.fwd),
+        revIter(_index.rev)
+    {}
+
+    template <typename TSpec2>
+    Iter(Iter<TBiIndex, VSTree<TopDown<TSpec2> > > const &_origin):
+        fwdIter(_origin.fwdIter),
+        revIter(_origin.revIter)
+    {}
+};
+
+// TopDown-Iterator with history stack for bidirectional indices
+template <typename TText, typename TIndexSpec, typename TSpec>
+class Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<ParentLinks<TSpec> > > >
+{
+public:
+    typedef Index<TText, BidirectionalIndex<TIndexSpec> >  TBiIndex;
+
+    typedef typename RevTextFibre<TText>::Type                                                            TRevText;
+
+    typedef Index<TText, TIndexSpec>           TFwdIndex;
+    typedef Index<TRevText, TIndexSpec>        TRevIndex;
+
+    typedef Iter<TFwdIndex, VSTree<TopDown<ParentLinks<TSpec> > > >                                           TFwdIndexIter;
+    typedef Iter<TRevIndex, VSTree<TopDown<ParentLinks<TSpec> > > >                                           TRevIndexIter;
+
+    TFwdIndexIter    fwdIter;
+    TRevIndexIter    revIter;
+
+//____________________________________________________________________________
+
+    Iter():
+        fwdIter(),
+        revIter() {}
+
+    Iter(TBiIndex &_index):
+        fwdIter(_index.fwd),
+        revIter(_index.rev)
+    {}
+
+    template <typename TSpec2>
+    Iter(Iter<TBiIndex, VSTree<TopDown<ParentLinks<TSpec2> > > > const &_origin):
+        fwdIter(_origin.fwdIter),
+        revIter(_origin.revIter)
+    {}
+};
+
+// ============================================================================
+// Functions
+// ============================================================================
+
+template <typename TText, typename TIndexSpec, typename TSpec>
+inline Iter<Index<TText, TIndexSpec>, VSTree<TopDown<TSpec> > > & _iter(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > & it, Fwd)
+{
+    return it.fwdIter;
+}
+
+template <typename TText, typename TIndexSpec, typename TSpec>
+inline Iter<Index<TText, TIndexSpec>, VSTree<TopDown<TSpec> > > const & _iter(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > const & it, Fwd)
+{
+    return it.fwdIter;
+}
+
+template <typename TText, typename TIndexSpec, typename TSpec>
+inline Iter<Index<typename RevTextFibre<TText>::Type, TIndexSpec>, VSTree<TopDown<TSpec> > > & _iter(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > & it, Rev)
+{
+    return it.revIter;
+}
+
+template <typename TText, typename TIndexSpec, typename TSpec>
+inline Iter<Index<typename RevTextFibre<TText>::Type, TIndexSpec>, VSTree<TopDown<TSpec> > > const & _iter(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > const & it, Rev)
+{
+    return it.revIter;
+}
+
+// ----------------------------------------------------------------------------
+// Function goDown()                                                 [Iterator]
+// ----------------------------------------------------------------------------
+
+template <typename TText, typename TIndexSpec, typename TSpec>
+inline bool goDown(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > &it)
+{
+    return goDown(it, Fwd());
+}
+
+template <typename TText, typename TIndexSpec, typename TSpec, typename TDirection>
+inline bool goDown(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > &it, Tag<TDirection>)
+{
+    if (goDown(_iter(it, Tag<TDirection>())))
+    {
+        update(it, Tag<TDirection>());
+        return true;
+    }
+    return false;
+}
+
+//------------------------------------------------------------------------------------
+
+template <typename TText, typename TIndexSpec, typename TSpec, typename TObject, typename TDirection>
+inline bool
+_goDownObject(
+    Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > &it,
+    TObject const &obj,
+    False,
+    TDirection)
+{
+    if (_goDownChar(_iter(it, TDirection()), obj))
+    {
+        update(it, TDirection());
+        return true;
+    }
+    return false;
+}
+
+template <typename TText, typename TIndexSpec, typename TSpec, typename TObject, typename TDirection>
+inline bool
+_goDownObject(
+    Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > &it,
+    TObject const &obj,
+    True,
+    TDirection)
+{
+    typename Size<TIndexSpec>::Type dummy;
+    return _goDownString(it, obj, dummy, TDirection());
+}
+
+template <typename TText, typename TIndexSpec, typename TSpec, typename TObject>
+inline bool
+goDown(
+    Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > &it,
+    TObject const &obj)
+{
+    return goDown(it, obj, Fwd());
+}
+
+template <typename TText, typename TIndexSpec, typename TSpec, typename TObject, typename TDirection>
+inline bool
+goDown(
+    Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > &it,
+    TObject const &obj,
+    Tag<TDirection>)
+{
+    return _goDownObject(it, obj, typename IsSequence<TObject>::Type(), Tag<TDirection>());
+}
+
+//------------------------------------------------------------------------------------
+
+template <typename TText, typename TIndexSpec, typename TSpec, typename TString, typename TSize>
+inline bool
+goDown(
+    Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree< TopDown<TSpec> > > &it,
+    TString const &pattern,
+    TSize &lcp)
+{
+    return _goDownString(it, pattern, lcp, Fwd());
+}
+
+template <typename TText, typename TIndexSpec, typename TSpec, typename TString, typename TSize, typename TDirection>
+inline bool
+goDown(
+    Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree< TopDown<TSpec> > > &it,
+    TString const &pattern,
+    TSize &lcp,
+    Tag<TDirection>)
+{
+    return _goDownString(it, pattern, lcp, Tag<TDirection>());
+}
+
+// ----------------------------------------------------------------------------
+// Function repLength()                                              [Iterator]
+// ----------------------------------------------------------------------------
+
+template <typename TText, typename TIndexSpec, typename TSpec>
+inline typename Size<Index<TText, BidirectionalIndex<TIndexSpec> > >::Type
+repLength(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > const &it)
+{
+    return repLength(container(it.fwdIter), value(it.fwdIter));
+}
+
+// ----------------------------------------------------------------------------
+// Function goRight()                                                [Iterator]
+// ----------------------------------------------------------------------------
+
+template <typename TText, typename TIndexSpec, typename TSpec>
+inline bool goRight(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > &it)
+{
+    return goRight(it, Fwd());
+}
+
+template <typename TText, typename TIndexSpec, typename TSpec, typename TDirection>
+inline bool goRight(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > &it, Tag<TDirection>)
+{
+    if (goRight(_iter(it, Tag<TDirection>())))
+    {
+        update(it, Tag<TDirection>());
+        return true;
+    }
+    return false;
+}
+
+// ----------------------------------------------------------------------------
+// Function parentEdgeLabel()                                        [Iterator]
+// ----------------------------------------------------------------------------
+
+template <typename TText, typename TIndexSpec, typename TSpec>
+inline typename EdgeLabel<Iter<Index<TText, TIndexSpec>, VSTree<TopDown<TSpec> > > >::Type
+parentEdgeLabel(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > const & it)
+{
+    return parentEdgeLabel(it, Fwd());
+}
+
+template <typename TText, typename TIndexSpec, typename TSpec, typename TDirection>
+inline typename EdgeLabel<Iter<Index<TText, TIndexSpec>, VSTree<TopDown<TSpec> > > >::Type
+parentEdgeLabel(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > const & it, Tag<TDirection>)
+{
+    return parentEdgeLabel(_iter(it, Tag<TDirection>()));
+}
+
+// ----------------------------------------------------------------------------
+// Function getOccurrences()                                         [Iterator]
+// ----------------------------------------------------------------------------
+
+template <typename TText, typename TIndexSpec, typename TSpec>
+inline typename Infix< typename Fibre<Index<TText, TIndexSpec>, FibreSA>::Type const >::Type
+getOccurrences(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > const & it)
+{
+    return getOccurrences(it, Fwd());
+}
+
+template <typename TText, typename TIndexSpec, typename TSpec>
+inline typename Infix< typename Fibre<Index<TText, TIndexSpec>, FibreSA>::Type const >::Type
+getOccurrences(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > const & it, Fwd)
+{
+    return getOccurrences(_iter(it, Fwd()));
+}
+
+template <typename TText, typename TIndexSpec, typename TSpec>
+inline typename Infix< typename Fibre<Index<typename RevTextFibre<TText>::Type, TIndexSpec>, FibreSA>::Type const >::Type
+getOccurrences(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > const & it, Rev)
+{
+    return getOccurrences(_iter(it, Rev()));
+}
+
+// ----------------------------------------------------------------------------
+// Function isLeaf()                                                 [Iterator]
+// ----------------------------------------------------------------------------
+
+template <typename TText, typename TIndexSpec, typename TSpec>
+inline bool isLeaf(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > const & it)
+{
+    return isLeaf(it, Fwd());
+}
+
+template <typename TText, typename TIndexSpec, typename TSpec, typename TDirection>
+inline bool isLeaf(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > const & it, Tag<TDirection>)
+{
+    return isLeaf(_iter(it, Tag<TDirection>()));
+}
+
+// ----------------------------------------------------------------------------
+// Function isRoot()                                                 [Iterator]
+// ----------------------------------------------------------------------------
+
+template <typename TText, typename TIndexSpec, typename TSpec>
+inline bool isRoot(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > const & it)
+{
+    return isRoot(it, Fwd());
+}
+
+template <typename TText, typename TIndexSpec, typename TSpec, typename TDirection>
+inline bool isRoot(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<TSpec> > > const & it, Tag<TDirection>)
+{
+    return isRoot(_iter(it, Tag<TDirection>()));
+}
+
+// ----------------------------------------------------------------------------
+// Function goUp()                                                   [Iterator]
+// ----------------------------------------------------------------------------
+
+// go up one edge
+template <typename TText, typename TIndexSpec, typename TSpec>
+inline bool goUp(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TopDown<ParentLinks<TSpec> > > > &it)
+{
+    return goUp(it.fwdIter) && goUp(it.revIter);
+}
+
+// ----------------------------------------------------------------------------
+// Function goRoot()                                                 [Iterator]
+// ----------------------------------------------------------------------------
+
+template < typename TText, typename TIndexSpec, typename TSpec>
+inline void goRoot(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TSpec> > &it)
+{
+    goRoot(it.fwdIter);
+    goRoot(it.revIter);
+}
+
+// ----------------------------------------------------------------------------
+// Function countOccurrences()                                       [Iterator]
+// ----------------------------------------------------------------------------
+
+template < typename TText, typename TIndexSpec, typename TSpec >
+inline typename Size<Index<TText, BidirectionalIndex<TIndexSpec> > >::Type
+countOccurrences(Iter<Index<TText, BidirectionalIndex<TIndexSpec> >, VSTree<TSpec> > const &it)
+{
+    return countOccurrences(it.fwdIter);
+}
+
+}
+
+#endif /* INDEX_BIDIRECTIONAL_STREE_H_ */
diff --git a/tests/cuda/test_cuda_basic.cu b/include/seqan/index/index_bifm.h
similarity index 63%
rename from tests/cuda/test_cuda_basic.cu
rename to include/seqan/index/index_bifm.h
index b49d56f..542fca1 100644
--- a/tests/cuda/test_cuda_basic.cu
+++ b/include/seqan/index/index_bifm.h
@@ -1,7 +1,7 @@
 // ==========================================================================
 //                 SeqAn - The Library for Sequence Analysis
 // ==========================================================================
-// Copyright (c) 2006-2016, Knut Reinert, FU Berlin
+// Copyright (c) 2006-2015, Knut Reinert, FU Berlin
 // All rights reserved.
 //
 // Redistribution and use in source and binary forms, with or without
@@ -29,60 +29,51 @@
 // DAMAGE.
 //
 // ==========================================================================
-// Author: Enrico Siragusa <enrico.siragusa at fu-berlin.de>
+// Author: Christopher Pockrandt <christopher.pockrandt at fu-berlin.de>
 // ==========================================================================
 
-#include <seqan/basic.h>
+//SEQAN_NO_DDDOC:do not generate documentation for this file
 
-using namespace seqan;
+#ifndef INDEX_BIFM_H_
+#define INDEX_BIFM_H_
+
+namespace seqan {
+
+template <typename TText, typename TSpec, typename TConfig>
+SEQAN_CONCEPT_IMPL((Index<TText, BidirectionalIndex<FMIndex<TSpec, TConfig> > >), (StringTrieConcept));
+
+template <typename TText, typename TSpec, typename TConfig>
+SEQAN_CONCEPT_IMPL((Index<TText, BidirectionalIndex<FMIndex<TSpec, TConfig> > > const), (StringTrieConcept));
 
 // ============================================================================
-// Tests
+// Functions
 // ============================================================================
 
 // ----------------------------------------------------------------------------
-// Test test_cuda_arch
+// Function indexCreate()
 // ----------------------------------------------------------------------------
 
-SEQAN_GLOBAL void testCudaArch()
-{
-#if defined(__CUDA_ARCH__) && __CUDA_ARCH__ < 200
-#error CUDA architecture 2.0 or higher is required.
-#endif
-}
-
-SEQAN_DEFINE_TEST(test_cuda_arch)
+template <typename TText, typename TSpec, typename TConfig>
+inline bool indexCreate(Index<TText, BidirectionalIndex<FMIndex<TSpec, TConfig> > > & index)
 {
-    testCudaArch<<<1,1>>>();
-    cudaDeviceSynchronize();
-    SEQAN_ASSERT_EQ(cudaGetLastError(), cudaSuccess);
+    return indexCreate(index.fwd, FibreSALF()) && indexCreate(index.rev, FibreSALF());
 }
 
 // ----------------------------------------------------------------------------
-// Test test_cuda_assert
+// Function indexSupplied()
 // ----------------------------------------------------------------------------
 
-SEQAN_GLOBAL void testCudaAssert()
+template <typename TText, typename TIndexSpec>
+inline bool indexSupplied(Index<TText, BidirectionalIndex<TIndexSpec> > & index, FibreSALF const)
 {
-//    asm("trap;");
-    SEQAN_ASSERT(false);
+    return indexSupplied(index.fwd, FibreSALF()) && indexSupplied(index.rev, FibreSALF());
 }
 
-SEQAN_DEFINE_TEST(test_cuda_assert)
+template <typename TText, typename TIndexSpec>
+inline bool indexSupplied(Index<TText, BidirectionalIndex<TIndexSpec> > const & index, FibreSALF const)
 {
-    testCudaAssert<<<1,1>>>();
-    cudaDeviceSynchronize();
-    SEQAN_ASSERT_NEQ(cudaGetLastError(), cudaSuccess);
+    return indexSupplied(index.fwd, FibreSALF()) && indexSupplied(index.rev, FibreSALF());
 }
 
-// ============================================================================
-// Register Tests
-// ============================================================================
-
-SEQAN_BEGIN_TESTSUITE(test_cuda_basic)
-{
-    // Call tests.
-    SEQAN_CALL_TEST(test_cuda_arch);
-    SEQAN_CALL_TEST(test_cuda_assert);
 }
-SEQAN_END_TESTSUITE
+#endif /* INDEX_BIFM_H_ */
diff --git a/include/seqan/index/index_bifm_stree.h b/include/seqan/index/index_bifm_stree.h
new file mode 100644
index 0000000..200911d
--- /dev/null
+++ b/include/seqan/index/index_bifm_stree.h
@@ -0,0 +1,108 @@
+// ==========================================================================
+//                 SeqAn - The Library for Sequence Analysis
+// ==========================================================================
+// Copyright (c) 2006-2015, Knut Reinert, FU Berlin
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
+//       its contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+//
+// ==========================================================================
+// Author: Christopher Pockrandt <christopher.pockrandt at fu-berlin.de>
+// ==========================================================================
+
+//SEQAN_NO_DDDOC:do not generate documentation for this file
+
+#ifndef INDEX_BIFM_STREE_H_
+#define INDEX_BIFM_STREE_H_
+
+namespace seqan {
+
+// ============================================================================
+// Functions
+// ============================================================================
+
+template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec, typename TDirection>
+inline void update(Iter<Index<TText, BidirectionalIndex<FMIndex<TOccSpec, TIndexSpec> > >, VSTree<TopDown<TSpec> > > & it, TDirection)
+{
+    typedef typename IfC<IsSameType<TDirection, Tag<BidirectionalFwd_> >::VALUE, Rev, Fwd>::Type TOppositeDirection;
+
+    typedef typename IfC<IsSameType<TDirection, Tag<BidirectionalFwd_> >::VALUE, TText, typename RevTextFibre<TText>::Type>::Type TDirText;
+    typedef typename IfC<IsSameType<TDirection, Tag<BidirectionalFwd_> >::VALUE, typename RevTextFibre<TText>::Type, TText>::Type TOppDirText;
+
+    typedef Iter<Index<TDirText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<TSpec> > > TDirIter;
+    typedef Iter<Index<TOppDirText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<TSpec> > > TOppDirIter;
+
+    _historyPush(_iter(it, TOppositeDirection()));
+
+    TDirIter & dirIter = _iter(it, TDirection());
+    TOppDirIter & oppDirIter = _iter(it, TOppositeDirection());
+
+    value(oppDirIter).range.i1 += value(dirIter).smaller;
+    value(oppDirIter).range.i2 = value(oppDirIter).range.i1 + value(dirIter).range.i2 - value(dirIter).range.i1;
+
+    value(oppDirIter).repLen = value(dirIter).repLen; // do not increment in case of goRight
+}
+
+
+template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec, typename TString, typename TSize, typename TDirection>
+inline bool
+_goDownString(Iter<Index<TText, BidirectionalIndex<FMIndex<TOccSpec, TIndexSpec> > >, VSTree<TopDown<TSpec> > > &it,
+              TString const & string,
+              TSize & lcp,
+              TDirection)
+{
+    typedef Index<TText, FMIndex<TOccSpec, TIndexSpec> >        TIndex;
+    typedef typename Size<TIndex>::Type                         TSize2;
+    typedef Pair<TSize2>                                        TRange;
+    typedef typename Iterator<TString const, Standard>::Type    TStringIter;
+
+    TStringIter stringIt = begin(string, Standard());
+    TStringIter stringEnd = end(string, Standard());
+
+    _historyPush(_iter(it, TDirection()));
+
+    for (lcp = 0; stringIt != stringEnd; ++stringIt, ++lcp)
+    {
+        TRange _range;
+        TSize2 _smaller = 0;
+
+        // NOTE(esiragusa): this should be faster only for texts over small alphabets consisting of few/long sequences.
+        if (isLeaf(_iter(it, TDirection())) || !_getNodeByChar(_iter(it, TDirection()), value(_iter(it, TDirection())), _range, _smaller, value(stringIt))) break;
+
+        value(_iter(it, TDirection())).range = _range;
+        value(_iter(it, TDirection())).smaller = _smaller;
+        update(it, TDirection());
+    }
+
+    value(_iter(it, TDirection())).repLen += lcp;
+
+    if (lcp) value(_iter(it, TDirection())).lastChar = value(stringIt - 1);
+
+    return stringIt == stringEnd;
+}
+
+}
+
+#endif /* INDEX_BIFM_STREE_H_ */
diff --git a/include/seqan/index/index_dfi.h b/include/seqan/index/index_dfi.h
index 62a6bc6..f9bb471 100644
--- a/include/seqan/index/index_dfi.h
+++ b/include/seqan/index/index_dfi.h
@@ -215,6 +215,20 @@ namespace seqan
         TPredHull        predHull;
         TPred            pred;
 
+        /*!
+         * @fn IndexDfi::Index
+         * @brief Constructor
+         *
+         * @signature Index::Index();
+         * @signature Index::Index(index);
+         * @signature Index::Index(text[, predHull][, pred]);
+         *
+         * @param[in] index    Other Index object to copy from.
+         * @param[in] text     The text to be indexed.
+         * @param[in] predHull (TPredHull) A monotonic hull of TPred. (optional)
+         * @param[in] pred     (TPred) An arbitrary frequeny predicate. (optional)
+         */
+
         Index() {}
 
         Index(Index &other):
diff --git a/include/seqan/index/index_esa_base.h b/include/seqan/index/index_esa_base.h
index 46ef874..6e2da0e 100644
--- a/include/seqan/index/index_esa_base.h
+++ b/include/seqan/index/index_esa_base.h
@@ -199,38 +199,38 @@ namespace seqan
         Pair<TSize> range;            // current SA interval of hits (unique node identifier)
         TSize        parentRight;    // right boundary of parent node's range (allows to go right)
 
-        SEQAN_HOST_DEVICE
+       
         VertexEsa() : range(0, 0), parentRight(0) {}
 
-        SEQAN_HOST_DEVICE
+       
         VertexEsa(MinimalCtor):
             range(0,0),
             parentRight(0) {}
 
-        SEQAN_HOST_DEVICE
+       
         VertexEsa(TSize otherRangeLeft, TSize otherRangeRight, TSize otherParentRight):
             range(Pair<TSize>(otherRangeLeft, otherRangeRight)),
             parentRight(otherParentRight) {}
 
-        SEQAN_HOST_DEVICE
+       
         VertexEsa(Pair<TSize> const &otherRange, TSize otherParentRight):
             range(otherRange),
             parentRight(otherParentRight) {}
 
-        SEQAN_HOST_DEVICE
+       
         VertexEsa(VertexEsa const &other):
             range(other.range),
             parentRight(other.parentRight) {}
     };
 
     template <typename TSize>
-    SEQAN_HOST_DEVICE inline bool operator==(VertexEsa<TSize> const &a, VertexEsa<TSize> const &b)
+    inline bool operator==(VertexEsa<TSize> const &a, VertexEsa<TSize> const &b)
     {
         return a.range == b.range;
     }
 
     template <typename TSize>
-    SEQAN_HOST_DEVICE inline bool operator!=(VertexEsa<TSize> const &a, VertexEsa<TSize> const &b)
+    inline bool operator!=(VertexEsa<TSize> const &a, VertexEsa<TSize> const &b)
     {
         return a.range != b.range;
     }
@@ -401,6 +401,18 @@ namespace seqan
         typename Fibre<Index, EsaBwt>::Type         bwt;        // burrows-wheeler table
         typename Cargo<Index>::Type                 cargo;        // user-defined cargo
 
+        /*!
+         * @fn IndexEsa::Index
+         * @brief Constructor
+         *
+         * @signature Index::Index();
+         * @signature Index::Index(index);
+         * @signature Index::Index(text);
+         *
+         * @param[in] index Other Index object to copy from.
+         * @param[in] text  The text to be indexed.
+         */
+
         Index() {}
 
         Index(Index &other):
@@ -435,7 +447,7 @@ namespace seqan
 //////////////////////////////////////////////////////////////////////////////
 
     template < typename TText, typename TSpec >
-    SEQAN_HOST_DEVICE inline void _indexRequireTopDownIteration(Index<TText, IndexEsa<TSpec> > &index)
+    inline void _indexRequireTopDownIteration(Index<TText, IndexEsa<TSpec> > &index)
     {
         indexRequire(index, EsaSA());
         indexRequire(index, EsaLcp());
diff --git a/include/seqan/index/index_esa_stree.h b/include/seqan/index/index_esa_stree.h
index 7e1fbb6..5f0ceb7 100644
--- a/include/seqan/index/index_esa_stree.h
+++ b/include/seqan/index/index_esa_stree.h
@@ -144,7 +144,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
     template < typename TIndex, typename TSpec >
     struct EdgeLabel< Iter< TIndex, VSTree<TSpec> > > {
-        typedef typename Infix< typename Fibre<TIndex, FibreText>::Type const >::Type Type;
+        typedef typename InfixOnValue< typename Fibre<TIndex, FibreText>::Type const >::Type Type;
     };
 
 /*!
@@ -201,10 +201,10 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
 //____________________________________________________________________________
 
-        SEQAN_HOST_DEVICE
+       
         Iter() : index() {}
 
-        SEQAN_HOST_DEVICE
+       
         Iter(TIndex &_index):
             index(&_index)
         {
@@ -212,14 +212,14 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
             goRoot(*this);
         }
 
-        SEQAN_HOST_DEVICE
+       
         Iter(TIndex &_index, MinimalCtor):
             index(&_index),
             vDesc(MinimalCtor()),
             _parentDesc(MinimalCtor()) {}
 
         // NOTE(esiragusa): _parentDesc is unitialized
-        SEQAN_HOST_DEVICE
+       
         Iter(TIndex &_index, TVertexDesc const &_vDesc):
             index(&_index),
             vDesc(_vDesc)
@@ -228,7 +228,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
         }
 
         template <typename TSpec2>
-        SEQAN_HOST_DEVICE
+       
         Iter(Iter<TIndex, VSTree<TopDown<TSpec2> > > const &_origin):
             index(&container(_origin)),
             vDesc(value(_origin)),
@@ -237,7 +237,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 //____________________________________________________________________________
 
         template <typename TSpec2>
-        SEQAN_HOST_DEVICE inline Iter const &
+        inline Iter const &
         operator = (Iter<TIndex, VSTree<TopDown<TSpec2> > > const &_origin)
         {
             index = &container(_origin);
@@ -299,11 +299,11 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
     {
         Pair<TSize> range;        // current SA interval of hits
 
-        SEQAN_HOST_DEVICE inline
+        inline
         HistoryStackEsa_() {}
 
         template <typename TSize_>
-        SEQAN_HOST_DEVICE inline
+        inline
         HistoryStackEsa_(Pair<TSize_> const &_range): range(_range) {}
     };
 
@@ -339,27 +339,27 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
 //____________________________________________________________________________
 
-        SEQAN_HOST_DEVICE
+       
         Iter() :
             TBase()
         {}
 
-        SEQAN_HOST_DEVICE
+       
         Iter(TIndex &_index):
             TBase(_index) {}
 
-        SEQAN_HOST_DEVICE
+       
         Iter(TIndex &_index, MinimalCtor):
             TBase(_index, MinimalCtor()) {}
 
-        SEQAN_HOST_DEVICE
+       
         Iter(Iter const &_origin):
             TBase((TBase const &)_origin),
             history(_origin.history) {}
 
 //____________________________________________________________________________
 
-        SEQAN_HOST_DEVICE inline
+        inline
         Iter const &
         operator = (Iter const &_origin)
         {
@@ -658,7 +658,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
 
     template < typename TIndex, typename TSize >
-    SEQAN_HOST_DEVICE inline typename Size<TIndex>::Type
+    inline typename Size<TIndex>::Type
     repLength(TIndex const &index, VertexEsa<TSize> const &vDesc)
     {
         if (_isLeaf(vDesc)) return suffixLength(saAt(vDesc.range.i1, index), index);
@@ -674,7 +674,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
     }
 
     template < typename TIndex, typename TSpec >
-    SEQAN_HOST_DEVICE inline typename Size<TIndex>::Type
+    inline typename Size<TIndex>::Type
     repLength(Iter< TIndex, VSTree<TopDown<TSpec> > > const &it)
     {
         return repLength(container(it), value(it));
@@ -720,7 +720,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
  */
 
     template < typename TIndex, typename TSpec >
-    SEQAN_HOST_DEVICE inline typename Size<TIndex>::Type
+    inline typename Size<TIndex>::Type
     parentRepLength(Iter< TIndex, VSTree<TopDown<TSpec> > > const &it)
     {
         return repLength(container(it), nodeUp(it));
@@ -742,7 +742,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
  */
 
     template < typename TIndex, typename TSpec >
-    SEQAN_HOST_DEVICE inline bool
+    inline bool
     emptyParentEdge(Iter< TIndex, VSTree<TopDown<TSpec> > > const &it)
     {
         // the following is more efficient than
@@ -871,13 +871,13 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
 //////////////////////////////////////////////////////////////////////////////
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline TIndex const &
+    inline TIndex const &
     container(Iter< TIndex, VSTree<TSpec> > const &it) {
         return *it.index;
     }
 
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline TIndex &
+    inline TIndex &
     container(Iter< TIndex, VSTree<TSpec> > &it) {
         return *const_cast<TIndex*>(it.index);
     }
@@ -926,13 +926,13 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
  */
 
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline typename VertexDescriptor<TIndex>::Type &
+    inline typename VertexDescriptor<TIndex>::Type &
     value(Iter< TIndex, VSTree<TSpec> > &it) {
         return it.vDesc;
     }
 
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline typename VertexDescriptor<TIndex>::Type const &
+    inline typename VertexDescriptor<TIndex>::Type const &
     value(Iter< TIndex, VSTree<TSpec> > const &it) {
         return it.vDesc;
     }
@@ -1007,7 +1007,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
  */
 
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline typename SAValue<TIndex>::Type
+    inline typename SAValue<TIndex>::Type
     getOccurrence(Iter< TIndex, VSTree<TSpec> > const &it)
     {
         return saAt(value(it).range.i1, container(it));
@@ -1041,7 +1041,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
  */
 
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline typename Size<TIndex>::Type
+    inline typename Size<TIndex>::Type
     countOccurrences(Iter< TIndex, VSTree<TSpec> > const &it)
     {
         if (_isSizeInval(value(it).range.i2))
@@ -1069,7 +1069,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
  * The necessary index tables are built on-demand via @link Index#indexRequire @endlink if index is not <tt>const</tt>.
  */
     template < typename TText, typename TSpec, typename TDesc >
-    SEQAN_HOST_DEVICE inline Pair<typename Size<Index<TText, TSpec> >::Type>
+    inline Pair<typename Size<Index<TText, TSpec> >::Type>
     range(Index<TText, TSpec> const &index, TDesc const &desc)
     {
         if (_isSizeInval(desc.range.i2))
@@ -1079,7 +1079,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
     }
 
     template < typename TIndex, typename TSpec >
-    SEQAN_HOST_DEVICE inline Pair<typename Size<TIndex>::Type>
+    inline Pair<typename Size<TIndex>::Type>
     range(Iter<TIndex, VSTree<TSpec> > const &it)
     {
         if (_isSizeInval(value(it).range.i2))
@@ -1117,7 +1117,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
  */
 
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline typename Infix< typename Fibre<TIndex, FibreSA>::Type const >::Type
+    inline typename Infix< typename Fibre<TIndex, FibreSA>::Type const >::Type
     getOccurrences(Iter< TIndex, VSTree<TSpec> > const &it)
     {
         if (_isSizeInval(value(it).range.i2))
@@ -1260,7 +1260,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
  */
 
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline typename Infix< typename Fibre<TIndex, FibreText>::Type const >::Type
+    inline typename InfixOnValue< typename Fibre<TIndex, FibreText>::Type const >::Type
     representative(Iter< TIndex, VSTree<TSpec> > const &it)
     {
         return infixWithLength(indexText(container(it)), getOccurrence(it), repLength(it));
@@ -1374,7 +1374,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
     // get the interval of SA of the subtree under the edge beginning with character c
     template < typename TText, class TIndexSpec, class TSpec, typename TValue >
-    SEQAN_HOST_DEVICE inline bool
+    inline bool
     _getNodeByChar(
         Iter< Index<TText, IndexEsa<TIndexSpec> >, VSTree<TSpec> > const &it,
         TValue c,
@@ -1467,7 +1467,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
  */
 
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline bool
+    inline bool
     nodeHullPredicate(Iter<TIndex, TSpec> &)
     {
         return true;
@@ -1486,7 +1486,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
  */
 
     template < typename TText, typename TIndexSpec, class TSpec >
-    SEQAN_HOST_DEVICE inline void goRoot(Iter<Index<TText, TIndexSpec>, VSTree<TSpec> > &it)
+    inline void goRoot(Iter<Index<TText, TIndexSpec>, VSTree<TSpec> > &it)
     {
         _historyClear(it);
         clear(it);                            // start in root node with range (0,infty)
@@ -1720,19 +1720,19 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
     // unified history stack access for goDown(..)
 
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline void
+    inline void
     _historyClear(Iter< TIndex, VSTree<TSpec> > &) {}
 
 
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline void
+    inline void
     _historyClear(Iter< TIndex, VSTree< TopDown<TSpec> > > &it)
     {
         it._parentDesc = value(it);
     }
 
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline void
+    inline void
     _historyClear(Iter< TIndex, VSTree< TopDown< ParentLinks<TSpec> > > > &it)
     {
         clear(it.history);
@@ -1745,14 +1745,14 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
         value(it).parentRight = value(it).range.i2;
     }
 */    template < typename TText, class TIndexSpec, class TSpec >
-    SEQAN_HOST_DEVICE inline void
+    inline void
     _historyPush(Iter< Index<TText, IndexEsa<TIndexSpec> >, VSTree< TopDown<TSpec> > > &it)
     {
         it._parentDesc = value(it);
         value(it).parentRight = value(it).range.i2;
     }
     template < typename TText, class TIndexSpec, class TSpec >
-    SEQAN_HOST_DEVICE inline void
+    inline void
     _historyPush(Iter< Index<TText, IndexEsa<TIndexSpec> >, VSTree< TopDown< ParentLinks<TSpec> > > > &it)
     {
         typedef Iter< Index<TText, IndexEsa<TIndexSpec> >, VSTree< TopDown< ParentLinks<TSpec> > > > TIter;
@@ -1766,13 +1766,13 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
     // standard down/right/up handlers of top-down-traversal
     template < typename TIndex, typename TSpec >
-    SEQAN_HOST_DEVICE inline void _onGoDown(Iter<TIndex, VSTree< TopDown<TSpec> > > &) {}
+    inline void _onGoDown(Iter<TIndex, VSTree< TopDown<TSpec> > > &) {}
 
     template < typename TIndex, typename TSpec >
-    SEQAN_HOST_DEVICE inline void _onGoRight(Iter<TIndex, VSTree< TopDown<TSpec> > > &) {}
+    inline void _onGoRight(Iter<TIndex, VSTree< TopDown<TSpec> > > &) {}
 
     template < typename TIndex, typename TSpec >
-    SEQAN_HOST_DEVICE inline void _onGoUp(Iter<TIndex, VSTree< TopDown< ParentLinks<TSpec> > > > &) {}
+    inline void _onGoUp(Iter<TIndex, VSTree< TopDown< ParentLinks<TSpec> > > > &) {}
 
 
     //////////////////////////////////////////////////////////////////////////////
@@ -1780,7 +1780,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
     // go down the leftmost edge (including empty $-edges)
     template < typename TText, class TIndexSpec, class TSpec, typename TDfsOrder >
-    SEQAN_HOST_DEVICE inline bool _goDown(
+    inline bool _goDown(
         Iter< Index<TText, IndexEsa<TIndexSpec> >, VSTree< TopDown<TSpec> > > &it,
         VSTreeIteratorTraits<TDfsOrder, False> const)
     {
@@ -1806,7 +1806,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
 
     template <typename TIndex, typename TSpec, typename TVertexDesc>
-    SEQAN_HOST_DEVICE inline void
+    inline void
     _setParentNodeDescriptor(Iter<TIndex, VSTree< TopDown<TSpec> > > &it,
                              TVertexDesc const &desc)
     {
@@ -1822,7 +1822,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
     // go down the leftmost edge (skip empty $-edges)
     template < typename TText, class TIndexSpec, class TSpec, typename TDfsOrder >
-    SEQAN_HOST_DEVICE inline bool _goDown(
+    inline bool _goDown(
         Iter< Index<TText, IndexEsa<TIndexSpec> >, VSTree< TopDown<TSpec> > > &it,
         VSTreeIteratorTraits<TDfsOrder, True> const)
     {
@@ -1876,7 +1876,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
     // go down the leftmost edge
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline bool goDown(Iter< TIndex, VSTree< TopDown<TSpec> > > &it) {
+    inline bool goDown(Iter< TIndex, VSTree< TopDown<TSpec> > > &it) {
         if (_goDown(it, typename GetVSTreeIteratorTraits< Iter<TIndex, VSTree< TopDown<TSpec> > > >::Type())) {
             _onGoDown(it);
             return true;
@@ -1890,7 +1890,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
     // go down the edge beginning with c (returns false iff this edge doesn't exists)
     template < typename TIndex, class TSpec, typename TValue >
-    SEQAN_HOST_DEVICE inline bool _goDownChar(Iter< TIndex, VSTree< TopDown<TSpec> > > &it, TValue c)
+    inline bool _goDownChar(Iter< TIndex, VSTree< TopDown<TSpec> > > &it, TValue c)
     {
         typename VertexDescriptor<TIndex>::Type nodeDesc;
         if (_getNodeByChar(it, c, nodeDesc)) {
@@ -1904,14 +1904,14 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
     // go down the path corresponding to pattern
     // lcp is the longest prefix of pattern and path
     template < typename TIndex, typename TSpec, typename TString, typename TSize >
-    SEQAN_HOST_DEVICE inline bool
+    inline bool
     _goDownString(
         Iter< TIndex, VSTree< TopDown<TSpec> > > &node,
         TString const &pattern,
         TSize &lcp)
     {
         typedef typename Fibre<TIndex, FibreText>::Type const        TText;
-        typedef typename Infix<TText>::Type                            TInfix;
+        typedef typename InfixOnValue<TText>::Type                   TInfix;
         typedef typename Iterator<TInfix, Standard>::Type            IText;
         typedef typename Iterator<TString const, Standard>::Type    IPattern;
 
@@ -1954,7 +1954,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
     }
 
     template < typename TIndex, typename TSpec, typename TObject >
-    SEQAN_HOST_DEVICE inline bool
+    inline bool
     _goDownObject(
         Iter< TIndex, VSTree< TopDown<TSpec> > > &it,
         TObject const &obj,
@@ -1964,7 +1964,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
     }
 
     template < typename TIndex, typename TSpec, typename TObject >
-    SEQAN_HOST_DEVICE inline bool
+    inline bool
     _goDownObject(
         Iter< TIndex, VSTree< TopDown<TSpec> > > &it,
         TObject const &obj,
@@ -1977,7 +1977,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
     // public interface for goDown(it, ...)
     template < typename TIndex, typename TSpec, typename TObject >
-    SEQAN_HOST_DEVICE inline bool
+    inline bool
     goDown(
         Iter< TIndex, VSTree< TopDown<TSpec> > > &it,
         TObject const &obj)
@@ -1986,7 +1986,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
     }
 
     template < typename TIndex, typename TSpec, typename TString, typename TSize >
-    SEQAN_HOST_DEVICE inline bool
+    inline bool
     goDown(
         Iter< TIndex, VSTree< TopDown<TSpec> > > &it,
         TString const &pattern,
@@ -2035,7 +2035,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
     // go up one edge (returns false if in root node)
     // can be used at most once, as no history stack is available
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline bool
+    inline bool
     _goUp(Iter< TIndex, VSTree< TopDown<TSpec> > > &it)
     {
         if (!isRoot(it)) {
@@ -2047,7 +2047,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
     // go up one edge (returns false if in root node)
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline bool
+    inline bool
     _goUp(Iter< TIndex, VSTree< TopDown< ParentLinks<TSpec> > > > &it)
     {
         if (!empty(it.history)) {
@@ -2062,7 +2062,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
     // go up one edge
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline bool goUp(Iter< TIndex, VSTree< TopDown< ParentLinks<TSpec> > > > &it) {
+    inline bool goUp(Iter< TIndex, VSTree< TopDown< ParentLinks<TSpec> > > > &it) {
         if (_goUp(it)) {
             _onGoUp(it);
             return true;
@@ -2085,7 +2085,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
     // return vertex descriptor of parent's node
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline typename VertexDescriptor<TIndex>::Type
+    inline typename VertexDescriptor<TIndex>::Type
     nodeUp(Iter< TIndex, VSTree< TopDown< ParentLinks<TSpec> > > > const &it)
     {
         if (!empty(it.history))
@@ -2101,7 +2101,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
     // nodeUp adaption for non-history iterators
     // ATTENTION: Do not call nodeUp after a goDown that returned false (or after _goUp)!
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline typename VertexDescriptor<TIndex>::Type const &
+    inline typename VertexDescriptor<TIndex>::Type const &
     nodeUp(Iter< TIndex, VSTree< TopDown<TSpec> > > const &it)
     {
         return it._parentDesc;
@@ -2120,7 +2120,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
  */
     // go right to the lexic. next sibling
     template < typename TText, class TIndexSpec, class TSpec, typename TDfsOrder, typename THideEmptyEdges >
-    SEQAN_HOST_DEVICE inline bool _goRight(
+    inline bool _goRight(
         Iter< Index<TText, IndexEsa<TIndexSpec> >, VSTree< TopDown<TSpec> > > &it,
         VSTreeIteratorTraits<TDfsOrder, THideEmptyEdges> const)
     {
@@ -2150,7 +2150,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
     // go down the leftmost edge
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline bool goRight(Iter< TIndex, VSTree< TopDown<TSpec> > > &it) {
+    inline bool goRight(Iter< TIndex, VSTree< TopDown<TSpec> > > &it) {
         if (_goRight(it, typename GetVSTreeIteratorTraits< Iter<TIndex, VSTree< TopDown<TSpec> > > >::Type())) {
             _onGoRight(it);
             return true;
@@ -2171,7 +2171,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
  *               the metafunction @link Size @endlink of the underlying index.
  */
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline typename Size< TIndex >::Type
+    inline typename Size< TIndex >::Type
     parentEdgeLength(Iter< TIndex, VSTree< TopDown<TSpec> > > const &it)
     {
         return repLength(it) - parentRepLength(it);
@@ -2191,7 +2191,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
  */
 
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline typename EdgeLabel< Iter< TIndex, VSTree<TSpec> > >::Type
+    inline typename EdgeLabel< Iter< TIndex, VSTree<TSpec> > >::Type
     parentEdgeLabel(Iter< TIndex, VSTree< TopDown<TSpec> > > const &it)
     {
         return infixWithLength(
@@ -2225,13 +2225,13 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
     }
 
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline void _clear(Iter<TIndex, VSTree<TSpec> > &it)
+    inline void _clear(Iter<TIndex, VSTree<TSpec> > &it)
     {
         value(it) = typename VertexDescriptor<TIndex>::Type(MinimalCtor());
     }
 
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline void clear(Iter<TIndex, VSTree<TSpec> > &it)
+    inline void clear(Iter<TIndex, VSTree<TSpec> > &it)
     {
         _clear(it);
     }
@@ -2450,19 +2450,19 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
  * @endcode
  */
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline bool isRoot(Iter<TIndex, VSTree< BottomUp<TSpec> > > const &it)
+    inline bool isRoot(Iter<TIndex, VSTree< BottomUp<TSpec> > > const &it)
     {
         return empty(it.history);
     }
 
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline bool isRoot(Iter<TIndex, VSTree<TSpec> > const &it)
+    inline bool isRoot(Iter<TIndex, VSTree<TSpec> > const &it)
     {
         return _isRoot(value(it));
     }
 
     template < typename TSize >
-    SEQAN_HOST_DEVICE inline bool _isRoot(VertexEsa<TSize> const &value)
+    inline bool _isRoot(VertexEsa<TSize> const &value)
     {
 //IOREV _notio_
         return _isSizeInval(value.range.i2);
@@ -2755,7 +2755,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
  * @link DemoIndexCountChildren @endlink
  */
     template < typename TSize >
-    SEQAN_HOST_DEVICE inline bool _isLeaf(VertexEsa<TSize> const &vDesc)
+    inline bool _isLeaf(VertexEsa<TSize> const &vDesc)
     {
 //IOREV _notio_
         // is this a leaf?
@@ -2764,7 +2764,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
     // is this a leaf? (including empty $-edges)
     template < typename TIndex, class TSpec, typename TDfsOrder >
-    SEQAN_HOST_DEVICE inline bool _isLeaf(
+    inline bool _isLeaf(
         Iter<TIndex, VSTree<TSpec> > const &it,
         VSTreeIteratorTraits<TDfsOrder, False> const)
     {
@@ -2773,14 +2773,14 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
 
     template <typename TIndex, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename SAValue<TIndex>::Type
+    inline typename SAValue<TIndex>::Type
     _lastOccurrence(Iter<TIndex, VSTree<TSpec> > const &it)
     {
         return back(getOccurrences(it));
     }
 
     template <typename TText, typename TIndexSpec, typename TSpec>
-    SEQAN_HOST_DEVICE inline typename SAValue<Index<TText, IndexEsa<TIndexSpec> > >::Type
+    inline typename SAValue<Index<TText, IndexEsa<TIndexSpec> > >::Type
     _lastOccurrence(Iter<Index<TText, IndexEsa<TIndexSpec> >, VSTree<TSpec> > const &it)
     {
         if (_isSizeInval(value(it).range.i2))
@@ -2791,7 +2791,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
 
     // is this a leaf? (hide empty $-edges)
     template < typename TIndex, class TSpec, typename TDfsOrder >
-    SEQAN_HOST_DEVICE inline bool _isLeaf(Iter<TIndex, VSTree<TSpec> > const &it, VSTreeIteratorTraits<TDfsOrder, True> const)
+    inline bool _isLeaf(Iter<TIndex, VSTree<TSpec> > const &it, VSTreeIteratorTraits<TDfsOrder, True> const)
     {
         typedef typename SAValue<TIndex>::Type  TOcc;
 
@@ -2809,7 +2809,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
     }
 
     template < typename TIndex, class TSpec >
-    SEQAN_HOST_DEVICE inline bool isLeaf(Iter<TIndex, VSTree<TSpec> > const &it)
+    inline bool isLeaf(Iter<TIndex, VSTree<TSpec> > const &it)
     {
         return _isLeaf(it, typename GetVSTreeIteratorTraits< Iter<TIndex, VSTree<TSpec> > >::Type());
     }
@@ -2818,7 +2818,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
     // (more or less) internal functions for accessing the childtab
 
     template < typename TSize, typename TIndex >
-    SEQAN_HOST_DEVICE inline bool _isNextl(TSize i, TIndex const &index)
+    inline bool _isNextl(TSize i, TIndex const &index)
     {
 //IOREV _notio_
         if (i >= length(index)) return false;
@@ -2827,7 +2827,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
     }
 
     template < typename TSize, typename TIndex >
-    SEQAN_HOST_DEVICE inline bool _isUp(TSize i, TIndex const &index)
+    inline bool _isUp(TSize i, TIndex const &index)
     {
 //IOREV _notio_
         if (i >= length(index)) return false;
@@ -2836,13 +2836,13 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
     }
 
     template < typename TSize, typename TIndex >
-    SEQAN_HOST_DEVICE inline TSize _getNextl(TSize i, TIndex const &index)
+    inline TSize _getNextl(TSize i, TIndex const &index)
     {
         return childAt(i, index);
     }
 
     template < typename TSize, typename TIndex >
-    SEQAN_HOST_DEVICE inline TSize _getUp(TSize i, TIndex const &index)
+    inline TSize _getUp(TSize i, TIndex const &index)
     {
         if (!_isSizeInval(i))
             return childAt(i - 1, index);
@@ -2851,7 +2851,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
     }
 
     template < typename TSize, typename TIndex >
-    SEQAN_HOST_DEVICE inline TSize _getDown(TSize i, TIndex const &index)
+    inline TSize _getDown(TSize i, TIndex const &index)
     {
         return childAt(i, index);
     }
diff --git a/include/seqan/index/index_fm.h b/include/seqan/index/index_fm.h
index 1a738fe..f58f8dc 100644
--- a/include/seqan/index/index_fm.h
+++ b/include/seqan/index/index_fm.h
@@ -63,25 +63,26 @@ namespace seqan {
  * @brief The sampling rate determines how many suffix array entries are represented with one entry in the
  *        @link CompressedSA @endlink.
  *
- * @typedef FMIndexConfig::TValuesSpec
- * @signature typedef WaveletTree<TSpec, TConfig> TValuesSpec;
- * @brief The <tt>TValuesSpec</tt> determines the type of the occurrence table. In the default @link FMIndexConfig
- *        @endlink object the type of <tt>TValuesSpec</tt> is a wavelet tree (@link WaveletTree @endlink).
+ * @typedef FMIndexConfig::Bwt
+ * @signature typedef WaveletTree<TSpec, TConfig> Bwt;
+ * @brief The <tt>Bwt</tt> determines the type of the occurrence table. In the default @link FMIndexConfig
+ *        @endlink object the type of <tt>Bwt</tt> is a wavelet tree (@link WaveletTree @endlink).
  *
- * @typedef FMIndexConfig::TSentinelsSpec
- * @signature typedef Levels<TSpec, TConfig> TSentinelsSpec;
- * @brief The <tt>TSentinelsSpec</tt> determines the type of the sentinels in the @link FMIndex @endlink.  In the
- *        default @link FMIndexConfig @endlink object the type of <tt>TSentinelsSpec</tt> is a two level
+ * @typedef FMIndexConfig::Sentinels
+ * @signature typedef Levels<TSpec, TConfig> Sentinels;
+ * @brief The <tt>Sentinels</tt> determines the type of the sentinels in the @link FMIndex @endlink. In the
+ *        default @link FMIndexConfig @endlink object the type of <tt>Sentinels</tt> is a two level
  *        @link RankDictionary @endlink.
  */
+
 template <typename TSpec = void, typename TLengthSum = size_t>
 struct FMIndexConfig
 {
-    typedef TLengthSum                                  LengthSum;
-    typedef WaveletTree<TSpec, WTRDConfig<LengthSum> >  Bwt;
-    typedef Levels<TSpec, LevelsRDConfig<LengthSum> >   Sentinels;
+    typedef TLengthSum                                                  LengthSum;
+    typedef WaveletTree<TSpec, WTRDConfig<LengthSum, Alloc<>, 1, 0> >   Bwt;
+    typedef Levels<TSpec, LevelsRDConfig<LengthSum, Alloc<>, 1, 0> >    Sentinels;
 
-    static const unsigned SAMPLING =                    10;
+    static const unsigned SAMPLING =                                    10;
 };
 
 // ============================================================================
@@ -124,7 +125,7 @@ typedef Tag<FibreSALF_> const           FibreSALF;
  * @tag FMIndexFibres#FibreText
  * @brief The original text of the index.
  *
- * @tagFMIndexFibres#FibreSA
+ * @tag FMIndexFibres#FibreSA
  * @brief The compressed suffix array of the text.
  *
  * @tag FMIndexFibres#FibreLF
@@ -149,13 +150,7 @@ struct Fibre<Index<TText, FMIndex<TSpec, TConfig> >, FibreTempSA>
 {
     typedef Index<TText, FMIndex<TSpec, TConfig> >          TIndex_;
     typedef typename SAValue<TIndex_>::Type                 TSAValue_;
-
-    // NOTE(esiragusa): External causes problems on device code.
-#ifndef PLATFORM_CUDA
     typedef String<TSAValue_, External<ExternalConfigLarge<> > >                Type;
-#else
-    typedef String<TSAValue_, typename DefaultIndexStringSpec<TText>::Type>     Type;
-#endif
 };
 
 // ----------------------------------------------------------------------------
@@ -205,6 +200,16 @@ public:
     typename Fibre<Index, FibreLF>::Type            lf;
     typename Fibre<Index, FibreSA>::Type            sa;
 
+    /*!
+     * @fn FMIndex::Index
+     * @brief Constructor
+     *
+     * @signature Index::Index();
+     * @signature Index::Index(text);
+     *
+     * @param[in] text The text to be indexed.
+     */
+
     Index() {};
 
     Index(TText & text) :
@@ -253,14 +258,14 @@ inline bool empty(Index<TText, FMIndex<TSpec, TConfig> > const & index)
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, FMIndex<TSpec, TConfig> >, FibreLF>::Type &
+inline typename Fibre<Index<TText, FMIndex<TSpec, TConfig> >, FibreLF>::Type &
 getFibre(Index<TText, FMIndex<TSpec, TConfig> > & index, FibreLF /*tag*/)
 {
     return index.lf;
 }
 
 template <typename TText, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, FMIndex<TSpec, TConfig> >, FibreLF>::Type const &
+inline typename Fibre<Index<TText, FMIndex<TSpec, TConfig> >, FibreLF>::Type const &
 getFibre(Index<TText, FMIndex<TSpec, TConfig> > const & index, FibreLF /*tag*/)
 {
     return index.lf;
@@ -282,14 +287,14 @@ getFibre(Index<TText, FMIndex<TSpec, TConfig> > const & index, FibreLF /*tag*/)
  */
 
 template <typename TText, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, FMIndex<TSpec, TConfig> >, FibreLF>::Type &
+inline typename Fibre<Index<TText, FMIndex<TSpec, TConfig> >, FibreLF>::Type &
 indexLF(Index<TText, FMIndex<TSpec, TConfig> > & index)
 {
     return getFibre(index, FibreLF());
 }
 
 template <typename TText, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline typename Fibre<Index<TText, FMIndex<TSpec, TConfig> >, FibreLF>::Type const &
+inline typename Fibre<Index<TText, FMIndex<TSpec, TConfig> >, FibreLF>::Type const &
 indexLF(Index<TText, FMIndex<TSpec, TConfig> > const & index)
 {
     return getFibre(index, FibreLF());
@@ -419,13 +424,13 @@ inline bool indexCreate(Index<TText, FMIndex<TSpec, TConfig> > & index)
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline bool indexSupplied(Index<TText, FMIndex<TSpec, TConfig> > & index, FibreSALF const)
+inline bool indexSupplied(Index<TText, FMIndex<TSpec, TConfig> > & index, FibreSALF const)
 {
     return !(empty(getFibre(index, FibreSA())) || empty(getFibre(index, FibreLF())));
 }
 
 template <typename TText, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline bool indexSupplied(Index<TText, FMIndex<TSpec, TConfig> > const & index, FibreSALF const)
+inline bool indexSupplied(Index<TText, FMIndex<TSpec, TConfig> > const & index, FibreSALF const)
 {
     return !(empty(getFibre(index, FibreSA())) || empty(getFibre(index, FibreLF())));
 }
diff --git a/include/seqan/index/index_fm_compressed_sa.h b/include/seqan/index/index_fm_compressed_sa.h
index dc11bcb..784742b 100644
--- a/include/seqan/index/index_fm_compressed_sa.h
+++ b/include/seqan/index/index_fm_compressed_sa.h
@@ -197,14 +197,14 @@ struct CompressedSA
     }
 
     template <typename TPos>
-    SEQAN_HOST_DEVICE inline typename Value<CompressedSA>::Type const
+    inline typename Value<CompressedSA>::Type const
     operator[](TPos pos)
     {
         return value(*this, pos);
     }
 
     template <typename TPos>
-    SEQAN_HOST_DEVICE inline typename Value<CompressedSA>::Type
+    inline typename Value<CompressedSA>::Type
     operator[](TPos pos) const
     {
         return value(*this, pos);
@@ -252,7 +252,7 @@ inline void clear(CompressedSA<TText, TSpec, TConfig> & compressedSA)
  * @return bool Returns true if the compressed suffix array is empty and false otherwise.
  */
 template <typename TText, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline bool empty(CompressedSA<TText, TSpec, TConfig> & compressedSA)
+inline bool empty(CompressedSA<TText, TSpec, TConfig> & compressedSA)
 {
     return empty(getFibre(compressedSA, FibreSparseString()));
     //    && empty(getFibre(compressedSA, FibreLF()));
@@ -351,14 +351,14 @@ void createCompressedSa(CompressedSA<TText, TSpec, TConfig> & compressedSA, TSA
  */
 
 template <typename TText, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline typename Fibre<CompressedSA<TText, TSpec, TConfig>, FibreSparseString>::Type const &
+inline typename Fibre<CompressedSA<TText, TSpec, TConfig>, FibreSparseString>::Type const &
 getFibre(CompressedSA<TText, TSpec, TConfig> const & compressedSA, FibreSparseString)
 {
     return compressedSA.sparseString;
 }
 
 template <typename TText, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline typename Fibre<CompressedSA<TText, TSpec, TConfig>, FibreSparseString>::Type &
+inline typename Fibre<CompressedSA<TText, TSpec, TConfig>, FibreSparseString>::Type &
 getFibre(CompressedSA<TText, TSpec, TConfig> & compressedSA, FibreSparseString)
 {
     return compressedSA.sparseString;
@@ -421,7 +421,7 @@ void setFibre(CompressedSA<TText, TSpec, TConfig> & compressedSA, TLF & lf, Fibr
  */
 
 template <typename TText, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline typename Size<typename Fibre<CompressedSA<TText, TSpec, TConfig>, FibreSparseString>::Type>::Type
+inline typename Size<typename Fibre<CompressedSA<TText, TSpec, TConfig>, FibreSparseString>::Type>::Type
 length(CompressedSA<TText, TSpec, TConfig> const & compressedSA)
 {
     return length(getFibre(compressedSA, FibreSparseString()));
@@ -476,7 +476,7 @@ resize(CompressedSA<TText, TSpec, TConfig> & compressedSA, TSize size, Tag<TExpa
  */
 
 template <typename TText, typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline typename Value<CompressedSA<TText, TSpec, TConfig> >::Type
+inline typename Value<CompressedSA<TText, TSpec, TConfig> >::Type
 value(CompressedSA<TText, TSpec, TConfig> & compressedSA, TPos pos)
 {
     typedef typename Fibre<CompressedSA<TText, TSpec, TConfig>, FibreSparseString>::Type     TSparseString;
@@ -494,7 +494,7 @@ value(CompressedSA<TText, TSpec, TConfig> & compressedSA, TPos pos)
 }
 
 template <typename TText, typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline typename Value<CompressedSA<TText, TSpec, TConfig> >::Type const
+inline typename Value<CompressedSA<TText, TSpec, TConfig> >::Type const
 value(CompressedSA<TText, TSpec, TConfig> const & compressedSA, TPos pos)
 {
     typedef typename Fibre<CompressedSA<TText, TSpec, TConfig>, FibreSparseString>::Type     TSparseString;
diff --git a/include/seqan/index/index_fm_device.h b/include/seqan/index/index_fm_device.h
deleted file mode 100644
index 8432e14..0000000
--- a/include/seqan/index/index_fm_device.h
+++ /dev/null
@@ -1,151 +0,0 @@
-// ==========================================================================
-//                 SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2013 NVIDIA Corporation
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of NVIDIA Corporation nor the names of
-//       its contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-// Author: Enrico Siragusa <enrico.siragusa at fu-berlin.de>
-// ==========================================================================
-// This file contains Index specializations for thrust::device_vector.
-// ==========================================================================
-
-#ifndef INDEX_FM_DEVICE_H_
-#define INDEX_FM_DEVICE_H_
-
-namespace seqan {
-
-// ----------------------------------------------------------------------------
-// Typedef DnaStringSet
-// ----------------------------------------------------------------------------
-
-typedef StringSet<DnaString, Owner<ConcatDirect<> > >   DnaStringSet;
-
-// ----------------------------------------------------------------------------
-// Typedef CudaFMIndexConfig
-// ----------------------------------------------------------------------------
-
-struct CudaFMIndexConfig
-{
-    typedef TwoLevels<void>    TValuesSpec;
-    typedef Naive<void>        TSentinelsSpec;
-
-    static const unsigned SAMPLING = 10;
-};
-
-typedef FMIndex<void, CudaFMIndexConfig>        CudaFMIndexSpec;
-
-// ----------------------------------------------------------------------------
-// Typedef DnaStringSetFMIndex
-// ----------------------------------------------------------------------------
-
-typedef Index<DnaString, CudaFMIndexSpec>       DnaStringFMIndex;
-typedef Index<DnaStringSet, CudaFMIndexSpec>    DnaStringSetFMIndex;
-
-// ----------------------------------------------------------------------------
-// Metafunction SAValue
-// ----------------------------------------------------------------------------
-
-template <>
-struct SAValue<DnaStringSet>
-{
-    typedef Pair<uint8_t, uint32_t, Pack> Type;
-};
-
-// ----------------------------------------------------------------------------
-// Metafunction Size; Index
-// ----------------------------------------------------------------------------
-
-template <>
-struct Size<DnaStringSetFMIndex>
-{
-    typedef uint32_t Type;
-};
-
-template <>
-struct Size<View<DnaStringSetFMIndex>::Type>
-{
-    typedef uint32_t Type;
-};
-
-template <>
-struct Size<Device<DnaStringSetFMIndex>::Type>
-{
-    typedef uint32_t Type;
-};
-
-template <>
-struct Size<View<Device<DnaStringSetFMIndex>::Type>::Type>
-{
-    typedef uint32_t Type;
-};
-
-// ----------------------------------------------------------------------------
-// Metafunction Size; LF
-// ----------------------------------------------------------------------------
-
-template <>
-struct Size<LF<DnaStringSet, void, CudaFMIndexConfig> >
-{
-    typedef uint32_t Type;
-};
-
-// ----------------------------------------------------------------------------
-// Metafunction Size; Rank Dictionary
-// ----------------------------------------------------------------------------
-
-template <typename TSpec>
-struct Size<RankDictionary<Dna, TwoLevels<TSpec> > >
-{
-    typedef uint32_t Type;
-};
-
-template <typename TSpec>
-struct Size<RankDictionary<bool, TwoLevels<TSpec> > >
-{
-    typedef uint32_t Type;
-};
-
-template <typename TSpec>
-struct Size<RankDictionary<bool, Naive<TSpec> > >
-{
-    typedef uint32_t Type;
-};
-
-// ----------------------------------------------------------------------------
-// Metafunction Value; Shape
-// ----------------------------------------------------------------------------
-
-template <unsigned q>
-struct Value<Shape<Dna, UngappedShape<q> > >
-{
-    typedef uint32_t    Type;
-};
-
-}
-
-#endif  // #ifndef INDEX_FM_DEVICE_H_
diff --git a/include/seqan/index/index_fm_lf_table.h b/include/seqan/index/index_fm_lf_table.h
index b4fc240..e68c1c4 100644
--- a/include/seqan/index/index_fm_lf_table.h
+++ b/include/seqan/index/index_fm_lf_table.h
@@ -207,25 +207,33 @@ struct LF
     }
 
     template <typename TPos>
-    SEQAN_HOST_DEVICE typename Size<LF const>::Type
+    typename Size<LF const>::Type
     operator[] (TPos pos) const
     {
         return _getBwtRank(*this, pos);
     }
 
     template <typename TPos>
-    SEQAN_HOST_DEVICE typename Size<LF const>::Type
+    typename Size<LF const>::Type
     operator() (TPos pos) const
     {
         return _getBwtRank(*this, pos);
     }
 
     template <typename TPos, typename TValue>
-    SEQAN_HOST_DEVICE typename Size<LF const>::Type
+    typename Size<LF const>::Type
     operator() (TPos pos, TValue val) const
     {
         return _getBwtRank(*this, pos, val);
     }
+
+    template <typename TPos, typename TValue>
+    typename Size<LF const>::Type
+    operator() (TPos pos, TValue val, TPos & smaller) const
+    {
+        smaller = 0; // in case it was not initialized before
+        return _getCumulativeBwtRank(*this, pos, val, smaller);
+    }
 };
 
 // ============================================================================
@@ -263,42 +271,42 @@ bwtLength(TText const & text)
  * @return TFibre A reference to the @link Fibre @endlink object of type @link Fibre @endlink<@link LF @endlink<TText, TSpec, TConfig>, FibrePrefixSums>::Type
  */
 template <typename TText, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline typename Fibre<LF<TText, TSpec, TConfig>, FibrePrefixSums>::Type &
+inline typename Fibre<LF<TText, TSpec, TConfig>, FibrePrefixSums>::Type &
 getFibre(LF<TText, TSpec, TConfig> & lf, FibrePrefixSums)
 {
     return lf.sums;
 }
 
 template <typename TText, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline typename Fibre<LF<TText, TSpec, TConfig>, FibrePrefixSums>::Type const &
+inline typename Fibre<LF<TText, TSpec, TConfig>, FibrePrefixSums>::Type const &
 getFibre(LF<TText, TSpec, TConfig> const & lf, FibrePrefixSums)
 {
     return lf.sums;
 }
 
 template <typename TText, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline typename Fibre<LF<TText, TSpec, TConfig>, FibreBwt>::Type &
+inline typename Fibre<LF<TText, TSpec, TConfig>, FibreBwt>::Type &
 getFibre(LF<TText, TSpec, TConfig> & lf, FibreBwt)
 {
     return lf.bwt;
 }
 
 template <typename TText, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline typename Fibre<LF<TText, TSpec, TConfig>, FibreBwt>::Type const &
+inline typename Fibre<LF<TText, TSpec, TConfig>, FibreBwt>::Type const &
 getFibre(LF<TText, TSpec, TConfig> const & lf, FibreBwt)
 {
     return lf.bwt;
 }
 
 template <typename TText, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline typename Fibre<LF<TText, TSpec, TConfig>, FibreSentinels>::Type &
+inline typename Fibre<LF<TText, TSpec, TConfig>, FibreSentinels>::Type &
 getFibre(LF<TText, TSpec, TConfig> & lf, FibreSentinels)
 {
     return lf.sentinels;
 }
 
 template <typename TText, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline typename Fibre<LF<TText, TSpec, TConfig>, FibreSentinels>::Type const &
+inline typename Fibre<LF<TText, TSpec, TConfig>, FibreSentinels>::Type const &
 getFibre(LF<TText, TSpec, TConfig> const & lf, FibreSentinels)
 {
     return lf.sentinels;
@@ -324,14 +332,14 @@ getFibre(LF<TText, TSpec, TConfig> const & lf, FibreSentinels)
 
 
 template <typename TText, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline bool empty(LF<TText, TSpec, TConfig> const & lf)
+inline bool empty(LF<TText, TSpec, TConfig> const & lf)
 {
     return empty(lf.bwt) &&
            empty(lf.sums);
 }
 
 template <typename TText, typename TSSetSpec, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline bool empty(LF<StringSet<TText, TSSetSpec>, TSpec, TConfig> const & lf)
+inline bool empty(LF<StringSet<TText, TSSetSpec>, TSpec, TConfig> const & lf)
 {
     return empty(lf.bwt) &&
            empty(lf.sentinels) &&
@@ -384,14 +392,14 @@ inline void _clearSentinels(LF<StringSet<TText, TSSetSpec>, TSpec, TConfig> & lf
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline typename Size<LF<TText, TSpec, TConfig> const>::Type
+inline typename Size<LF<TText, TSpec, TConfig> const>::Type
 _getSentinelsRank(LF<TText, TSpec, TConfig> const & lf, TPos pos)
 {
     return pos >= lf.sentinels;
 }
 
 template <typename TText, typename TSSetSpec, typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline typename Size<LF<StringSet<TText, TSSetSpec>, TSpec, TConfig> const>::Type
+inline typename Size<LF<StringSet<TText, TSSetSpec>, TSpec, TConfig> const>::Type
 _getSentinelsRank(LF<StringSet<TText, TSSetSpec>, TSpec, TConfig> const & lf, TPos pos)
 {
     return getRank(lf.sentinels, pos);
@@ -402,13 +410,13 @@ _getSentinelsRank(LF<StringSet<TText, TSSetSpec>, TSpec, TConfig> const & lf, TP
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline bool isSentinel(LF<TText, TSpec, TConfig> const & lf, TPos pos)
+inline bool isSentinel(LF<TText, TSpec, TConfig> const & lf, TPos pos)
 {
     return lf.sentinels == pos;
 }
 
 template <typename TText, typename TSSetSpec, typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline bool isSentinel(LF<StringSet<TText, TSSetSpec>, TSpec, TConfig> const & lf, TPos pos)
+inline bool isSentinel(LF<StringSet<TText, TSSetSpec>, TSpec, TConfig> const & lf, TPos pos)
 {
     return getValue(lf.sentinels, pos);
 }
@@ -418,7 +426,7 @@ SEQAN_HOST_DEVICE inline bool isSentinel(LF<StringSet<TText, TSSetSpec>, TSpec,
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TSpec, typename TConfig, typename TValue>
-SEQAN_HOST_DEVICE inline
+inline
 typename Size<LF<TText, TSpec, TConfig> const>::Type
 _getPrefixSum(LF<TText, TSpec, TConfig> const & lf, TValue val)
 {
@@ -433,24 +441,28 @@ _getPrefixSum(LF<TText, TSpec, TConfig> const & lf, TValue val)
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TSpec, typename TConfig, typename TPos, typename TValue>
-SEQAN_HOST_DEVICE inline
-typename Size<LF<TText, TSpec, TConfig> >::Type
-_getBwtRank(LF<TText, TSpec, TConfig> const & lf, TPos pos, TValue val)
+inline typename Size<LF<TText, TSpec, TConfig> >::Type
+_getCumulativeBwtRank(LF<TText, TSpec, TConfig> const & lf, TPos pos, TValue val, TPos & smaller)
 {
     typedef LF<TText, TSpec, TConfig> const                TLF;
     typedef typename Size<TLF>::Type                       TSize;
 
-    TSize rank = _getPrefixSum(lf, val);
+    TSize ret = _getPrefixSum(lf, val);
 
     if (pos > 0)
     {
-        rank += getRank(lf.bwt, pos - 1, val);
+        ret += getRank(lf.bwt, pos - 1, val, smaller);
 
-        if (ordEqual(lf.sentinelSubstitute, val))
-            rank -= _getSentinelsRank(lf, pos - 1);
+        if (!ordLess(lf.sentinelSubstitute, val)) // lf.sentinelSubstitute >= val
+        {
+            TPos senti = _getSentinelsRank(lf, pos - 1);
+            smaller += senti;
+            if (ordEqual(lf.sentinelSubstitute, val))
+                ret -= senti;
+        }
     }
 
-    return rank;
+    return ret;
 }
 
 // ----------------------------------------------------------------------------
@@ -458,13 +470,34 @@ _getBwtRank(LF<TText, TSpec, TConfig> const & lf, TPos pos, TValue val)
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline
+inline
 typename Size<LF<TText, TSpec, TConfig> const>::Type
 _getBwtRank(LF<TText, TSpec, TConfig> const & lf, TPos pos)
 {
     return _getBwtRank(lf, pos, getValue(lf.bwt, pos));
 }
 
+template <typename TText, typename TSpec, typename TConfig, typename TPos, typename TValue>
+inline
+typename Size<LF<TText, TSpec, TConfig> >::Type
+_getBwtRank(LF<TText, TSpec, TConfig> const & lf, TPos pos, TValue val)
+{
+    typedef LF<TText, TSpec, TConfig> const                TLF;
+    typedef typename Size<TLF>::Type                       TSize;
+
+    TSize rank = _getPrefixSum(lf, val);
+
+    if (pos > 0)
+    {
+        rank += getRank(lf.bwt, pos - 1, val);
+
+        if (ordEqual(lf.sentinelSubstitute, val))
+            rank -= _getSentinelsRank(lf, pos - 1);
+    }
+
+    return rank;
+}
+
 // ----------------------------------------------------------------------------
 // Function _setSentinelSubstitute()
 // ----------------------------------------------------------------------------
@@ -558,8 +591,11 @@ _createBwt(LF<StringSet<TText, TSSetSpec>, TSpec, TConfig> & lf, TBwt & bwt, TOt
     // Fill the sentinel positions (they are all at the beginning of the bwt).
     for (TSize i = 1; i <= seqNum; ++i, ++bwtIt)
     {
-        assignValue(bwtIt, back(text[seqNum - i]));
-        setValue(lf.sentinels, bwtIt - bwtItBeg, false);
+        if (length(text[seqNum - i]) > 0)
+        {
+            assignValue(bwtIt, back(text[seqNum - i]));
+            setValue(lf.sentinels, bwtIt - bwtItBeg, false);
+        }
     }
 
     // Compute the rest of the bwt.
diff --git a/include/seqan/index/index_fm_rank_dictionary_base.h b/include/seqan/index/index_fm_rank_dictionary_base.h
index 80ff7cb..2548549 100644
--- a/include/seqan/index/index_fm_rank_dictionary_base.h
+++ b/include/seqan/index/index_fm_rank_dictionary_base.h
@@ -57,19 +57,31 @@ namespace seqan {
  */
 
 struct FibreRanks_;
+typedef Tag<FibreRanks_> const FibreRanks;
 
-typedef Tag<FibreRanks_>
-const FibreRanks;
+struct FibreSuperBlocks_;
+typedef Tag<FibreSuperBlocks_> const FibreSuperBlocks;
+
+struct FibreUltraBlocks_;
+typedef Tag<FibreUltraBlocks_> const FibreUltraBlocks;
 
 // ----------------------------------------------------------------------------
 // Tag RDConfig
 // ----------------------------------------------------------------------------
 
-template <typename TSize = size_t, typename TFibre = Alloc<> >
+template <
+    typename TSize = size_t,
+    typename TFibre = Alloc<>,
+    unsigned LEVELS_ = 1,
+    unsigned WORDS_PER_BLOCK_ = 1
+>
 struct RDConfig
 {
-    typedef TFibre  Fibre;
     typedef TSize   Size;
+    typedef TFibre  Fibre;
+
+    static const unsigned WORDS_PER_BLOCK = WORDS_PER_BLOCK_;
+    static const unsigned LEVELS          = LEVELS_;
 };
 
 // ============================================================================
@@ -155,14 +167,14 @@ struct Value<RankDictionary<TValue, TSpec> const> :
 
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Fibre<RankDictionary<TValue, TSpec>, FibreRanks>::Type &
+inline typename Fibre<RankDictionary<TValue, TSpec>, FibreRanks>::Type &
 getFibre(RankDictionary<TValue, TSpec> & dict, FibreRanks)
 {
     return dict.ranks;
 }
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Fibre<RankDictionary<TValue, TSpec>, FibreRanks>::Type const &
+inline typename Fibre<RankDictionary<TValue, TSpec>, FibreRanks>::Type const &
 getFibre(RankDictionary<TValue, TSpec> const & dict, FibreRanks)
 {
     return dict.ranks;
@@ -205,7 +217,7 @@ inline void clear(RankDictionary<TValue, TSpec> & dict)
  */
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline bool empty(RankDictionary<TValue, TSpec> const & dict)
+inline bool empty(RankDictionary<TValue, TSpec> const & dict)
 {
     return empty(getFibre(dict, FibreRanks()));
 }
diff --git a/include/seqan/index/index_fm_rank_dictionary_levels.h b/include/seqan/index/index_fm_rank_dictionary_levels.h
index 620806a..1d43e79 100644
--- a/include/seqan/index/index_fm_rank_dictionary_levels.h
+++ b/include/seqan/index/index_fm_rank_dictionary_levels.h
@@ -30,6 +30,7 @@
 //
 // ==========================================================================
 // Author: Enrico Siragusa <enrico.siragusa at fu-berlin.de>
+//       & Christopher Pockrandt <christopher.pockrandt at fu-berlin.de>
 // ==========================================================================
 
 #ifndef INDEX_FM_RANK_DICTIONARY_LEVELS_H_
@@ -42,13 +43,6 @@ namespace seqan {
 // ============================================================================
 
 // ----------------------------------------------------------------------------
-// Metafunction RankDictionaryBitMask_
-// ----------------------------------------------------------------------------
-
-template <typename TValue, typename TSpec = void>
-struct RankDictionaryBitMask_;
-
-// ----------------------------------------------------------------------------
 // Metafunction RankDictionaryWordSize_
 // ----------------------------------------------------------------------------
 
@@ -70,6 +64,27 @@ template <typename TValue, typename TSpec>
 struct RankDictionaryBlock_;
 
 // ----------------------------------------------------------------------------
+// Metafunction RankDictionarySuperBlock_
+// ----------------------------------------------------------------------------
+
+template <typename TValue, typename TSpec>
+struct RankDictionarySuperBlock_;
+
+// ----------------------------------------------------------------------------
+// Metafunction RankDictionaryUltraBlock_
+// ----------------------------------------------------------------------------
+
+template <typename TValue, typename TSpec>
+struct RankDictionaryUltraBlock_;
+
+// ----------------------------------------------------------------------------
+// Metafunction RankDictionaryBitString_
+// ----------------------------------------------------------------------------
+
+template <typename TValue, typename TSpec>
+struct RankDictionaryBitString_;
+
+// ----------------------------------------------------------------------------
 // Metafunction RankDictionaryValues_
 // ----------------------------------------------------------------------------
 
@@ -91,11 +106,11 @@ struct RankDictionaryEntry_;
 // Tag LevelsRDConfig
 // ----------------------------------------------------------------------------
 
-template <typename TSize = size_t, typename TFibre = Alloc<>, unsigned LEVELS_ = 1>
-struct LevelsRDConfig : RDConfig<TSize, TFibre>
-{
-    static const unsigned LEVELS =  LEVELS_;
-};
+template <typename TSize = size_t, typename TFibre = Alloc<>, unsigned LEVELS_ = 1, unsigned WORDS_PER_BLOCK_ = 1>
+struct LevelsRDConfig : RDConfig<TSize, TFibre, LEVELS_, WORDS_PER_BLOCK_> {};
+
+template <typename TSize = size_t, typename TFibre = Alloc<>, unsigned LEVELS_ = 1, unsigned WORDS_PER_BLOCK_ = 1>
+struct LevelsPrefixRDConfig : RDConfig<TSize, TFibre, LEVELS_, WORDS_PER_BLOCK_> {};
 
 // ----------------------------------------------------------------------------
 // Tag Levels
@@ -109,47 +124,112 @@ struct Levels {};
 // ============================================================================
 
 // ----------------------------------------------------------------------------
-// Metafunction RankDictionaryBitMask_
+// Metafunction RankDictionaryWordSize_
 // ----------------------------------------------------------------------------
 
-template <typename TSpec>
-struct RankDictionaryBitMask_<uint32_t, TSpec>
+template <typename TValue, typename TSpec, typename TConfig>
+struct RankDictionaryWordSize_<TValue, Levels<TSpec, TConfig> > : BitsPerValue<uint64_t>
 {
-    static const uint32_t VALUE = 0x55555555;
+    typedef uint64_t Type;
 };
 
-template <typename TSpec>
-struct RankDictionaryBitMask_<uint64_t, TSpec>
+// ----------------------------------------------------------------------------
+// Metafunction RankDictionaryBitsPerBlock_
+// ----------------------------------------------------------------------------
+// The number of bits per block equals the number of bits of the block summary.
+
+template <typename TValue, typename TSpec, typename TConfig>
+struct RankDictionaryBitsPerBlock_<TValue, Levels<TSpec, TConfig> > :
+    BitsPerValue<typename RankDictionaryBlock_<TValue, Levels<TSpec, TConfig> >::Type> {};
+
+// ----------------------------------------------------------------------------
+// Metafunction Size
+// ----------------------------------------------------------------------------
+
+template <typename TValue, typename TSpec, typename TConfig>
+struct Size<RankDictionary<TValue, Levels<TSpec, TConfig> > >
 {
-    static const uint64_t VALUE = 0x5555555555555555ull;
+    typedef typename Size<TConfig>::Type Type;
 };
 
 // ----------------------------------------------------------------------------
-// Metafunction RankDictionaryWordSize_
+// Metafunction RankDictionaryBitString_
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TConfig>
-struct RankDictionaryWordSize_<TValue, Levels<TSpec, TConfig> > :
-    BitsPerValue<uint64_t> {};
+struct RankDictionaryBitString_<TValue, Levels<TSpec, TConfig> >
+{
+    typedef BitPacked<> Type;
+};
 
-// NOTE(esiragusa): This is required on CUDA devices.
-//template <typename TValue, typename TSpec, typename TConfig>
-//struct RankDictionaryWordSize_<TValue, Levels<TSpec, TConfig> > :
-//    BitsPerValue<uint32_t> {};
+template <typename TValue, typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB>
+struct RankDictionaryBitString_<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > >
+{
+    typedef BitPacked<16, 16, PlusOne> Type;
+};
+
+template <typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB>
+struct RankDictionaryBitString_<bool, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > >
+{
+    typedef BitPacked<> Type;
+};
 
 // ----------------------------------------------------------------------------
-// Metafunction RankDictionaryBitsPerBlock_
+// Metafunction RankDictionaryValues_
 // ----------------------------------------------------------------------------
-// The number of bits per block equals the number of bits of the block summary.
 
 template <typename TValue, typename TSpec, typename TConfig>
-struct RankDictionaryBitsPerBlock_<TValue, Levels<TSpec, TConfig> > :
-    BitsPerValue<typename RankDictionaryBlock_<TValue, Levels<TSpec, TConfig> >::Type> {};
+struct RankDictionaryValues_<TValue, Levels<TSpec, TConfig> >
+{
+    typedef RankDictionary<TValue, Levels<TSpec, TConfig> >                             TRankDictionary_;
+    typedef typename RankDictionaryBitString_<TValue, Levels<TSpec, TConfig> >::Type    TBitString_;
 
-// NOTE(esiragusa): This lets a Dna block to have the size of one word - one popcount per block.
-//template <typename TSpec, typename TConfig>
-//struct RankDictionaryBitsPerBlock_<Dna, Levels<TSpec, TConfig> > :
-//    RankDictionaryWordSize_<Dna, Levels<TSpec, TConfig> > {};
+    typedef Tuple<TValue, TRankDictionary_::_VALUES_PER_WORD, TBitString_>              TValues;
+    typedef typename TValues::TBitVector                                                TWord;
+    typedef Tuple<TValues, TRankDictionary_::_WORDS_PER_BLOCK>                          Type;
+};
+
+// ----------------------------------------------------------------------------
+// Metafunction RankDictionaryValueWithBits_
+// ----------------------------------------------------------------------------
+
+template <unsigned BITS>
+struct RankDictionaryValueWithBits_ {};
+
+template <>
+struct RankDictionaryValueWithBits_<64>
+{
+    typedef uint64_t Type;
+};
+
+template <>
+struct RankDictionaryValueWithBits_<32>
+{
+    typedef uint32_t Type;
+};
+
+template <>
+struct RankDictionaryValueWithBits_<16>
+{
+    typedef uint16_t Type;
+};
+
+template <>
+struct RankDictionaryValueWithBits_<8>
+{
+    typedef uint8_t Type;
+};
+
+// ----------------------------------------------------------------------------
+// Metafunction RankDictionaryBlockType_
+// ----------------------------------------------------------------------------
+
+template <typename TSize, unsigned LEVELS, unsigned LEVEL>
+struct RankDictionaryBlockType_
+{
+    static const unsigned shift = Max<LEVEL, LEVELS>::VALUE - Min<LEVEL, LEVELS>::VALUE;
+    typedef typename RankDictionaryValueWithBits_<BitsPerValue<TSize>::VALUE/(1 << shift)>::Type Type;
+};
 
 // ----------------------------------------------------------------------------
 // Metafunction RankDictionaryBlock_
@@ -158,32 +238,48 @@ struct RankDictionaryBitsPerBlock_<TValue, Levels<TSpec, TConfig> > :
 template <typename TValue, typename TSpec, typename TConfig>
 struct RankDictionaryBlock_<TValue, Levels<TSpec, TConfig> >
 {
-    typedef RankDictionary<TValue, Levels<TSpec, TConfig> >         TRankDictionary_;
-    typedef typename Size<TRankDictionary_>::Type                   TSize_;
-
-    typedef Tuple<TSize_, ValueSize<TValue>::VALUE>                 Type;
+    typedef typename RankDictionaryBlockType_<typename TConfig::Size, TConfig::LEVELS, 1>::Type   TSize_;
+    typedef Tuple<TSize_, ValueSize<TValue>::VALUE>     Type;
 };
 
 template <typename TSpec, typename TConfig>
 struct RankDictionaryBlock_<bool, Levels<TSpec, TConfig> >
 {
-    typedef RankDictionary<bool, Levels<TSpec, TConfig> >           TRankDictionary_;
+    typedef typename RankDictionaryBlockType_<typename TConfig::Size, TConfig::LEVELS, 1>::Type   Type;
+};
 
-    typedef typename Size<TRankDictionary_>::Type                   Type;
+// ----------------------------------------------------------------------------
+// Metafunction RankDictionarySuperBlock_
+// ----------------------------------------------------------------------------
+
+template <typename TValue, typename TSpec, typename TConfig>
+struct RankDictionarySuperBlock_<TValue, Levels<TSpec, TConfig> >
+{
+    typedef typename RankDictionaryBlockType_<typename TConfig::Size, TConfig::LEVELS, 2>::Type   TSize_;
+    typedef Tuple<TSize_, ValueSize<TValue>::VALUE>     Type;
+};
+
+template <typename TSpec, typename TConfig>
+struct RankDictionarySuperBlock_<bool, Levels<TSpec, TConfig> >
+{
+    typedef typename RankDictionaryBlockType_<typename TConfig::Size, TConfig::LEVELS, 2>::Type   Type;
 };
 
 // ----------------------------------------------------------------------------
-// Metafunction RankDictionaryValues_
+// Metafunction RankDictionaryUltraBlock_
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TConfig>
-struct RankDictionaryValues_<TValue, Levels<TSpec, TConfig> >
+struct RankDictionaryUltraBlock_<TValue, Levels<TSpec, TConfig> >
 {
-    typedef RankDictionary<TValue, Levels<TSpec, TConfig> >                 TRankDictionary_;
+    typedef typename RankDictionaryBlockType_<typename TConfig::Size, TConfig::LEVELS, 3>::Type   TSize_;
+    typedef Tuple<TSize_, ValueSize<TValue>::VALUE>     Type;
+};
 
-    typedef Tuple<TValue, TRankDictionary_::_VALUES_PER_WORD, BitPacked<> > TValues;
-    typedef typename TValues::TBitVector                                    TWord;
-    typedef Tuple<TValues, TRankDictionary_::_WORDS_PER_BLOCK>              Type;
+template <typename TSpec, typename TConfig>
+struct RankDictionaryUltraBlock_<bool, Levels<TSpec, TConfig> >
+{
+    typedef typename RankDictionaryBlockType_<typename TConfig::Size, TConfig::LEVELS, 3>::Type   Type;
 };
 
 // ----------------------------------------------------------------------------
@@ -200,6 +296,26 @@ struct Fibre<RankDictionary<TValue, Levels<TSpec, TConfig> >, FibreRanks>
     typedef String<TEntry_, TFibreSpec_>                            Type;
 };
 
+template <typename TValue, typename TSpec, typename TConfig>
+struct Fibre<RankDictionary<TValue, Levels<TSpec, TConfig> >, FibreSuperBlocks>
+{
+    typedef RankDictionary<TValue, Levels<TSpec, TConfig> >                             TRankDictionary_;
+    typedef typename RankDictionarySuperBlock_<TValue, Levels<TSpec, TConfig> >::Type   TSuperBlocks_;
+    typedef typename DefaultIndexStringSpec<TRankDictionary_>::Type                     TFibreSpec_;
+
+    typedef String<TSuperBlocks_, TFibreSpec_>                                          Type;
+};
+
+template <typename TValue, typename TSpec, typename TConfig>
+struct Fibre<RankDictionary<TValue, Levels<TSpec, TConfig> >, FibreUltraBlocks>
+{
+    typedef RankDictionary<TValue, Levels<TSpec, TConfig> >                             TRankDictionary_;
+    typedef typename RankDictionaryUltraBlock_<TValue, Levels<TSpec, TConfig> >::Type   TUltraBlocks_;
+    typedef typename DefaultIndexStringSpec<TRankDictionary_>::Type                     TFibreSpec_;
+
+    typedef String<TUltraBlocks_, TFibreSpec_>                                          Type;
+};
+
 // ============================================================================
 // Classes
 // ============================================================================
@@ -226,6 +342,41 @@ struct RankDictionaryEntry_<TValue, Levels<TSpec, TConfig> >
 };
 
 // ----------------------------------------------------------------------------
+// Metafunction RankDictionaryBitMask_
+// ----------------------------------------------------------------------------
+
+// TODO(cpockrandt): simplify
+template <typename TWord>
+constexpr TWord _bitmask2(unsigned const bitsTotal, unsigned blocks, unsigned const constBlocks, unsigned const blocksize, TWord const value)
+{
+    return (blocks == constBlocks) ?
+           _bitmask2<TWord>(bitsTotal, blocks - 1, constBlocks, blocksize, value << (bitsTotal - blocksize)) :
+           (
+               (blocks == 0) ?
+               value >> (bitsTotal % blocksize) :
+               _bitmask2<TWord>(bitsTotal, blocks - 1, constBlocks, blocksize, value | (value >> blocksize))
+           );
+}
+
+template <typename TWord, typename TValue, typename TSpec, typename TConfig>
+constexpr TWord _bitmaskWrapper(RankDictionary<TValue, Levels<TSpec, TConfig> > & /*dict*/, unsigned const bitsTotal, unsigned blocks, unsigned const blocksize, TWord const vDefault, TWord const /*vPrefix*/)
+{
+    return _bitmask2<TWord>(bitsTotal, blocks, blocks, blocksize, vDefault);
+}
+
+template <typename TWord, typename TValue, typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB>
+constexpr TWord _bitmaskWrapper(RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > &, unsigned const bitsTotal, unsigned blocks, unsigned const blocksize, TWord const /*vDefault*/, TWord const vPrefix)
+{
+    return _bitmask2<TWord>(bitsTotal, blocks, blocks, blocksize, vPrefix);
+}
+
+template <typename TWord, typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB>
+constexpr TWord _bitmaskWrapper(RankDictionary<bool, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > &, unsigned const bitsTotal, unsigned blocks, unsigned const blocksize, TWord const vDefault, TWord const /*vPrefix*/)
+{
+    return _bitmask2<TWord>(bitsTotal, blocks, blocks, blocksize, vDefault);
+}
+
+// ----------------------------------------------------------------------------
 // Class Levels RankDictionary
 // ----------------------------------------------------------------------------
 // TODO(esiragusa): update doc
@@ -248,6 +399,24 @@ struct RankDictionaryEntry_<TValue, Levels<TSpec, TConfig> >
  * leads to constant rank dictionary look ups.
  */
 
+template <typename TValue, typename TConfig>
+struct BitsPerValue_
+{
+    static const typename BitsPerValue<TValue>::Type VALUE = BitsPerValue<TValue>::VALUE;
+};
+
+template <typename TValue, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB>
+struct BitsPerValue_<TValue, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> >
+{
+    static const typename BitsPerValue<TValue>::Type VALUE = BitsPerValue<TValue>::VALUE + 1;
+};
+
+template <typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB>
+struct BitsPerValue_<bool, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> >
+{
+    static const typename BitsPerValue<bool>::Type VALUE = BitsPerValue<bool>::VALUE;
+};
+
 template <typename TValue, typename TSpec, typename TConfig>
 struct RankDictionary<TValue, Levels<TSpec, TConfig> >
 {
@@ -255,19 +424,32 @@ struct RankDictionary<TValue, Levels<TSpec, TConfig> >
     // Constants
     // ------------------------------------------------------------------------
 
-    static const unsigned _BITS_PER_VALUE   = BitsPerValue<TValue>::VALUE;
-    static const unsigned _BITS_PER_BLOCK   = RankDictionaryBitsPerBlock_<TValue, Levels<TSpec, TConfig> >::VALUE;
+    static const unsigned _BITS_PER_VALUE   = BitsPerValue_<TValue, TConfig>::VALUE;
+    static const unsigned _BITS_PER_BLOCK   = (TConfig::WORDS_PER_BLOCK == 0 ? BitsPerValue<typename RankDictionaryBlock_<TValue, Levels<TSpec, TConfig> >::Type>::VALUE : RankDictionaryWordSize_<TValue, Levels<TSpec, TConfig> >::VALUE * TConfig::WORDS_PER_BLOCK);
     static const unsigned _BITS_PER_WORD    = Min<RankDictionaryWordSize_<TValue, Levels<TSpec, TConfig> >::VALUE, _BITS_PER_BLOCK>::VALUE;
-    static const unsigned _VALUES_PER_WORD  = _BITS_PER_WORD  / _BITS_PER_VALUE;
-    static const unsigned _VALUES_PER_BLOCK = _BITS_PER_BLOCK / _BITS_PER_VALUE;
+    static const unsigned _VALUES_PER_WORD  = _BITS_PER_WORD / _BITS_PER_VALUE;
     static const unsigned _WORDS_PER_BLOCK  = _BITS_PER_BLOCK / _BITS_PER_WORD;
+    static const unsigned _VALUES_PER_BLOCK = _VALUES_PER_WORD * _WORDS_PER_BLOCK;
+    static const uint64_t _VALUES_PER_SUPERBLOCK = Max<1, (((1ull << (BitsPerValue<typename RankDictionaryBlockType_<typename TConfig::Size, TConfig::LEVELS, 2>::Type>::VALUE/2)) - 1) / _VALUES_PER_BLOCK) * _VALUES_PER_BLOCK>::VALUE; // 2^x - 1 values
+    static const uint64_t _VALUES_PER_ULTRABLOCK = Max<1, (((1ull << (BitsPerValue<typename RankDictionaryBlockType_<typename TConfig::Size, TConfig::LEVELS, 3>::Type>::VALUE/2)) - 1) / Max<_VALUES_PER_SUPERBLOCK, 1>::VALUE) * _VALUES_PER_SUPERBLOCK>::VALUE; // MAX: workaround for intel & clang: division is not constexpr since divisor could be 0
+
+    typedef typename RankDictionaryBlockType_<typename TConfig::Size, TConfig::LEVELS, 1>::Type   Type;
+    static_assert(BitsPerValue<typename RankDictionaryBlockType_<typename TConfig::Size, TConfig::LEVELS, 1>::Type>::VALUE >= LogN<_VALUES_PER_BLOCK + 1, 2>::VALUE,
+        "The datatype of the lowest level has to be larger or the number of words per block smaller. See the online documentation for more information.");
+
+    typedef typename RankDictionaryWordSize_<TValue, Levels<TSpec, TConfig> >::Type TWordType;
+
+    static TWordType _CHAR_BITMASKS[ValueSize<TValue>::VALUE]; // filter by character
+    static TWordType _TRUNC_BITMASKS[_VALUES_PER_WORD]; // truncate the last values in a word that shell not be counted
 
     // ------------------------------------------------------------------------
     // Fibres
     // ------------------------------------------------------------------------
 
-    typename Fibre<RankDictionary, FibreRanks>::Type    ranks;
-    typename Size<RankDictionary>::Type                 _length;
+    typename Fibre<RankDictionary, FibreUltraBlocks>::Type  ultrablocks;
+    typename Fibre<RankDictionary, FibreSuperBlocks>::Type  superblocks;
+    typename Fibre<RankDictionary, FibreRanks>::Type        blocks;
+    typename Size<RankDictionary>::Type                     _length;
     // TODO(esiragusa): open/save _length or remove it.
 
     // ------------------------------------------------------------------------
@@ -276,128 +458,114 @@ struct RankDictionary<TValue, Levels<TSpec, TConfig> >
 
     RankDictionary() :
         _length(0)
-    {}
+    {
+        // TODO(cpockrandt): no code duplication. make it a const-expr?
+        static const unsigned maxValue = (1 << _BITS_PER_VALUE) - 1;
+        for (unsigned i = 0; i < ValueSize<TValue>::VALUE; ++i)
+            _CHAR_BITMASKS[i] = _bitmaskWrapper<TWordType>(*this, _BITS_PER_WORD, _VALUES_PER_WORD, _BITS_PER_VALUE, maxValue-i, i + (1 << (_BITS_PER_VALUE-1)));
+        for (unsigned i = 0; i < _VALUES_PER_WORD; ++i)
+            _TRUNC_BITMASKS[i] = _bitmaskWrapper<TWordType>(*this, _BITS_PER_WORD, i+1, _BITS_PER_VALUE, 1, 1 << (_BITS_PER_VALUE-1));
+    }
 
     template <typename TText>
     RankDictionary(TText const & text) :
         _length(0)
     {
+        static const unsigned maxValue = (1 << _BITS_PER_VALUE) - 1;
+        for (unsigned i = 0; i < ValueSize<TValue>::VALUE; ++i)
+            _CHAR_BITMASKS[i] = _bitmaskWrapper<TWordType>(*this, _BITS_PER_WORD, _VALUES_PER_WORD, _BITS_PER_VALUE, maxValue-i, i + (1 << (_BITS_PER_VALUE-1)));
+        for (unsigned i = 0; i < _VALUES_PER_WORD; ++i)
+            _TRUNC_BITMASKS[i] = _bitmaskWrapper<TWordType>(*this, _BITS_PER_WORD, i+1, _BITS_PER_VALUE, 1, 1 << (_BITS_PER_VALUE-1));
+
         createRankDictionary(*this, text);
     }
 };
 
+template <typename TValue, typename TSpec, typename TConfig>
+typename RankDictionary<TValue, Levels<TSpec, TConfig> >::TWordType RankDictionary<TValue, Levels<TSpec, TConfig> >::_CHAR_BITMASKS[ValueSize<TValue>::VALUE];
+
+template <typename TValue, typename TSpec, typename TConfig>
+typename RankDictionary<TValue, Levels<TSpec, TConfig> >::TWordType RankDictionary<TValue, Levels<TSpec, TConfig> >::_TRUNC_BITMASKS[RankDictionary<TValue, Levels<TSpec, TConfig> >::_VALUES_PER_WORD];
+
 // ============================================================================
 // Functions
 // ============================================================================
 
 // ----------------------------------------------------------------------------
-// Function loadAndCache()
+// Function getFibre()
 // ----------------------------------------------------------------------------
-// TODO(esiragusa): move loadAndCache() in misc_cuda.h
 
-template <typename TValue>
-SEQAN_HOST_DEVICE inline TValue
-loadAndCache(TValue const & value)
+template <typename TValue, typename TSpec, typename TConfig>
+inline typename Fibre<RankDictionary<TValue, Levels<TSpec, TConfig> >, FibreRanks>::Type &
+getFibre(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, FibreRanks)
 {
-#if __CUDA_ARCH__ >= 350
-    return __ldg(&value);
-#else
-    return value;
-#endif
+    return dict.blocks;
 }
 
-// ----------------------------------------------------------------------------
-// Function loadAndCache()                                              [Tuple]
-// ----------------------------------------------------------------------------
-// TODO(esiragusa): move loadAndCache() in misc_cuda.h
+template <typename TValue, typename TSpec, typename TConfig>
+inline typename Fibre<RankDictionary<TValue, Levels<TSpec, TConfig> >, FibreRanks>::Type const &
+getFibre(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, FibreRanks)
+{
+    return dict.blocks;
+}
+
+template <typename TValue, typename TSpec, typename TConfig>
+inline typename Fibre<RankDictionary<TValue, Levels<TSpec, TConfig> >, FibreSuperBlocks>::Type &
+getFibre(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, FibreSuperBlocks)
+{
+    return dict.superblocks;
+}
 
-template <typename TValue, unsigned SIZE, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline Tuple<TValue, SIZE, TSpec>
-loadAndCache(Tuple<TValue, SIZE, TSpec> const & tuple)
+template <typename TValue, typename TSpec, typename TConfig>
+inline typename Fibre<RankDictionary<TValue, Levels<TSpec, TConfig> >, FibreSuperBlocks>::Type const &
+getFibre(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, FibreSuperBlocks)
 {
-#if __CUDA_ARCH__ >= 350
-    typedef Tuple<TValue, SIZE, TSpec>  TTuple;
+    return dict.superblocks;
+}
 
-    const unsigned UINTS = BytesPerValue<TTuple>::VALUE / 4;
+template <typename TValue, typename TSpec, typename TConfig>
+inline typename Fibre<RankDictionary<TValue, Levels<TSpec, TConfig> >, FibreUltraBlocks>::Type &
+getFibre(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, FibreUltraBlocks)
+{
+    return dict.ultrablocks;
+}
 
-    union { TTuple x; uint4 y[UINTS]; } tmp;
+template <typename TValue, typename TSpec, typename TConfig>
+inline typename Fibre<RankDictionary<TValue, Levels<TSpec, TConfig> >, FibreUltraBlocks>::Type const &
+getFibre(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, FibreUltraBlocks)
+{
+    return dict.ultrablocks;
+}
 
-    for (unsigned u = 0; u < UINTS; ++u)
-        tmp.y[u] = __ldg(reinterpret_cast<uint4 const *>(&tuple) + u);
+// ----------------------------------------------------------------------------
+// Function empty()
+// ----------------------------------------------------------------------------
 
-    return tmp.x;
-#else
-    return tuple;
-#endif
+template <typename TValue, typename TSpec, typename TConfig>
+inline bool empty(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict)
+{
+    return empty(getFibre(dict, FibreRanks())) && empty(getFibre(dict, FibreSuperBlocks())) && empty(getFibre(dict, FibreUltraBlocks()));
 }
 
 // ----------------------------------------------------------------------------
-// Function loadAndCache()                               [RankDictionaryEntry_]
+// Function clear()
 // ----------------------------------------------------------------------------
-//
-//template <typename TValue, typename TSpec, typename TConfig>
-//SEQAN_HOST_DEVICE inline RankDictionaryEntry_<TValue, Levels<TSpec, TConfig> >
-//loadAndCache(RankDictionaryEntry_<TValue, Levels<TSpec, TConfig> > const & entry)
-//{
-//#if __CUDA_ARCH__ >= 350
-//    typedef RankDictionaryEntry_<TValue, Levels<TSpec, TConfig> >   TEntry;
-//
-//    const unsigned UINTS = BytesPerValue<TEntry>::VALUE / 4;
-//
-//    union { TEntry x; uint4 y[UINTS]; } tmp;
-//
-//    for (unsigned u = 0; u < UINTS; ++u)
-//        tmp.y[u] = __ldg(reinterpret_cast<uint4 const *>(&entry) + u);
-//
-//    return tmp.x;
-//#else
-//    return entry;
-//#endif
-//}
-
-//template <unsigned SIZE, typename TSpec, typename TConfig>
-//SEQAN_HOST_DEVICE inline Tuple<Tuple<Dna, SIZE, BitPacked<> >, 4, TSpec>
-//loadAndCache(Tuple<Tuple<Dna, SIZE, BitPacked<> >, 4, TSpec> const & values)
-//{
-//#if __CUDA_ARCH__ >= 350
-//    Tuple<Tuple<Dna, SIZE, BitPacked<> >, 4, TSpec> tmp;
-//
-//    uint4 t = __ldg((uint4 *)values.i);
-//    tmp.i[0].i = t.x;
-//    tmp.i[1].i = t.y;
-//    tmp.i[2].i = t.z;
-//    tmp.i[3].i = t.w;
-//
-//    return tmp;
-//#else
-//    return values;
-//#endif
-//}
-
-//template <unsigned SIZE, typename TSpec, typename TConfig>
-//SEQAN_HOST_DEVICE inline Tuple<Tuple<bool, SIZE, BitPacked<> >, 1, TSpec>
-//loadAndCache(Tuple<Tuple<bool, SIZE, BitPacked<> >, 1, TSpec> const & values)
-//{
-//#if __CUDA_ARCH__ >= 350
-//    Tuple<Tuple<bool, SIZE, BitPacked<> >, 1, TSpec> tmp;
-//
-//    uint2 t = __ldg((uint2 *)values.i);
-//    tmp.i[0].i = t.x;
-//    tmp.i[1].i = t.y;
-//
-//    return tmp;
-//#else
-//    return values;
-//#endif
-//}
+
+template <typename TValue, typename TSpec, typename TConfig>
+inline void clear(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict)
+{
+    clear(dict.blocks);
+    clear(dict.superblocks);
+    clear(dict.ultrablocks);
+}
 
 // ----------------------------------------------------------------------------
 // Function _toPosInWord()
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > >::Type
-_toPosInWord(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TPos posInBlock)
+inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > >::Type
+_toPosInWord(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TPos const posInBlock)
 {
     return posInBlock % RankDictionary<TValue, Levels<TSpec, TConfig> >::_VALUES_PER_WORD;
 }
@@ -407,8 +575,8 @@ _toPosInWord(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */,
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > >::Type
-_toWordPos(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TPos posInBlock)
+inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > >::Type
+_toWordPos(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TPos const posInBlock)
 {
     return posInBlock / RankDictionary<TValue, Levels<TSpec, TConfig> >::_VALUES_PER_WORD;
 }
@@ -418,30 +586,74 @@ _toWordPos(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, T
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > >::Type
-_toPosInBlock(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TPos pos)
+inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > >::Type
+_toPosInBlock(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TPos const pos)
 {
     return pos % RankDictionary<TValue, Levels<TSpec, TConfig> >::_VALUES_PER_BLOCK;
 }
 
 // ----------------------------------------------------------------------------
+// Function _toPosInSuperBlock()
+// ----------------------------------------------------------------------------
+
+template <typename TValue, typename TSpec, typename TConfig, typename TPos>
+inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > >::Type
+_toPosInSuperBlock(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TPos const pos)
+{
+    return pos % RankDictionary<TValue, Levels<TSpec, TConfig> >::_VALUES_PER_SUPERBLOCK;
+}
+
+// ----------------------------------------------------------------------------
+// Function _toPosInUltraBlock()
+// ----------------------------------------------------------------------------
+
+template <typename TValue, typename TSpec, typename TConfig, typename TPos>
+inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > >::Type
+_toPosInUltraBlock(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TPos const pos)
+{
+    return pos % RankDictionary<TValue, Levels<TSpec, TConfig> >::_VALUES_PER_ULTRABLOCK;
+}
+
+// ----------------------------------------------------------------------------
 // Function _toBlockPos()
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > >::Type
-_toBlockPos(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TPos pos)
+inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > >::Type
+_toBlockPos(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TPos const pos)
 {
     return pos / RankDictionary<TValue, Levels<TSpec, TConfig> >::_VALUES_PER_BLOCK;
 }
 
 // ----------------------------------------------------------------------------
+// Function _toSuperBlockPos()
+// ----------------------------------------------------------------------------
+
+template <typename TValue, typename TSpec, typename TConfig, typename TPos>
+inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > >::Type
+_toSuperBlockPos(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TPos const pos)
+{
+    return pos / RankDictionary<TValue, Levels<TSpec, TConfig> >::_VALUES_PER_SUPERBLOCK;
+}
+
+// ----------------------------------------------------------------------------
+// Function _toUltraBlockPos()
+// ----------------------------------------------------------------------------
+
+template <typename TValue, typename TSpec, typename TConfig, typename TPos>
+inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > >::Type
+_toUltraBlockPos(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TPos const pos)
+{
+    return pos / RankDictionary<TValue, Levels<TSpec, TConfig> >::_VALUES_PER_ULTRABLOCK;
+}
+
+// ----------------------------------------------------------------------------
 // Function _toPos()
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TConfig, typename TBlockPos>
 inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > >::Type
-_toPos(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TBlockPos blockPos)
+_toPos(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TBlockPos const blockPos)
 {
     return blockPos * RankDictionary<TValue, Levels<TSpec, TConfig> >::_VALUES_PER_BLOCK;
 }
@@ -451,17 +663,17 @@ _toPos(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TBloc
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TConfig, typename TBlockPos, typename TWordPos>
-SEQAN_HOST_DEVICE inline typename RankDictionaryValues_<TValue, Levels<TSpec, TConfig> >::TValues &
-_valuesAt(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TBlockPos blockPos, TWordPos wordPos)
+inline typename RankDictionaryValues_<TValue, Levels<TSpec, TConfig> >::TValues &
+_valuesAt(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TBlockPos const blockPos, TWordPos const wordPos)
 {
-    return dict.ranks[blockPos].values[wordPos];
+    return dict.blocks[blockPos].values[wordPos];
 }
 
 template <typename TValue, typename TSpec, typename TConfig, typename TBlockPos, typename TWordPos>
-SEQAN_HOST_DEVICE inline typename RankDictionaryValues_<TValue, Levels<TSpec, TConfig> >::TValues const &
-_valuesAt(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TBlockPos blockPos, TWordPos wordPos)
+inline typename RankDictionaryValues_<TValue, Levels<TSpec, TConfig> >::TValues const &
+_valuesAt(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TBlockPos const blockPos, TWordPos const wordPos)
 {
-    return dict.ranks[blockPos].values[wordPos];
+    return dict.blocks[blockPos].values[wordPos];
 }
 
 // ----------------------------------------------------------------------------
@@ -469,17 +681,17 @@ _valuesAt(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TBlockPo
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline typename RankDictionaryValues_<TValue, Levels<TSpec, TConfig> >::Type &
-_valuesAt(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TPos pos)
+inline typename RankDictionaryValues_<TValue, Levels<TSpec, TConfig> >::Type &
+_valuesAt(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TPos const pos)
 {
-    return dict.ranks[_toBlockPos(dict, pos)].values;
+    return dict.blocks[_toBlockPos(dict, pos)].values;
 }
 
 template <typename TValue, typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline typename RankDictionaryValues_<TValue, Levels<TSpec, TConfig> >::Type const &
-_valuesAt(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TPos pos)
+inline typename RankDictionaryValues_<TValue, Levels<TSpec, TConfig> >::Type const &
+_valuesAt(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TPos const pos)
 {
-    return dict.ranks[_toBlockPos(dict, pos)].values;
+    return dict.blocks[_toBlockPos(dict, pos)].values;
 }
 
 // ----------------------------------------------------------------------------
@@ -487,24 +699,59 @@ _valuesAt(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TPos pos
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline typename RankDictionaryBlock_<TValue, Levels<TSpec, TConfig> >::Type &
-_blockAt(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TPos pos)
+inline typename RankDictionaryBlock_<TValue, Levels<TSpec, TConfig> >::Type &
+_blockAt(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TPos const pos)
 {
-    return dict.ranks[_toBlockPos(dict, pos)].block;
+    return dict.blocks[_toBlockPos(dict, pos)].block;
 }
 
 template <typename TValue, typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline typename RankDictionaryBlock_<TValue, Levels<TSpec, TConfig> >::Type const &
-_blockAt(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TPos pos)
+inline typename RankDictionaryBlock_<TValue, Levels<TSpec, TConfig> >::Type const &
+_blockAt(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TPos const pos)
 {
-    return dict.ranks[_toBlockPos(dict, pos)].block;
+    return dict.blocks[_toBlockPos(dict, pos)].block;
+}
+
+// ----------------------------------------------------------------------------
+// Function _superBlockAt()
+// ----------------------------------------------------------------------------
+
+template <typename TValue, typename TSpec, typename TConfig, typename TPos>
+inline typename RankDictionarySuperBlock_<TValue, Levels<TSpec, TConfig> >::Type &
+_superBlockAt(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TPos const pos)
+{
+    return dict.superblocks[_toSuperBlockPos(dict, pos)];
+}
+
+template <typename TValue, typename TSpec, typename TConfig, typename TPos>
+inline typename RankDictionarySuperBlock_<TValue, Levels<TSpec, TConfig> >::Type const &
+_superBlockAt(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TPos const pos)
+{
+    return dict.superblocks[_toSuperBlockPos(dict, pos)];
+}
+
+// ----------------------------------------------------------------------------
+// Function _ultraBlockAt()
+// ----------------------------------------------------------------------------
+
+template <typename TValue, typename TSpec, typename TConfig, typename TPos>
+inline typename RankDictionaryUltraBlock_<TValue, Levels<TSpec, TConfig> >::Type &
+_ultraBlockAt(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TPos const pos)
+{
+    return dict.ultrablocks[_toUltraBlockPos(dict, pos)];
+}
+
+template <typename TValue, typename TSpec, typename TConfig, typename TPos>
+inline typename RankDictionaryUltraBlock_<TValue, Levels<TSpec, TConfig> >::Type const &
+_ultraBlockAt(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TPos const pos)
+{
+    return dict.ultrablocks[_toUltraBlockPos(dict, pos)];
 }
 
 // ----------------------------------------------------------------------------
 // Function _padValues()
 // ----------------------------------------------------------------------------
 // Set values beyond length(dict) but still within the end of the ranks fibre.
-
 template <typename TValue, typename TSpec, typename TConfig>
 inline void _padValues(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict)
 {
@@ -512,7 +759,7 @@ inline void _padValues(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict)
     typedef typename Size<TRankDictionary>::Type                    TSize;
 
     TSize beginPos = length(dict);
-    TSize endPos   = length(dict.ranks) * TRankDictionary::_VALUES_PER_BLOCK;
+    TSize endPos   = length(dict.blocks) * TRankDictionary::_VALUES_PER_BLOCK;
 
     for (TSize pos = beginPos; pos < endPos; ++pos)
         setValue(dict, pos, TValue());
@@ -523,141 +770,253 @@ inline void _padValues(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict)
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TConfig, typename TPos>
-inline void _clearBlockAt(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TPos pos)
+inline void _clearBlockAt(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TPos const pos)
 {
     clear(_blockAt(dict, pos));
 }
 
+template <typename TSpec, typename TConfig, typename TPos>
+inline void _clearBlockAt(RankDictionary<bool, Levels<TSpec, TConfig> > & dict, TPos const pos)
+{
+    _blockAt(dict, pos) = 0u;
+}
+
 // ----------------------------------------------------------------------------
-// Function _clearBlockAt(bool)
+// Function _clearSuperBlockAt()
 // ----------------------------------------------------------------------------
 
+template <typename TValue, typename TSpec, typename TConfig, typename TPos>
+inline typename std::enable_if_t<TConfig::LEVELS >= 2, void>
+_clearSuperBlockAt(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TPos const pos)
+{
+    clear(_superBlockAt(dict, pos));
+}
+
 template <typename TSpec, typename TConfig, typename TPos>
-inline void _clearBlockAt(RankDictionary<bool, Levels<TSpec, TConfig> > & dict, TPos pos)
+inline typename std::enable_if_t<TConfig::LEVELS >= 2, void>
+_clearSuperBlockAt(RankDictionary<bool, Levels<TSpec, TConfig> > & dict, TPos const pos)
 {
-    _blockAt(dict, pos) = 0u;
+    _superBlockAt(dict, pos) = 0u;
 }
 
+template <typename TValue, typename TSpec, typename TConfig, typename TPos>
+inline typename std::enable_if_t<TConfig::LEVELS == 1, void>
+_clearSuperBlockAt(RankDictionary<TValue, Levels<TSpec, TConfig> > & /* dict */, TPos const /* pos */) {}
+
 // ----------------------------------------------------------------------------
-// Function _getBlockRank()
+// Function _clearUltraBlockAt()
 // ----------------------------------------------------------------------------
 
-template <typename TValue, typename TSpec, typename TConfig, typename TBlock, typename TPos, typename TChar>
-SEQAN_HOST_DEVICE inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > const>::Type
-_getBlockRank(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TBlock const & block, TPos /* pos */, TChar c)
+template <typename TValue, typename TSpec, typename TConfig, typename TPos>
+inline typename std::enable_if_t<TConfig::LEVELS == 3, void>
+_clearUltraBlockAt(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TPos const pos)
+{
+    clear(_ultraBlockAt(dict, pos));
+}
+
+template <typename TSpec, typename TConfig, typename TPos>
+inline typename std::enable_if_t<TConfig::LEVELS == 3, void>
+_clearUltraBlockAt(RankDictionary<bool, Levels<TSpec, TConfig> > & dict, TPos const pos)
 {
-    return loadAndCache(block[ordValue(c)]);
-//    return block[ordValue(c)];
+    _ultraBlockAt(dict, pos) = 0u;
 }
 
+template <typename TValue, typename TSpec, typename TConfig, typename TPos>
+inline typename std::enable_if_t<TConfig::LEVELS <= 2, void>
+_clearUltraBlockAt(RankDictionary<TValue, Levels<TSpec, TConfig> > & /* dict */, TPos const /* pos */) {}
+
 // ----------------------------------------------------------------------------
-// Function _getBlockRank(bool)
+// Function _getBlockRank()
 // ----------------------------------------------------------------------------
 
+template <typename TValue, typename TSpec, typename TConfig, typename TBlock, typename TPos, typename TChar>
+inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > const>::Type
+_getBlockRank(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TBlock const & block, TPos const /* pos */, TChar const c)
+{
+    return block[ordValue(c)];
+}
+
+template <typename TValue, typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB, typename TBlock, typename TPos, typename TChar, typename TSmaller>
+inline typename Size<RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const>::Type
+_getBlockRank(RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const & /* dict */, TBlock const & block, TPos const /* pos */, TChar const c, TSmaller & smaller)
+{
+    // can only be called if ordValue(c) > 0. smaller has to be initialized by the caller!
+    TSmaller _smaller = block[ordValue(c)-1];
+    smaller += _smaller; // NOTE: _smaller cannot be removed. order of evaluation is not defined!
+    return block[ordValue(c)] - _smaller;
+}
+
 template <typename TSpec, typename TConfig, typename TBlock, typename TPos>
-SEQAN_HOST_DEVICE inline typename Size<RankDictionary<bool, Levels<TSpec, TConfig> > const>::Type
-_getBlockRank(RankDictionary<bool, Levels<TSpec, TConfig> > const & dict, TBlock const & block, TPos pos, bool c)
+inline typename std::enable_if_t<TConfig::LEVELS == 1, typename Size<RankDictionary<bool, Levels<TSpec, TConfig> > const>::Type>
+_getBlockRank(RankDictionary<bool, Levels<TSpec, TConfig> > const & dict, TBlock const & block, TPos const pos, bool const c)
 {
-    TBlock rank = loadAndCache(block);
+    // If c == false then return the complementary rank.
+    return c ? block : pos - _toPosInBlock(dict, pos) - block;
+}
 
+template <typename TSpec, typename TConfig, typename TBlock, typename TPos>
+inline typename std::enable_if_t<TConfig::LEVELS >= 2, typename Size<RankDictionary<bool, Levels<TSpec, TConfig> > const>::Type>
+_getBlockRank(RankDictionary<bool, Levels<TSpec, TConfig> > const & dict, TBlock const & block, TPos const pos, bool const c)
+{
     // If c == false then return the complementary rank.
-    return c ? rank : pos - _toPosInBlock(dict, pos) - rank;
+    return c ? block : _toPosInSuperBlock(dict, pos) - _toPosInBlock(dict, pos) - block;
+}
 
-//    return c ? block : pos - _toPosInBlock(dict, pos) - block;
+template <typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB, typename TBlock, typename TPos, typename TSmaller>
+inline typename Size<RankDictionary<bool, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const>::Type
+_getBlockRank(RankDictionary<bool, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const & dict, TBlock const & block, TPos const pos, bool const /* c */, TSmaller & smaller)
+{
+    // can only be called if ordValue(c) > 0. smaller has to be initialized by the caller!
+    smaller += _getBlockRank(dict, block, pos, false);
+    return _getBlockRank(dict, block, pos, true);
 }
 
 // ----------------------------------------------------------------------------
-// Function _getWordRank()
+// Function _getSuperBlockRank()
 // ----------------------------------------------------------------------------
-// NOTE(esiragusa): This version is generic but absymally slow - only for testing purposes.
 
-template <typename TValue, typename TSpec, typename TConfig, typename TWord, typename TPosInWord>
+template <typename TValue, typename TSpec, typename TConfig, typename TSuperBlock, typename TPos, typename TChar>
 inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > const>::Type
-_getWordRank(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */,
-             TWord const & word,
-             TPosInWord posInWord,
-             TValue c)
+_getSuperBlockRank(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TSuperBlock const & superblock, TPos const /* pos */, TChar const c)
 {
-    typedef RankDictionary<TValue, Levels<TSpec, TConfig> >                           TRankDictionary;
-    typedef typename RankDictionaryValues_<TValue, Levels<TSpec, TConfig> >::TValues  TRankDictionaryValues;
-    typedef typename Size<TRankDictionary>::Type                                TSize;
+    return superblock[ordValue(c)];
+}
 
-    TRankDictionaryValues values;
-    values.i = word;
+template <typename TValue, typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB, typename TSuperBlock, typename TPos, typename TChar, typename TSmaller>
+inline typename Size<RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const>::Type
+_getSuperBlockRank(RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const & /* dict */, TSuperBlock const & superblock, TPos const /* pos */, TChar const c, TSmaller & smaller)
+{
+    // can only be called if ordValue(c) > 0. smaller has to be initialized by the caller!
+    TSmaller _smaller = superblock[ordValue(c)-1];
+    smaller += _smaller; // NOTE: _smaller cannot be removed. order of evaluation is not defined!
+    return superblock[ordValue(c)] - _smaller;
+}
 
-    TSize valueRank = 0;
+template <typename TSpec, typename TConfig, typename TSuperBlock, typename TPos>
+inline typename std::enable_if_t<TConfig::LEVELS == 2, typename Size<RankDictionary<bool, Levels<TSpec, TConfig> > const>::Type>
+_getSuperBlockRank(RankDictionary<bool, Levels<TSpec, TConfig> > const & dict, TSuperBlock const & superblock, TPos const pos, bool const c)
+{
+    // If c == false then return the complementary rank.
+    return c ? superblock : pos - _toPosInSuperBlock(dict, pos) - superblock;
+}
 
-    for (TSize i = 0; i <= posInWord; ++i)
-        valueRank += isEqual(values[i], c);
+template <typename TSpec, typename TConfig, typename TSuperBlock, typename TPos>
+inline typename std::enable_if_t<TConfig::LEVELS == 3, typename Size<RankDictionary<bool, Levels<TSpec, TConfig> > const>::Type>
+_getSuperBlockRank(RankDictionary<bool, Levels<TSpec, TConfig> > const & dict, TSuperBlock const & superblock, TPos const pos, bool const c)
+{
+    // If c == false then return the complementary rank.
+    return c ? superblock : _toPosInUltraBlock(dict, pos) - _toPosInSuperBlock(dict, pos) - superblock;
+}
 
-    return valueRank;
+template <typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB, typename TSuperBlock, typename TPos, typename TSmaller>
+inline typename Size<RankDictionary<bool, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const>::Type
+_getSuperBlockRank(RankDictionary<bool, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const & dict, TSuperBlock const & superblock, TPos const pos, bool const /*c*/, TSmaller & smaller)
+{
+    // can only be called if ordValue(c) > 0. smaller has to be initialized by the caller!
+    smaller += _getSuperBlockRank(dict, superblock, pos, false);
+    return _getSuperBlockRank(dict, superblock, pos, true);
 }
 
 // ----------------------------------------------------------------------------
-// Function _getWordRank(Dna)
+// Function _getUltraBlockRank()
 // ----------------------------------------------------------------------------
 
-template <typename TSpec, typename TConfig, typename TWord, typename TPosInWord>
-SEQAN_HOST_DEVICE inline typename Size<RankDictionary<Dna, Levels<TSpec, TConfig> > const>::Type
-_getWordRank(RankDictionary<Dna, Levels<TSpec, TConfig> > const & /* dict */,
-             TWord const & values,
-             TPosInWord posInWord,
-             Dna c)
+template <typename TValue, typename TSpec, typename TConfig, typename TUltraBlock, typename TPos, typename TChar>
+inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > const>::Type
+_getUltraBlockRank(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TUltraBlock const & ultrablock, TPos const /* pos */, TChar const c)
 {
-    typedef RankDictionary<Dna, Levels<TSpec, TConfig> >                TRankDictionary;
-    typedef typename Size<TRankDictionary>::Type                        TSize;
-
-    // Clear the last positions.
-    TWord word = hiBits(values, TRankDictionary::_BITS_PER_VALUE * (posInWord + 1));
-
-    // And matches when c == G|T.
-    TWord odd  = ((ordValue(c) & ordValue(Dna('G'))) ? word : ~word) >> 1;
-
-    // And matches when c == C|T.
-    TWord even = ((ordValue(c) & ordValue(Dna('C'))) ? word : ~word);
-
-    // Apply the interleaved mask.
-    TWord mask = odd & even & RankDictionaryBitMask_<TWord>::VALUE;
+    return ultrablock[ordValue(c)];
+}
 
-    // The rank is the sum of the bits on.
-    TSize valueRank = popCount(mask);
+template <typename TValue, typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB, typename TUltraBlock, typename TPos, typename TChar, typename TSmaller>
+inline typename Size<RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const>::Type
+_getUltraBlockRank(RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const & /* dict */, TUltraBlock const & ultrablock, TPos const /* pos */, TChar const c, TSmaller & smaller)
+{
+    // can only be called if ordValue(c) > 0. smaller has to be initialized by the caller!
+    TSmaller _smaller = ultrablock[ordValue(c)-1];
+    smaller += _smaller; // NOTE: _smaller cannot be removed. order of evaluation is not defined!
+    return ultrablock[ordValue(c)] - _smaller;
+}
 
-    // If c == A then masked character positions must be subtracted from the count.
-    if (c == Dna('A')) valueRank -= TRankDictionary::_VALUES_PER_WORD - (posInWord + 1);
+template <typename TSpec, typename TConfig, typename TUltraBlock, typename TPos>
+inline typename std::enable_if_t<TConfig::LEVELS == 3, typename Size<RankDictionary<bool, Levels<TSpec, TConfig> > const>::Type>
+_getUltraBlockRank(RankDictionary<bool, Levels<TSpec, TConfig> > const & dict, TUltraBlock const & ultrablock, TPos const pos, bool const c)
+{
+    // If c == false then return the complementary rank.
+    return c ? ultrablock : pos - _toPosInUltraBlock(dict, pos) - ultrablock;
+}
 
-    return valueRank;
+template <typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB, typename TUltraBlock, typename TPos, typename TSmaller>
+inline typename Size<RankDictionary<bool, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const>::Type
+_getUltraBlockRank(RankDictionary<bool, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const & dict, TUltraBlock const & ultrablock, TPos const pos, bool const /*c*/, TSmaller & smaller)
+{
+    // can only be called if ordValue(c) > 0. smaller has to be initialized by the caller!
+    smaller += _getUltraBlockRank(dict, ultrablock, pos, false);
+    return _getUltraBlockRank(dict, ultrablock, pos, true);
 }
 
 // ----------------------------------------------------------------------------
-// Function _getWordRank(bool)
+// Function _getWordRank()
 // ----------------------------------------------------------------------------
 
-template <typename TSpec, typename TConfig, typename TWord, typename TPosInWord>
-SEQAN_HOST_DEVICE inline typename Size<RankDictionary<bool, Levels<TSpec, TConfig> > const>::Type
-_getWordRank(RankDictionary<bool, Levels<TSpec, TConfig> > const & /* dict */,
-             TWord const & values,
-             TPosInWord posInWord,
-             bool c)
+template <typename TValue, typename TSpec, typename TConfig, typename TWord, typename TPosInWord>
+inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > const>::Type
+_getWordRank(RankDictionary<TValue, Levels<TSpec, TConfig> > const & /* dict */, TWord const & word, TPosInWord const posInWord, TValue const c)
 {
-    // Negate the values to compute the rank of zero.
-    TWord word = c ? values : ~values;
+    typedef RankDictionary<TValue, Levels<TSpec, TConfig> >                TRankDictionary;
+
+    TWord mask = word ^ TRankDictionary::_CHAR_BITMASKS[ordValue(c)];
+    // NOTE: actually it should be: mask & (mask >> 1) & (mask >> 2) & ... but this is shorter and equivalent
+    for (TWord i = 1; i < TRankDictionary::_BITS_PER_VALUE; ++i)
+        mask &= mask >> 1;
+    return popCount(TRankDictionary::_TRUNC_BITMASKS[posInWord] & mask);
+}
 
-    // Clear the last positions.
-    TWord mask = hiBits(word, posInWord + 1);
+template <typename TValue, typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB, typename TWord, typename TPosInWord>
+inline typename Size<RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const>::Type
+_getWordRank(RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const &, TWord const & word, TPosInWord const posInWord, TValue const c)
+{
+    typedef RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > >    TRankDictionary;
 
-    // Get the sum of the bits on.
-    return popCount(mask);
+    return popCount((TRankDictionary::_CHAR_BITMASKS[ordValue(c)] - word) & TRankDictionary::_TRUNC_BITMASKS[posInWord]);
 }
 
-// ----------------------------------------------------------------------------
-// Function _getWordRank()
-// ----------------------------------------------------------------------------
+template <typename TValue, typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB, typename TWord, typename TPosInWord, typename TPos>
+inline typename Size<RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const>::Type
+_getWordRank(RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const & dict, TWord const & word, TPosInWord const posInWord, TValue const c, TPos & smaller)
+{
+    // can only be called if ordValue(c) > 0. smaller has to be initialized by the caller!
+    typedef RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > >            TRankDictionary;
+
+    TPos _smaller = _getWordRank(dict, word, posInWord, static_cast<TValue>(ordValue(c) - 1));
+    smaller += _smaller;
+    return popCount((TRankDictionary::_CHAR_BITMASKS[ordValue(c)] - word) & TRankDictionary::_TRUNC_BITMASKS[posInWord]) - _smaller;
+}
 
 template <typename TValue, typename TSpec, typename TConfig, typename TWord>
-SEQAN_HOST_DEVICE inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > const>::Type
-_getWordRank(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TWord const & values, TValue c)
+inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > const>::Type
+_getWordRank(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TWord const & word, TValue const c)
+{
+    return _getWordRank(dict, word, RankDictionary<TValue, Levels<TSpec, TConfig> >::_VALUES_PER_WORD - 1, c);
+}
+
+template <typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB, typename TWord, typename TPosInWord>
+inline typename Size<RankDictionary<bool, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const>::Type
+_getWordRank(RankDictionary<bool, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const &, TWord const & word, TPosInWord const posInWord, bool const c)
 {
-    return _getWordRank(dict, values, RankDictionary<TValue, Levels<TSpec, TConfig> >::_VALUES_PER_WORD - 1, c);
+    typedef RankDictionary<bool, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > >    TRankDictionary;
+
+    return popCount(TRankDictionary::_TRUNC_BITMASKS[posInWord] & (word ^ TRankDictionary::_CHAR_BITMASKS[ordValue(c)]));
+}
+
+template <typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB, typename TWord, typename TPosInWord, typename TPos>
+inline typename Size<RankDictionary<bool, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const>::Type
+_getWordRank(RankDictionary<bool, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const & dict, TWord const & word, TPosInWord const posInWord, bool const /* c */, TPos & smaller)
+{
+    typedef RankDictionary<bool, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > >    TRankDictionary;
+
+    smaller += _getWordRank(dict, word, posInWord, false);
+    return popCount(TRankDictionary::_TRUNC_BITMASKS[posInWord] & (word ^ TRankDictionary::_CHAR_BITMASKS[1]));
 }
 
 // ----------------------------------------------------------------------------
@@ -665,11 +1024,8 @@ _getWordRank(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TWord
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TConfig, typename TValues, typename TPosInBlock>
-SEQAN_HOST_DEVICE inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > const>::Type
-_getValueRank(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict,
-              TValues const & values,
-              TPosInBlock posInBlock,
-              TValue c)
+inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > const>::Type
+_getValueRank(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TValues const & values, TPosInBlock const posInBlock, TValue const c)
 {
     typedef RankDictionary<TValue, Levels<TSpec, TConfig> > TRankDictionary;
     typedef typename Size<TRankDictionary>::Type            TSize;
@@ -684,21 +1040,47 @@ _getValueRank(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict,
 //      valueRank += _getWordRank(dict, values[wordPrevPos].i, c);
 
     for (TSize wordPrevPos = 0; wordPrevPos < TRankDictionary::_WORDS_PER_BLOCK; ++wordPrevPos)
-      if (wordPrevPos < wordPos) valueRank += _getWordRank(dict, values[wordPrevPos].i, c);
+        if (wordPrevPos < wordPos)
+            valueRank += _getWordRank(dict, values[wordPrevPos].i, c);
 
     valueRank += _getWordRank(dict, values[wordPos].i, posInWord, c);
 
     return valueRank;
 }
 
+template <typename TValue, typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB, typename TValues, typename TPosInBlock, typename TSmaller>
+inline typename Size<RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const>::Type
+_getValueRank(RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const & dict, TValues const & values, TPosInBlock const posInBlock, TValue const c, TSmaller & smaller)
+{
+    typedef RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > TRankDictionary;
+
+    TSize wordPos    = _toWordPos(dict, posInBlock);
+    TSize posInWord  = _toPosInWord(dict, posInBlock);
+
+    TSize valueRank = 0;
+
+    // NOTE(esiragusa): writing the loop in this form prevents the compiler from unrolling it.
+    //    for (TSize wordPrevPos = 0; wordPrevPos < wordPos; ++wordPrevPos)
+    //      valueRank += _getWordRank(dict, values[wordPrevPos].i, c);
+
+    for (TSize wordPrevPos = 0; wordPrevPos < TRankDictionary::_WORDS_PER_BLOCK; ++wordPrevPos)
+        if (wordPrevPos < wordPos)
+            valueRank += _getWordRank(dict, values[wordPrevPos].i, TRankDictionary::_VALUES_PER_WORD - 1, c, smaller);
+
+    valueRank += _getWordRank(dict, values[wordPos].i, posInWord, c, smaller);
+
+    return valueRank;
+}
+
 // ----------------------------------------------------------------------------
 // Function _getValuesRanks()
 // ----------------------------------------------------------------------------
 // TODO(esiragusa): Specialize _getValuesRanks() for Dna.
+// TODO(cpockrandt): why could that be beneficial?
 
 template <typename TValue, typename TSpec, typename TConfig, typename TPos>
 inline typename RankDictionaryBlock_<TValue, Levels<TSpec, TConfig> >::Type
-_getValuesRanks(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TPos pos)
+_getValuesRanks(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TPos const pos)
 {
     typedef typename RankDictionaryBlock_<TValue, Levels<TSpec, TConfig> >::Type    TBlock;
     typedef typename ValueSize<TValue>::Type                                        TValueSize;
@@ -711,13 +1093,41 @@ _getValuesRanks(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TP
     return blockRank;
 }
 
+template <typename TValue, typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB, typename TPos>
+inline typename RankDictionaryBlock_<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > >::Type
+_getValuesRanks(RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const & dict, TPos const pos)
+{
+    typedef typename RankDictionaryBlock_<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > >::Type    TBlock;
+    typedef typename ValueSize<TValue>::Type                                        TValueSize;
+
+    TBlock blockRank;
+    TPos rank = _getValueRank(dict, _valuesAt(dict, pos), _toPosInBlock(dict, pos), TValue(0));
+    assignValue(blockRank, 0, rank);
+
+    for (TValueSize c = 1; c < ValueSize<TValue>::VALUE; ++c)
+    {
+        TPos smaller = 0;
+        rank = _getValueRank(dict, _valuesAt(dict, pos), _toPosInBlock(dict, pos), TValue(c), smaller);
+        assignValue(blockRank, c, rank + smaller);
+    }
+
+    return blockRank;
+}
+
 // ----------------------------------------------------------------------------
 // Function _getValuesRanks(bool)
 // ----------------------------------------------------------------------------
 
 template <typename TSpec, typename TConfig, typename TPos>
 inline typename RankDictionaryBlock_<bool, Levels<TSpec, TConfig> >::Type
-_getValuesRanks(RankDictionary<bool, Levels<TSpec, TConfig> > const & dict, TPos pos)
+_getValuesRanks(RankDictionary<bool, Levels<TSpec, TConfig> > const & dict, TPos const pos)
+{
+    return _getValueRank(dict, _valuesAt(dict, pos), _toPosInBlock(dict, pos), true);
+}
+
+template <typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB, typename TPos>
+inline typename RankDictionaryBlock_<bool, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > >::Type
+_getValuesRanks(RankDictionary<bool, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const & dict, TPos const pos)
 {
     return _getValueRank(dict, _valuesAt(dict, pos), _toPosInBlock(dict, pos), true);
 }
@@ -725,37 +1135,153 @@ _getValuesRanks(RankDictionary<bool, Levels<TSpec, TConfig> > const & dict, TPos
 // ----------------------------------------------------------------------------
 // Function getRank()
 // ----------------------------------------------------------------------------
+
 template <typename TValue, typename TSpec, typename TConfig, typename TPos, typename TChar>
-SEQAN_HOST_DEVICE inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > const>::Type
-getRank(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TPos pos, TChar c)
+inline std::enable_if_t<TConfig::LEVELS == 3, typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > const>::Type>
+getRank(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TPos const pos, TChar const c)
 {
-    typedef RankDictionary<TValue, Levels<TSpec, TConfig> > const           TRankDictionary;
-    typedef typename Fibre<TRankDictionary, FibreRanks>::Type               TFibreRanks;
-    typedef typename Value<TFibreRanks>::Type                               TRankEntry;
-//    typedef typename RankDictionaryBlock_<TValue, Levels<TSpec, TConfig> >::Type  TRankBlock;
-    typedef typename RankDictionaryValues_<TValue, Levels<TSpec, TConfig> >::Type TRankValues;
-    typedef typename Size<TRankDictionary>::Type                            TSize;
+    typedef RankDictionary<TValue, Levels<TSpec, TConfig> > const                           TRankDictionary;
+    typedef typename Value<typename Fibre<TRankDictionary, FibreUltraBlocks>::Type>::Type   TFibreUltraBlocks;
+    typedef typename Value<typename Fibre<TRankDictionary, FibreSuperBlocks>::Type>::Type   TFibreSuperBlocks;
+    typedef typename Value<typename Fibre<TRankDictionary, FibreRanks>::Type>::Type         TFibreBlocks;
+    typedef typename Size<TRankDictionary>::Type                                            TSize;
 
-    TSize blockPos   = _toBlockPos(dict, pos);
     TSize posInBlock = _toPosInBlock(dict, pos);
 
-//    TRankEntry entry = loadAndCache(dict.ranks[blockPos]);
-    TRankEntry const & entry = dict.ranks[blockPos];
+    TFibreUltraBlocks const & ultraBlock(_ultraBlockAt(dict, pos));
+    TFibreSuperBlocks const & superBlock(_superBlockAt(dict, pos));
+    TFibreBlocks const & entry(dict.blocks[_toBlockPos(dict, pos)]);
+
+    return _getUltraBlockRank(dict, ultraBlock, pos, static_cast<TValue>(c))
+         + _getSuperBlockRank(dict, superBlock, pos, static_cast<TValue>(c))
+         + _getBlockRank(dict, entry.block, pos, static_cast<TValue>(c))
+         + _getValueRank(dict, entry.values, posInBlock, static_cast<TValue>(c));
+}
+
+template <typename TValue, typename TSpec, typename TConfig, typename TPos, typename TChar>
+inline typename std::enable_if_t<TConfig::LEVELS == 2, typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > const>::Type>
+getRank(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TPos const pos, TChar const c)
+{
+    typedef RankDictionary<TValue, Levels<TSpec, TConfig> > const                           TRankDictionary;
+    typedef typename Value<typename Fibre<TRankDictionary, FibreSuperBlocks>::Type>::Type   TFibreSuperBlocks;
+    typedef typename Value<typename Fibre<TRankDictionary, FibreRanks>::Type>::Type         TFibreBlocks;
+    typedef typename Size<TRankDictionary>::Type                                            TSize;
+
+    TSize posInBlock = _toPosInBlock(dict, pos);
 
-//    TRankBlock block = loadAndCache(entry.block);
-    TRankValues values = loadAndCache(entry.values);
+    TFibreSuperBlocks const & superBlock(_superBlockAt(dict, pos));
+    TFibreBlocks const & entry(dict.blocks[_toBlockPos(dict, pos)]);
 
-    return _getBlockRank(dict, entry.block, pos, static_cast<TValue>(c)) +
-           _getValueRank(dict, values, posInBlock, static_cast<TValue>(c));
+    return _getSuperBlockRank(dict, superBlock, pos, static_cast<TValue>(c))
+         + _getBlockRank(dict, entry.block, pos, static_cast<TValue>(c))
+         + _getValueRank(dict, entry.values, posInBlock, static_cast<TValue>(c));
 }
 
-// ----------------------------------------------------------------------------
-// Function getRank(bool)
-// ----------------------------------------------------------------------------
+template <typename TValue, typename TSpec, typename TConfig, typename TPos, typename TChar>
+inline typename std::enable_if_t<TConfig::LEVELS == 1, typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > const>::Type>
+getRank(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TPos const pos, TChar const c)
+{
+    typedef RankDictionary<TValue, Levels<TSpec, TConfig> > const                           TRankDictionary;
+    typedef typename Value<typename Fibre<TRankDictionary, FibreRanks>::Type>::Type         TFibreBlocks;
+    typedef typename Size<TRankDictionary>::Type                                            TSize;
+
+    TSize posInBlock = _toPosInBlock(dict, pos);
+
+    TFibreBlocks const & entry(dict.blocks[_toBlockPos(dict, pos)]);
+
+    return _getBlockRank(dict, entry.block, pos, static_cast<TValue>(c))
+         + _getValueRank(dict, entry.values, posInBlock, static_cast<TValue>(c));
+}
+
+template <typename TValue, typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB, typename TPos, typename TChar>
+inline TSize getRank(RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const & dict, TPos const pos, TChar const c)
+{
+    TPos smaller;
+    return getRank(dict, pos, static_cast<TValue>(c), smaller);
+}
+
+template <typename TValue, typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB, typename TPos, typename TChar>
+inline TSize getRank(RankDictionary<TValue, Levels<TSpec, LevelsRDConfig<TSize, TFibre, LEVELS, WPB> > > const & dict, TPos const pos, TChar const c, TPos & /*smaller*/)
+{
+    return getRank(dict, pos, static_cast<TValue>(c));
+}
+
+template <typename TValue, typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB, typename TPos, typename TChar>
+inline typename std::enable_if_t<LEVELS == 3, TSize>
+getRank(RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const & dict, TPos const pos, TChar const c, TPos & smaller)
+{
+    typedef RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const   TRankDictionary;
+    typedef typename Value<typename Fibre<TRankDictionary, FibreUltraBlocks>::Type>::Type           TFibreUltraBlocks;
+    typedef typename Value<typename Fibre<TRankDictionary, FibreSuperBlocks>::Type>::Type           TFibreSuperBlocks;
+    typedef typename Value<typename Fibre<TRankDictionary, FibreRanks>::Type>::Type                 TFibreBlocks;
+
+    TSize posInBlock = _toPosInBlock(dict, pos);
+
+    TFibreUltraBlocks const & ultraBlock(_ultraBlockAt(dict, pos));
+    TFibreSuperBlocks const & superBlock(_superBlockAt(dict, pos));
+    TFibreBlocks const & entry(dict.blocks[_toBlockPos(dict, pos)]);
+
+    // TODO(cpockrandt): remove if-statement for an additional block/superblock/ultrablock with value 0
+    smaller = 0;
+    if (SEQAN_LIKELY(ordValue(c) > 0))
+        return _getUltraBlockRank(dict, ultraBlock, pos, static_cast<TValue>(c), smaller)
+             + _getSuperBlockRank(dict, superBlock, pos, static_cast<TValue>(c), smaller)
+             + _getBlockRank(dict, entry.block, pos, static_cast<TValue>(c), smaller)
+             + _getValueRank(dict, entry.values, posInBlock, static_cast<TValue>(c), smaller);
+
+    return _getUltraBlockRank(dict, ultraBlock, pos, static_cast<TValue>(c))
+         + _getSuperBlockRank(dict, superBlock, pos, static_cast<TValue>(c))
+         + _getBlockRank(dict, entry.block, pos, static_cast<TValue>(c))
+         + _getValueRank(dict, entry.values, posInBlock, static_cast<TValue>(c));
+}
+
+template <typename TValue, typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB, typename TPos, typename TChar>
+inline typename std::enable_if_t<LEVELS == 2, TSize>
+getRank(RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const & dict, TPos const pos, TChar const c, TPos & smaller)
+{
+    typedef RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const   TRankDictionary;
+    typedef typename Value<typename Fibre<TRankDictionary, FibreSuperBlocks>::Type>::Type           TFibreSuperBlocks;
+    typedef typename Value<typename Fibre<TRankDictionary, FibreRanks>::Type>::Type                 TFibreBlocks;
+
+    TSize posInBlock = _toPosInBlock(dict, pos);
+
+    TFibreSuperBlocks const & superBlock(_superBlockAt(dict, pos));
+    TFibreBlocks const & entry(dict.blocks[_toBlockPos(dict, pos)]);
+
+    smaller = 0;
+    if (SEQAN_LIKELY(ordValue(c) > 0))
+        return _getSuperBlockRank(dict, superBlock, pos, static_cast<TValue>(c), smaller)
+             + _getBlockRank(dict, entry.block, pos, static_cast<TValue>(c), smaller)
+             + _getValueRank(dict, entry.values, posInBlock, static_cast<TValue>(c), smaller);
+
+    return _getSuperBlockRank(dict, superBlock, pos, static_cast<TValue>(c))
+         + _getBlockRank(dict, entry.block, pos, static_cast<TValue>(c))
+         + _getValueRank(dict, entry.values, posInBlock, static_cast<TValue>(c));
+}
+
+template <typename TValue, typename TSpec, typename TSize, typename TFibre, unsigned LEVELS, unsigned WPB, typename TPos, typename TChar>
+inline typename std::enable_if_t<LEVELS == 1, TSize>
+getRank(RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const & dict, TPos const pos, TChar const c, TPos & smaller)
+{
+    typedef RankDictionary<TValue, Levels<TSpec, LevelsPrefixRDConfig<TSize, TFibre, LEVELS, WPB> > > const   TRankDictionary;
+    typedef typename Value<typename Fibre<TRankDictionary, FibreRanks>::Type>::Type                 TFibreBlocks;
+
+    TSize posInBlock = _toPosInBlock(dict, pos);
+
+    TFibreBlocks const & entry(dict.blocks[_toBlockPos(dict, pos)]);
+
+    smaller = 0;
+    if (SEQAN_LIKELY(ordValue(c) > 0))
+        return _getBlockRank(dict, entry.block, pos, static_cast<TValue>(c), smaller)
+             + _getValueRank(dict, entry.values, posInBlock, static_cast<TValue>(c), smaller);
+
+    return _getBlockRank(dict, entry.block, pos, static_cast<TValue>(c))
+         + _getValueRank(dict, entry.values, posInBlock, static_cast<TValue>(c));
+}
 
 template <typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline typename Size<RankDictionary<bool, Levels<TSpec, TConfig> > const>::Type
-getRank(RankDictionary<bool, Levels<TSpec, TConfig> > const & dict, TPos pos)
+inline typename Size<RankDictionary<bool, Levels<TSpec, TConfig> > const>::Type
+getRank(RankDictionary<bool, Levels<TSpec, TConfig> > const & dict, TPos const pos)
 {
     return getRank(dict, pos, true);
 }
@@ -764,8 +1290,8 @@ getRank(RankDictionary<bool, Levels<TSpec, TConfig> > const & dict, TPos pos)
 // Function getValue()
 // ----------------------------------------------------------------------------
 template <typename TValue, typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline typename Value<RankDictionary<TValue, Levels<TSpec, TConfig> > >::Type
-getValue(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TPos pos)
+inline typename Value<RankDictionary<TValue, Levels<TSpec, TConfig> > >::Type
+getValue(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TPos const pos)
 {
     typedef RankDictionary<TValue, Levels<TSpec, TConfig> >             TRankDictionary;
     typedef typename Size<TRankDictionary>::Type                        TSize;
@@ -779,8 +1305,8 @@ getValue(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TPos pos)
 }
 
 template <typename TValue, typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline typename Value<RankDictionary<TValue, Levels<TSpec, TConfig> > const>::Type
-getValue(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TPos pos)
+inline typename Value<RankDictionary<TValue, Levels<TSpec, TConfig> > const>::Type
+getValue(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TPos const pos)
 {
     typedef RankDictionary<TValue, Levels<TSpec, TConfig> >             TRankDictionary;
     typedef typename Size<TRankDictionary>::Type                        TSize;
@@ -798,7 +1324,7 @@ getValue(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, TPos pos)
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TConfig, typename TPos, typename TChar>
-inline void setValue(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TPos pos, TChar c)
+inline void setValue(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TPos const pos, TChar const c)
 {
     typedef RankDictionary<TValue, Levels<TSpec, TConfig> >             TRankDictionary;
     typedef typename Size<TRankDictionary>::Type                        TSize;
@@ -815,9 +1341,9 @@ inline void setValue(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TPo
 // Function appendValue()
 // ----------------------------------------------------------------------------
 // NOTE(esiragusa): Better not to have appendValue() - it is not efficient - and thus neither length().
-
+// TODO(cpockrandt): try to remove this (it is currently still used by wavelet trees)
 template <typename TValue, typename TSpec, typename TConfig, typename TChar, typename TExpand>
-inline void appendValue(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TChar c, Tag<TExpand> const tag)
+inline void appendValue(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TChar const c, Tag<TExpand> const tag)
 {
     resize(dict, length(dict) + 1, tag);
     setValue(dict, length(dict) - 1, c);
@@ -827,33 +1353,84 @@ inline void appendValue(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict,
 // Function updateRanks()
 // ----------------------------------------------------------------------------
 
+template <typename TValue, typename TSpec, typename TConfig, typename TSize>
+inline typename std::enable_if_t<TConfig::LEVELS < 3, void>
+_updateUltraBlock(RankDictionary<TValue, Levels<TSpec, TConfig> > & /* dict */, TSize const /* blockPos */) {}
+
+template <typename TValue, typename TSpec, typename TConfig, typename TSize>
+inline typename std::enable_if_t<TConfig::LEVELS == 3, void>
+_updateUltraBlock(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TSize const blockPos)
+{
+    typedef RankDictionary<TValue, Levels<TSpec, TConfig> > TRankDictionary;
+    static const unsigned blocks_per_ultrablock = TRankDictionary::_VALUES_PER_ULTRABLOCK / TRankDictionary::_VALUES_PER_BLOCK;
+
+    if (blockPos % blocks_per_ultrablock == 0)
+    {
+        TSize curr   = _toPos(dict, blockPos);
+        TSize prevUB = _toPos(dict, blockPos - blocks_per_ultrablock);
+
+        _ultraBlockAt(dict, curr) = _ultraBlockAt(dict, prevUB) + _superBlockAt(dict, curr);
+        _clearSuperBlockAt(dict, curr);
+    }
+}
+
+template <typename TValue, typename TSpec, typename TConfig, typename TSize>
+inline typename std::enable_if_t<TConfig::LEVELS == 1, void>
+_updateSuperBlock(RankDictionary<TValue, Levels<TSpec, TConfig> > & /* dict */, TSize const /* blockPos */) {}
+
+template <typename TValue, typename TSpec, typename TConfig, typename TSize>
+inline typename std::enable_if_t<TConfig::LEVELS >= 2, void>
+_updateSuperBlock(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TSize const blockPos)
+{
+    typedef RankDictionary<TValue, Levels<TSpec, TConfig> > TRankDictionary;
+    static const unsigned blocks_per_superblock = TRankDictionary::_VALUES_PER_SUPERBLOCK / TRankDictionary::_VALUES_PER_BLOCK;
+
+    if (blockPos % blocks_per_superblock == 0)
+    {
+        TSize curr   = _toPos(dict, blockPos);
+        TSize prevSB = _toPos(dict, blockPos - blocks_per_superblock);
+
+        _superBlockAt(dict, curr) = _superBlockAt(dict, prevSB) + _blockAt(dict, curr);
+        _clearBlockAt(dict, curr);
+    }
+}
+
 template <typename TValue, typename TSpec, typename TConfig>
-inline void updateRanks(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict)
+inline void
+updateRanks(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict)
 {
     typedef RankDictionary<TValue, Levels<TSpec, TConfig> >         TRankDictionary;
     typedef typename Size<TRankDictionary>::Type                    TSize;
     typedef typename Fibre<TRankDictionary, FibreRanks>::Type       TFibreRanks;
-    typedef typename Iterator<TFibreRanks, Standard>::Type          TFibreRanksIter;
+    typedef typename Iterator<TFibreRanks, Standard>::Type          TBlockIter;
 
     if (empty(dict)) return;
 
-    TFibreRanksIter ranksBegin = begin(dict.ranks, Standard());
-    TFibreRanksIter ranksEnd = end(dict.ranks, Standard());
-
-    // Insures the first block ranks start from zero.
+    // Insures the first block/superbock/ultrablock ranks start from zero.
+    _clearUltraBlockAt(dict, 0u);
+    _clearSuperBlockAt(dict, 0u);
     _clearBlockAt(dict, 0u);
 
     // Clear the uninitialized values.
     _padValues(dict);
 
-    // Iterate through the blocks.
-    for (TFibreRanksIter ranksIt = ranksBegin; ranksIt != ranksEnd - 1; ++ranksIt)
+    TBlockIter blocksBegin = begin(dict.blocks, Standard());
+    TBlockIter blocksEnd = end(dict.blocks, Standard());
+
+    for (TBlockIter blocksIt = blocksBegin; blocksIt != blocksEnd; ++blocksIt)
     {
-        TSize blockPos = ranksIt - ranksBegin;
+        TSize blockPos = blocksIt - blocksBegin;
         TSize curr = _toPos(dict, blockPos);
         TSize next = _toPos(dict, blockPos + 1);
 
-        _blockAt(dict, next) = _blockAt(dict, curr) + _getValuesRanks(dict, next - 1);
+        if (blockPos > 0)
+        {
+            _updateSuperBlock(dict, blockPos);
+            _updateUltraBlock(dict, blockPos);
+        }
+
+        if (blocksIt != blocksEnd - 1)
+            _blockAt(dict, next) = _blockAt(dict, curr) + _getValuesRanks(dict, next - 1);
     }
 }
 
@@ -874,10 +1451,15 @@ length(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict)
 
 template <typename TValue, typename TSpec, typename TConfig, typename TSize, typename TExpand>
 inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > >::Type
-reserve(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TSize newCapacity, Tag<TExpand> const tag)
+reserve(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TSize const newCapacity, Tag<TExpand> const tag)
 {
-    return reserve(dict.ranks, (newCapacity + RankDictionary<TValue, Levels<TSpec, TConfig> >::_VALUES_PER_BLOCK - 1) /
-                               RankDictionary<TValue, Levels<TSpec, TConfig> >::_VALUES_PER_BLOCK, tag);
+    typedef RankDictionary<TValue, Levels<TSpec, TConfig> > TRankDict_;
+
+    if (TConfig::LEVELS > 1)
+        reserve(dict.superblocks, (newCapacity + TRankDict_::_VALUES_PER_SUPERBLOCK - 1) / TRankDict_::_VALUES_PER_SUPERBLOCK, tag);
+    if (TConfig::LEVELS > 2)
+        reserve(dict.ultrablocks, (newCapacity + TRankDict_::_VALUES_PER_ULTRABLOCK - 1) / TRankDict_::_VALUES_PER_ULTRABLOCK, tag);
+    return reserve(dict.blocks, (newCapacity + TRankDict_::_VALUES_PER_BLOCK - 1) / TRankDict_::_VALUES_PER_BLOCK, tag);
 }
 
 // ----------------------------------------------------------------------------
@@ -886,11 +1468,68 @@ reserve(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TSize newCapacit
 
 template <typename TValue, typename TSpec, typename TConfig, typename TSize, typename TExpand>
 inline typename Size<RankDictionary<TValue, Levels<TSpec, TConfig> > >::Type
-resize(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TSize newLength, Tag<TExpand> const tag)
+resize(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, TSize const newLength, Tag<TExpand> const tag)
 {
+    typedef RankDictionary<TValue, Levels<TSpec, TConfig> > TRankDict_;
+
     dict._length = newLength;
-    return resize(dict.ranks, (newLength + RankDictionary<TValue, Levels<TSpec, TConfig> >::_VALUES_PER_BLOCK - 1) /
-                              RankDictionary<TValue, Levels<TSpec, TConfig> >::_VALUES_PER_BLOCK, tag);
+    if (TConfig::LEVELS > 1)
+        resize(dict.superblocks, (newLength + TRankDict_::_VALUES_PER_SUPERBLOCK - 1) / TRankDict_::_VALUES_PER_SUPERBLOCK, tag);
+    if (TConfig::LEVELS > 2)
+        resize(dict.ultrablocks, (newLength + TRankDict_::_VALUES_PER_ULTRABLOCK - 1) / TRankDict_::_VALUES_PER_ULTRABLOCK, tag);
+    return resize(dict.blocks, (newLength + TRankDict_::_VALUES_PER_BLOCK - 1) / TRankDict_::_VALUES_PER_BLOCK, tag);
+}
+
+template <typename TValue, typename TSpec, typename TConfig>
+inline bool save(RankDictionary<TValue, Levels<TSpec, TConfig> > const & dict, const char * fileName, int const openMode)
+{
+    String<char> name;
+    bool result = true;
+
+    result &= save(getFibre(dict, FibreRanks()), toCString(fileName), openMode);
+
+    if (TConfig::LEVELS > 1)
+    {
+        name = fileName;
+        append(name, ".sbl");
+        result &= save(getFibre(dict, FibreSuperBlocks()), toCString(name), openMode);
+    }
+
+    if (TConfig::LEVELS > 2)
+    {
+        name = fileName;
+        append(name, ".ubl");
+        result &= save(getFibre(dict, FibreUltraBlocks()), toCString(name), openMode);
+    }
+
+    return result;
+}
+
+template <typename TValue, typename TSpec, typename TConfig>
+inline bool open(RankDictionary<TValue, Levels<TSpec, TConfig> > & dict, const char * fileName, int const openMode)
+{
+    String<char> name;
+    bool result = true;
+
+    name = fileName;
+    append(name, "");
+    result &= open(getFibre(dict, FibreRanks()), toCString(name), openMode);
+
+    if (TConfig::LEVELS > 1)
+    {
+        name = fileName;
+        append(name, ".sbl");
+        result &= open(getFibre(dict, FibreSuperBlocks()), toCString(name), openMode);
+    }
+
+    if (TConfig::LEVELS > 2)
+    {
+        name = fileName;
+        append(name, ".ubl");
+        result &= open(getFibre(dict, FibreUltraBlocks()), toCString(name), openMode);
+    }
+
+    return result;
 }
 
 }
diff --git a/include/seqan/index/index_fm_rank_dictionary_naive.h b/include/seqan/index/index_fm_rank_dictionary_naive.h
index c4c19f1..dcd9ab0 100644
--- a/include/seqan/index/index_fm_rank_dictionary_naive.h
+++ b/include/seqan/index/index_fm_rank_dictionary_naive.h
@@ -105,7 +105,7 @@ struct RankDictionary<TValue, Naive<TSpec, TConfig> >
 // ----------------------------------------------------------------------------
 
 template <typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline typename Size<RankDictionary<bool, Naive<TSpec, TConfig> > const>::Type
+inline typename Size<RankDictionary<bool, Naive<TSpec, TConfig> > const>::Type
 getRank(RankDictionary<bool, Naive<TSpec, TConfig> > const & dict, TPos pos, bool c = true)
 {
     typedef RankDictionary<bool, Naive<TSpec, TConfig> > const                       TRankDictionary;
@@ -126,7 +126,7 @@ getRank(RankDictionary<bool, Naive<TSpec, TConfig> > const & dict, TPos pos, boo
 // ----------------------------------------------------------------------------
 
 template <typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline typename Value<RankDictionary<bool, Naive<TSpec, TConfig> > >::Type
+inline typename Value<RankDictionary<bool, Naive<TSpec, TConfig> > >::Type
 getValue(RankDictionary<bool, Naive<TSpec, TConfig> > & dict, TPos pos)
 {
     typedef RankDictionary<bool, Naive<TSpec, TConfig> > const                       TRankDictionary;
@@ -143,7 +143,7 @@ getValue(RankDictionary<bool, Naive<TSpec, TConfig> > & dict, TPos pos)
 }
 
 template <typename TSpec, typename TConfig, typename TPos>
-SEQAN_HOST_DEVICE inline typename Value<RankDictionary<bool, Naive<TSpec, TConfig> > const>::Type
+inline typename Value<RankDictionary<bool, Naive<TSpec, TConfig> > const>::Type
 getValue(RankDictionary<bool, Naive<TSpec, TConfig> > const & dict, TPos pos)
 {
     typedef RankDictionary<bool, Naive<TSpec, TConfig> > const                       TRankDictionary;
diff --git a/include/seqan/index/index_fm_rank_dictionary_wt.h b/include/seqan/index/index_fm_rank_dictionary_wt.h
index a48fd3d..c41af8e 100644
--- a/include/seqan/index/index_fm_rank_dictionary_wt.h
+++ b/include/seqan/index/index_fm_rank_dictionary_wt.h
@@ -48,10 +48,10 @@ namespace seqan {
 // Tag WaveletTreeConfig
 // --------------------------------------------------------------------------
 
-template <typename TSize = size_t, typename TFibre = Alloc<>, unsigned LEVELS = 1, unsigned ARITY_ = 2>
-struct WTRDConfig : LevelsRDConfig<TSize, TFibre, LEVELS>
+template <typename TSize = size_t, typename TFibre = Alloc<>, unsigned LEVELS_ = 1, unsigned WORDS_PER_BLOCK_ = 0/*, unsigned ARITY_ = 2*/>
+struct WTRDConfig : LevelsRDConfig<TSize, TFibre, LEVELS_, WORDS_PER_BLOCK_>
 {
-    static const unsigned ARITY = ARITY_;
+    //static const unsigned ARITY = ARITY_;
 };
 
 // --------------------------------------------------------------------------
@@ -277,16 +277,27 @@ template <typename TValue, typename TSpec, typename TConfig, typename TPos, type
 inline typename Size<RankDictionary<TValue, WaveletTree<TSpec, TConfig> > >::Type
 getRank(RankDictionary<TValue, WaveletTree<TSpec, TConfig> > const & dict, TPos pos, TChar character)
 {
+    TPos smaller;
+    return getRank(dict, pos, character, smaller);
+}
+
+template <typename TValue, typename TSpec, typename TConfig, typename TPos, typename TChar>
+inline typename Size<RankDictionary<TValue, WaveletTree<TSpec, TConfig> > >::Type
+getRank(RankDictionary<TValue, WaveletTree<TSpec, TConfig> > const & dict, TPos pos, TChar character, TPos & smaller)
+{
+    // smaller has to be initiliazed by the caller!
     typedef typename Fibre<RankDictionary<TValue, WaveletTree<TSpec, TConfig> >, FibreTreeStructure>::Type  TWaveletTreeStructure;
-    typedef typename Fibre<TWaveletTreeStructure, FibreTreeStructureEncoding>::Type         TWaveletTreeStructureString;
-    typedef typename Value<TWaveletTreeStructureString>::Type                               TWaveletTreeStructureEntry;
-    typedef typename Value<TWaveletTreeStructureEntry, 1>::Type                             TChar_;
+    typedef typename Fibre<TWaveletTreeStructure, FibreTreeStructureEncoding>::Type                         TWaveletTreeStructureString;
+    typedef typename Value<TWaveletTreeStructureString>::Type                                               TWaveletTreeStructureEntry;
+    typedef typename Value<TWaveletTreeStructureEntry, 1>::Type                                             TChar_;
 
     TPos sum = pos;
     TPos treePos = 0;
+    smaller = 0;
 
     // determine the leaf containing the character
     // count the number of 1 or 0 up to the computed position
+    // count the number of characters smaller to the specified position
     typename Iterator<TWaveletTreeStructure const, TopDown<> >::Type it(dict.waveletTreeStructure, treePos);
     TChar_ charInTree = dict.waveletTreeStructure.minCharValue;
 
@@ -303,6 +314,7 @@ getRank(RankDictionary<TValue, WaveletTree<TSpec, TConfig> > const & dict, TPos
         }
         else
         {
+            smaller += sum - addValue + 1;
             if (addValue == 0) return 0;
 
             charInTree = getCharacter(it);
diff --git a/include/seqan/index/index_fm_sparse_string.h b/include/seqan/index/index_fm_sparse_string.h
index d6426ea..a7d0560 100644
--- a/include/seqan/index/index_fm_sparse_string.h
+++ b/include/seqan/index/index_fm_sparse_string.h
@@ -271,14 +271,14 @@ inline void clear(SparseString<TFibreValues, TSpec> & string)
  */
 
 template <typename TFibreValues, typename TSpec>
-SEQAN_HOST_DEVICE inline bool empty(SparseString<TFibreValues, TSpec> const & string)
+inline bool empty(SparseString<TFibreValues, TSpec> const & string)
 {
 //    return empty(getFibre(string, FibreIndicators()));
     return length(string) == 0;
 }
 
 template <typename TFibreValues, typename TSpec, typename TPos>
-SEQAN_HOST_DEVICE inline bool _isContained(SparseString<TFibreValues, TSpec> const & string, TPos const & pos)
+inline bool _isContained(SparseString<TFibreValues, TSpec> const & string, TPos const & pos)
 {
     return getValue(getFibre(string, FibreIndicators()), pos);
 }
@@ -315,7 +315,7 @@ assignValue(SparseString<TFibreValues, TSpec> & string, TPos pos, TValue value)
  */
 
 template <typename TFibreValues, typename TSpec, typename TPos>
-SEQAN_HOST_DEVICE inline typename GetValue<SparseString<TFibreValues, TSpec> >::Type
+inline typename GetValue<SparseString<TFibreValues, TSpec> >::Type
 getValue(SparseString<TFibreValues, TSpec> & string, TPos pos)
 {
     if (_isContained(string, pos))
@@ -325,7 +325,7 @@ getValue(SparseString<TFibreValues, TSpec> & string, TPos pos)
 }
 
 template <typename TFibreValues, typename TSpec, typename TPos>
-SEQAN_HOST_DEVICE inline typename GetValue<SparseString<TFibreValues, TSpec> const>::Type
+inline typename GetValue<SparseString<TFibreValues, TSpec> const>::Type
 getValue(SparseString<TFibreValues, TSpec> const & string, TPos pos)
 {
     if (_isContained(string, pos))
@@ -352,14 +352,14 @@ getValue(SparseString<TFibreValues, TSpec> const & string, TPos pos)
  */
 
 template <typename TFibreValues, typename TSpec, typename TPos>
-SEQAN_HOST_DEVICE inline typename Reference<SparseString<TFibreValues, TSpec> >::Type
+inline typename Reference<SparseString<TFibreValues, TSpec> >::Type
 value(SparseString<TFibreValues, TSpec> & string, TPos pos)
 {
     return getValue(string, pos);
 }
 
 template <typename TFibreValues, typename TSpec, typename TPos>
-SEQAN_HOST_DEVICE inline typename Reference<SparseString<TFibreValues, TSpec> >::Type
+inline typename Reference<SparseString<TFibreValues, TSpec> >::Type
 value(SparseString<TFibreValues, TSpec> const & string, TPos pos)
 {
     return getValue(string, pos);
@@ -383,28 +383,28 @@ value(SparseString<TFibreValues, TSpec> const & string, TPos pos)
  */
 
 template <typename TFibreValues, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Fibre<SparseString<TFibreValues, TSpec>, FibreValues>::Type const &
+inline typename Fibre<SparseString<TFibreValues, TSpec>, FibreValues>::Type const &
 getFibre(SparseString<TFibreValues, TSpec> const & sparseString, FibreValues)
 {
     return sparseString.values;
 }
 
 template <typename TFibreValues, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Fibre<SparseString<TFibreValues, TSpec>, FibreValues>::Type &
+inline typename Fibre<SparseString<TFibreValues, TSpec>, FibreValues>::Type &
 getFibre(SparseString<TFibreValues, TSpec> & sparseString, FibreValues)
 {
     return sparseString.values;
 }
 
 template <typename TFibreValues, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Fibre<SparseString<TFibreValues, TSpec>, FibreIndicators>::Type const &
+inline typename Fibre<SparseString<TFibreValues, TSpec>, FibreIndicators>::Type const &
 getFibre(SparseString<TFibreValues, TSpec> const & sparseString, FibreIndicators)
 {
     return sparseString.indicators;
 }
 
 template <typename TFibreValues, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Fibre<SparseString<TFibreValues, TSpec>, FibreIndicators>::Type &
+inline typename Fibre<SparseString<TFibreValues, TSpec>, FibreIndicators>::Type &
 getFibre(SparseString<TFibreValues, TSpec> & sparseString, FibreIndicators)
 {
     return sparseString.indicators;
@@ -429,7 +429,7 @@ getFibre(SparseString<TFibreValues, TSpec> & sparseString, FibreIndicators)
 
 
 template <typename TFibreValues, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Size<SparseString<TFibreValues, TSpec> const>::Type
+inline typename Size<SparseString<TFibreValues, TSpec> const>::Type
 length(SparseString<TFibreValues, TSpec> const & string)
 {
     return string._length;
diff --git a/include/seqan/index/index_fm_stree.h b/include/seqan/index/index_fm_stree.h
index f1d64a4..956c17f 100644
--- a/include/seqan/index/index_fm_stree.h
+++ b/include/seqan/index/index_fm_stree.h
@@ -56,18 +56,18 @@ struct HistoryStackFM_
     TSize       repLen;
     TAlphabet   lastChar;
 
-    SEQAN_HOST_DEVICE
+   
     HistoryStackFM_() {}
 
     template <typename TSize_, typename TAlphabet_>
-    SEQAN_HOST_DEVICE
+   
     HistoryStackFM_(Pair<TSize_> const &_range, TSize_ _repLen, TAlphabet_ _lastChar):
         range(_range),
         repLen(_repLen),
         lastChar(_lastChar)
     {}
 
-    SEQAN_HOST_DEVICE
+   
     HistoryStackFM_ const &
     operator=(HistoryStackFM_ const & _origin)
     {
@@ -86,42 +86,48 @@ template <typename TSize, typename TAlphabet>
 struct VertexFM
 {
     Pair<TSize> range;
+    TSize       smaller;
     TSize       repLen;
     TAlphabet   lastChar;
 
-    SEQAN_HOST_DEVICE
+   
     VertexFM() :
         range(0, 0),
+        smaller(0),
         repLen(0),
         lastChar(0)
     {}
 
-    SEQAN_HOST_DEVICE
+   
     VertexFM(MinimalCtor) :
         range(0, 0),
+        smaller(0),
         repLen(0),
         lastChar(0)
     {}
 
-    SEQAN_HOST_DEVICE
-    VertexFM(Pair<TSize> newCurrentRange, TSize newRepLen, TAlphabet newChar) :
+   
+    VertexFM(Pair<TSize> newCurrentRange, TSize newSmallerValue, TSize newRepLen, TAlphabet newChar) :
         range(newCurrentRange),
+        smaller(newSmallerValue),
         repLen(newRepLen),
         lastChar(newChar)
     {}
 
-    SEQAN_HOST_DEVICE
+   
     VertexFM(VertexFM const & other) :
         range(other.range),
+        smaller(other.smaller),
         repLen(other.repLen),
         lastChar(other.lastChar)
     {}
 
-    SEQAN_HOST_DEVICE inline
+    inline
     VertexFM &
     operator = (VertexFM const & _origin)
     {
         range = _origin.range;
+        smaller = _origin.smaller;
         repLen = _origin.repLen;
         lastChar = _origin.lastChar;
         return *this;
@@ -178,7 +184,7 @@ struct EdgeLabel<Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TSpec
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TOccSpec, typename TIndexSpec>
-SEQAN_HOST_DEVICE inline void _indexRequireTopDownIteration(Index<TText, FMIndex<TOccSpec, TIndexSpec> > & index)
+inline void _indexRequireTopDownIteration(Index<TText, FMIndex<TOccSpec, TIndexSpec> > & index)
 {
     indexRequire(index, FibreSALF());
 }
@@ -212,7 +218,7 @@ begin(Index<TText, FMIndex<TOccSpec, TIndexSpec> > const & index, TSpec const /*
 // ----------------------------------------------------------------------------
 
 template <typename TAlphabet, typename TSize>
-SEQAN_HOST_DEVICE inline bool _isRoot(VertexFM<TAlphabet, TSize> const & value)
+inline bool _isRoot(VertexFM<TAlphabet, TSize> const & value)
 {
     return _isSizeInval(value.range.i2);
 }
@@ -222,7 +228,7 @@ SEQAN_HOST_DEVICE inline bool _isRoot(VertexFM<TAlphabet, TSize> const & value)
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec, typename TDfsOrder>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 _isLeaf(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TSpec> > const & it,
         VSTreeIteratorTraits<TDfsOrder, False> const)
 {
@@ -230,7 +236,7 @@ _isLeaf(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TSpec> > const
 }
 
 template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec, typename TDfsOrder>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 _isLeaf(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TSpec> > const & it,
         VSTreeIteratorTraits<TDfsOrder, True> const)
 {
@@ -242,14 +248,24 @@ _isLeaf(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TSpec> > const
 // Function _getNodeByChar()                                         [Iterator]
 // ----------------------------------------------------------------------------
 
-template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec, typename TChar>
-SEQAN_HOST_DEVICE inline bool
+// Index<TText, FMIndex<TSpec,  > >
+
+/*template <typename TText, typename TOccSpec, typename TLengthSum, typename TSpec, typename TSize, typename TChar>
+inline bool
+_getNodeByChar(Iter<Index<TText, FMIndex<TOccSpec, FMIndexConfig<TOccSpec, TLengthSum> > >, VSTree<TopDown<TSpec> > > const & it,
+               typename VertexDescriptor<Index<TText, FMIndex<TOccSpec, FMIndexConfig<TOccSpec, TLengthSum> > > >::Type const & vDesc,
+               Pair<typename Size<Index<TText, FMIndex<TOccSpec, FMIndexConfig<TOccSpec, TLengthSum> > > >::Type> & _range,
+               TSize & smaller,
+               TChar c)*/
+template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec, typename TSize, typename TChar>
+inline bool
 _getNodeByChar(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<TSpec> > > const & it,
                typename VertexDescriptor<Index<TText, FMIndex<TOccSpec, TIndexSpec> > >::Type const & vDesc,
                Pair<typename Size<Index<TText, FMIndex<TOccSpec, TIndexSpec> > >::Type> & _range,
+               TSize & smaller,
                TChar c)
 {
-    typedef Index<TText, FMIndex<TOccSpec, TIndexSpec> >        TIndex;
+    typedef Index<TText, FMIndex<TOccSpec, TIndexSpec/*FMIndexConfig<TOccSpec, TLengthSum> */> >        TIndex;
     typedef typename Fibre<TIndex, FibreLF>::Type               TLF;
 
     TIndex const & index = container(it);
@@ -257,8 +273,10 @@ _getNodeByChar(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown
 
     _range = range(index, vDesc);
 
-    _range.i1 = lf(_range.i1, c);
-    _range.i2 = lf(_range.i2, c);
+    TSize _smaller;
+    _range.i1 = lf(_range.i1, c, _smaller);
+    _range.i2 = lf(_range.i2, c, smaller);
+    smaller -= _smaller;
 
     return _range.i1 < _range.i2;
 }
@@ -268,19 +286,22 @@ _getNodeByChar(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec, typename TChar>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 _goDownChar(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<TSpec> > > & it, TChar c)
 {
-    typedef Index<TText, FMIndex<TOccSpec, TIndexSpec> >        TIndex;
-    typedef Pair<typename Size<TIndex>::Type>                   TRange;
+    typedef Index<TText, FMIndex<TOccSpec, TIndexSpec> >    TIndex;
+    typedef typename Size<TIndex>::Type                     TSize;
+    typedef Pair<TSize>                                     TRange;
 
     TRange _range;
+    TSize _smaller = 0;
 
-    if (_getNodeByChar(it, value(it), _range, c))
+    if (_getNodeByChar(it, value(it), _range, _smaller, c))
     {
         _historyPush(it);
 
         value(it).range = _range;
+        value(it).smaller = _smaller;
         value(it).lastChar = c;
         value(it).repLen++;
 
@@ -296,7 +317,7 @@ _goDownChar(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<TS
 
 // TODO(esiragusa): Implement this.
 template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec, typename TDfsOrder>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 _goDown(Iter<Index<TText, FMIndex<TOccSpec,TIndexSpec> >, VSTree<TopDown<TSpec> > > & it,
         VSTreeIteratorTraits<TDfsOrder, False> const)
 {
@@ -304,7 +325,7 @@ _goDown(Iter<Index<TText, FMIndex<TOccSpec,TIndexSpec> >, VSTree<TopDown<TSpec>
 }
 
 template <typename TText, typename TOccSpec, typename TSpec, typename TIndexSpec, typename TDfsOrder>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 _goDown(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<TSpec> > > & it,
         VSTreeIteratorTraits<TDfsOrder, True> const)
 {
@@ -312,11 +333,8 @@ _goDown(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<TSpec>
     typedef typename Value<TIndex>::Type                    TAlphabet;
 //    typedef typename ValueSize<TAlphabet>::Type             TAlphabetSize;
 
-    // NOTE(esiragusa): isLeaf() early exit is slower on CUDA.
     // NOTE(esiragusa): this should be faster only for texts over small alphabets consisting of few/long sequences.
-#ifndef __CUDA_ARCH__
     if (isLeaf(it)) return false;
-#endif
 
     // TODO(esiragusa): Fix increment for alphabets with qualities.
 //    for (TAlphabetSize c = 0; c < ValueSize<TAlphabet>::VALUE; ++c)
@@ -331,13 +349,14 @@ _goDown(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<TSpec>
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec, typename TString, typename TSize>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 _goDownString(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<TSpec> > > &it,
               TString const & string,
               TSize & lcp)
 {
     typedef Index<TText, FMIndex<TOccSpec, TIndexSpec> >        TIndex;
-    typedef Pair<typename Size<TIndex>::Type>                   TRange;
+    typedef typename Size<TIndex>::Type                         TSize2;
+    typedef Pair<TSize2>                                        TRange;
     typedef typename Iterator<TString const, Standard>::Type    TStringIter;
 
     _historyPush(it);
@@ -348,16 +367,13 @@ _goDownString(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<
     for (lcp = 0; stringIt != stringEnd; ++stringIt, ++lcp)
     {
         TRange _range;
+        TSize2 _smaller = 0;
 
-        // NOTE(esiragusa): isLeaf() early exit is slower on CUDA.
         // NOTE(esiragusa): this should be faster only for texts over small alphabets consisting of few/long sequences.
-#ifdef __CUDA_ARCH__
-        if (!_getNodeByChar(it, value(it), _range, value(stringIt))) break;
-#else
-        if (isLeaf(it) || !_getNodeByChar(it, value(it), _range, value(stringIt))) break;
-#endif
+        if (isLeaf(it) || !_getNodeByChar(it, value(it), _range, _smaller, value(stringIt))) break;
 
         value(it).range = _range;
+        value(it).smaller = _smaller;
     }
 
     value(it).repLen += lcp;
@@ -373,7 +389,7 @@ _goDownString(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<
 
 // TODO(esiragusa): Implement this.
 template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec, typename TDfsOrder>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 _goRight(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<TSpec> > > & it,
          VSTreeIteratorTraits<TDfsOrder, False> const)
 {
@@ -381,28 +397,31 @@ _goRight(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<TSpec
 }
 
 template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec, typename TDfsOrder>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 _goRight(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<TSpec> > > & it,
          VSTreeIteratorTraits<TDfsOrder, True> const)
 {
-    typedef Index<TText, FMIndex<TOccSpec, TIndexSpec> >        TIndex;
-    typedef typename Value<TIndex>::Type                        TAlphabet;
-    typedef Pair<typename Size<TIndex>::Type>                   TRange;
+    typedef Index<TText, FMIndex<TOccSpec, TIndexSpec> >    TIndex;
+    typedef typename Value<TIndex>::Type                    TAlphabet;
+    typedef typename Size<TIndex>::Type                     TSize;
+    typedef Pair<TSize>                                     TRange;
 
-    typedef typename VertexDescriptor<TIndex>::Type             TVertexDescriptor;
+    typedef typename VertexDescriptor<TIndex>::Type         TVertexDescriptor;
 
     if (isRoot(it)) return false;
 
     TVertexDescriptor parentDesc = nodeUp(it);
     TRange _range;
+    TSize _smaller = 0;
 
     // TODO(esiragusa): Fix increment for alphabets with qualities.
 //    for (TAlphabetSize c = ordValue(value(it).lastChar) + 1; c < ValueSize<TAlphabet>::VALUE; ++c)
     for (value(it).lastChar++; ordValue(value(it).lastChar) < ValueSize<TAlphabet>::VALUE; value(it).lastChar++)
     {
-        if (_getNodeByChar(it, parentDesc, _range, value(it).lastChar))
+        if (_getNodeByChar(it, parentDesc, _range, _smaller, value(it).lastChar))
         {
             value(it).range = _range;
+            value(it).smaller = _smaller;
 
             return true;
         }
@@ -416,7 +435,7 @@ _goRight(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<TSpec
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 _goUp(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<TSpec> > > & it)
 {
     if (isRoot(it)) return false;
@@ -426,7 +445,7 @@ _goUp(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<TSpec> >
 }
 
 template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 _goUp(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<ParentLinks<TSpec> > > > & it)
 {
     if (isRoot(it)) return false;
@@ -440,7 +459,7 @@ _goUp(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree<TopDown<ParentLi
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TOccSpec, typename TIndexSpec, class TSpec>
-SEQAN_HOST_DEVICE inline typename VertexDescriptor<Index<TText, FMIndex<TOccSpec, TIndexSpec> > >::Type
+inline typename VertexDescriptor<Index<TText, FMIndex<TOccSpec, TIndexSpec> > >::Type
 nodeUp(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree< TopDown< ParentLinks<TSpec> > > > const & it)
 {
     typedef Index<TText, FMIndex<TOccSpec, TIndexSpec> >    TIndex;
@@ -457,14 +476,14 @@ nodeUp(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec> >, VSTree< TopDown< Paren
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 _historyPush(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec > >, VSTree<TopDown<TSpec> > > & it)
 {
     it._parentDesc = value(it);
 }
 
 template < typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 _historyPush(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec > >, VSTree<TopDown<ParentLinks<TSpec> > > > & it)
 {
     typedef Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec > >, VSTree<TopDown<ParentLinks<TSpec> > > > TIter;
@@ -483,7 +502,7 @@ _historyPush(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec > >, VSTree<TopDown<
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 _historyPop(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec > >, VSTree<TopDown<TSpec> > > & it)
 {
     value(it).range = back(it.history).range;
@@ -492,7 +511,7 @@ _historyPop(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec > >, VSTree<TopDown<T
 }
 
 template < typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 _historyPop(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec > >, VSTree<TopDown<ParentLinks<TSpec> > > > & it)
 {
     value(it).range = back(it.history).range;
@@ -506,7 +525,7 @@ _historyPop(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec > >, VSTree<TopDown<P
 // ----------------------------------------------------------------------------
 
 template <typename TIndex, typename TAlphabet, typename TSize>
-SEQAN_HOST_DEVICE inline typename Size<TIndex>::Type
+inline typename Size<TIndex>::Type
 repLength(TIndex const &, VertexFM<TAlphabet, TSize> const & vDesc)
 {
     return vDesc.repLen;
@@ -517,7 +536,7 @@ repLength(TIndex const &, VertexFM<TAlphabet, TSize> const & vDesc)
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline typename EdgeLabel<Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec > >, VSTree<TopDown<TSpec> > > >::Type
+inline typename EdgeLabel<Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec > >, VSTree<TopDown<TSpec> > > >::Type
 parentEdgeLabel(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec > >, VSTree<TopDown<TSpec> > > const & it)
 {
     return value(it).lastChar;
@@ -528,7 +547,7 @@ parentEdgeLabel(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec > >, VSTree<TopDo
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TOccSpec, typename TIndexSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Value<Index<TText, FMIndex<TOccSpec, TIndexSpec > > >::Type
+inline typename Value<Index<TText, FMIndex<TOccSpec, TIndexSpec > > >::Type
 parentEdgeFirstChar(Iter<Index<TText, FMIndex<TOccSpec, TIndexSpec > >, VSTree<TopDown<TSpec> > > const & it)
 {
     return value(it).lastChar;
diff --git a/include/seqan/index/index_pizzachili.h b/include/seqan/index/index_pizzachili.h
index a5b6a90..9d5d2e1 100644
--- a/include/seqan/index/index_pizzachili.h
+++ b/include/seqan/index/index_pizzachili.h
@@ -54,9 +54,11 @@ namespace seqan {
  * @see PizzaChiliIndex
  *
  * @tag PizzaChiliIndexFibres#PizzaChiliText
+ * @deprecated Module is outdated and is not maintained anymore. Will presumably be removed in the next major release.
  * @brief The original text the index is based on.
  *
  * @tag PizzaChiliIndexFibres#PizzaChiliCompressed
+ * @deprecated Module is outdated and is not maintained anymore. Will presumably be removed in the next major release.
  * @brief The compressed suffix array.
  */
 
@@ -71,6 +73,8 @@ typedef FibrePizzaChiliCompressed PizzaChiliCompressed;
 /*!
  * @class PizzaChiliIndex Pizza & Chili Index
  *
+ * @deprecated Module is outdated and is not maintained anymore. Will presumably be removed in the next major release.
+ *
  * @extends Index
  *
  * @headerfile <seqan/index.h>
@@ -99,6 +103,18 @@ public:
     impl::index_t index_handle;
     Holder<String<TValue, PizzaChili<TSpec> > > text;
 
+    /*!
+     * @fn PizzaChiliIndex::Index
+     * @brief Constructor
+     *
+     * @signature Index::Index();
+     * @signature Index::Index(index);
+     * @signature Index::Index(text);
+     *
+     * @param[in] index Other Index object to copy from.
+     * @param[in] text  The text to be indexed.
+     */
+
     Index() : index_handle(0), text() { }
 
     Index(Index& other) : index_handle(0), text() {
diff --git a/include/seqan/index/index_pizzachili_string.h b/include/seqan/index/index_pizzachili_string.h
index 9957c57..c1afd2b 100644
--- a/include/seqan/index/index_pizzachili_string.h
+++ b/include/seqan/index/index_pizzachili_string.h
@@ -44,6 +44,8 @@ namespace seqan {
 /*!
  * @class PizzaChiliString Pizza & Chili String
  *
+ * @deprecated Module is outdated and is not maintained anymore. Will presumably be removed in the next major release.
+ *
  * @extends String
  *
  * @headerfile <seqan/index.h>
diff --git a/include/seqan/index/index_qgram.h b/include/seqan/index/index_qgram.h
index d0983b6..670ddca 100644
--- a/include/seqan/index/index_qgram.h
+++ b/include/seqan/index/index_qgram.h
@@ -225,14 +225,6 @@ struct Fibre< Index<TText, IndexQGram<TShapeSpec, TSpec> >, FibreBucketMap>
     typedef Nothing Type;
 };
 
-#ifdef PLATFORM_WINDOWS_VS
-#pragma warning( push )
-// Disable warning C4521 locally (multiple copy constructors).
-#pragma warning( disable: 4521 )
-// Disable warning C4522 locally (multiple assignment operators).
-#pragma warning( disable: 4522 )
-#endif  // PLATFORM_WINDOWS_VS
-
 template < typename TText_, typename TShapeSpec, typename TSpec >
 class Index<TText_, IndexQGram<TShapeSpec, TSpec> > {
 public:
@@ -257,6 +249,19 @@ public:
     TBucketMap        bucketMap;    // bucketMap table (used by open-addressing index)
     TSize            stepSize;    // store every <stepSize>'th q-gram in the index
 
+    /*!
+     * @fn IndexQGram::Index
+     * @brief Constructor
+     *
+     * @signature Index::Index();
+     * @signature Index::Index(index);
+     * @signature Index::Index(text[, shape]);
+     *
+     * @param[in] index Other Index object to copy from.
+     * @param[in] text  The text to be indexed.
+     * @param[in] shape The q gram @link Shape @endlink to be applied. (optional)
+     */
+
     Index():
     stepSize(1) {}
 
@@ -303,11 +308,6 @@ public:
     stepSize(1) {}
 };
 
-#ifdef PLATFORM_WINDOWS_VS
-// Reset warning state to previous values for C4521, C4522.
-#pragma warning( pop )
-#endif  // PLATFORM_WINDOWS_VS
-
 template <typename TText, typename TShapeSpec, typename TSpec>
 SEQAN_CONCEPT_IMPL((Index<TText, IndexQGram<TShapeSpec, TSpec> >), (StringTrieConcept));
 
diff --git a/include/seqan/index/index_qgram_openaddressing.h b/include/seqan/index/index_qgram_openaddressing.h
index 3ae9094..b930403 100644
--- a/include/seqan/index/index_qgram_openaddressing.h
+++ b/include/seqan/index/index_qgram_openaddressing.h
@@ -81,11 +81,6 @@ namespace seqan
  * @var double OpenAddressingQGramIndex::alpha
  * @brief Load factor.  Controls space/time-tradeoff and must be greater 1.  Default value is 1.6.
  */
-#ifdef PLATFORM_WINDOWS_VS
-#pragma warning( push )
-// Disable warning C4521 locally (multiple copy constructors).
-#pragma warning( disable: 4521 )
-#endif  // PLATFORM_WINDOWS_VS
 
     template < typename TObject, typename TShapeSpec >
     class Index<TObject, IndexQGram<TShapeSpec, OpenAddressing> >
@@ -116,6 +111,19 @@ namespace seqan
 
         double            alpha;        // for m entries the hash map has at least size alpha*m
 
+        /*!
+         * @fn OpenAddressingQGramIndex::Index
+         * @brief Constructor
+         *
+         * @signature Index::Index();
+         * @signature Index::Index(index);
+         * @signature Index::Index(text[, shape]);
+         *
+         * @param[in] index Other Index object to copy from.
+         * @param[in] text  The text to be indexed.
+         * @param[in] shape The qgram @link Shape @endlink to be applied.
+         */
+
         Index():
             stepSize(1),
             alpha(defaultAlpha) {}
@@ -170,10 +178,6 @@ namespace seqan
             stepSize(1),
             alpha(defaultAlpha) {}
     };
-#ifdef PLATFORM_WINDOWS_VS
-// Enable warning C4521 again (multiple copy operators).
-#pragma warning( pop )
-#endif  // PLATFORM_WINDOWS_VS
 
 
     template < typename TObject, typename TShapeSpec >
diff --git a/include/seqan/index/index_sa_stree.h b/include/seqan/index/index_sa_stree.h
index e1c93cf..e521451 100644
--- a/include/seqan/index/index_sa_stree.h
+++ b/include/seqan/index/index_sa_stree.h
@@ -116,21 +116,21 @@ struct VertexSA : public VertexEsa<TSize>
     TSize       repLen;
     TAlphabet   lastChar;
 
-    SEQAN_HOST_DEVICE
+   
     VertexSA() :
         TBase(),
         repLen(0),
         lastChar(0)
     {}
 
-    SEQAN_HOST_DEVICE
+   
     VertexSA(MinimalCtor) :
         TBase(MinimalCtor()),
         repLen(0),
         lastChar(0)
     {}
 
-    SEQAN_HOST_DEVICE
+   
     VertexSA(VertexSA const & other) :
         TBase(other),
         repLen(other.repLen),
@@ -190,7 +190,7 @@ struct DefaultFinder< Index<TText, IndexSa<TIndexSpec> > >
 // ============================================================================
 
 template <typename TText, typename TIndexSpec>
-SEQAN_HOST_DEVICE inline void _indexRequireTopDownIteration(Index<TText, IndexSa<TIndexSpec> > & index)
+inline void _indexRequireTopDownIteration(Index<TText, IndexSa<TIndexSpec> > & index)
 {
     indexRequire(index, FibreSA());
 }
@@ -202,7 +202,7 @@ void _indexRequireTopDownIteration(Index<TText, IndexSa<InfixSegment> > &)
 }
 
 template <typename TText, typename TIndexSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline typename SAValue<Index<TText, IndexSa<TIndexSpec> > >::Type
+inline typename SAValue<Index<TText, IndexSa<TIndexSpec> > >::Type
 _lastOccurrence(Iter<Index<TText, IndexSa<TIndexSpec> >, VSTree<TSpec> > const &it)
 {
     if (_isSizeInval(value(it).range.i2))
@@ -265,7 +265,7 @@ goDownSkipSingletons(Iter<TIndex, VSTree< TopDown<TSpec> > > &it)
 
 // is this a leaf? (hide empty $-edges)
 template <typename TText, typename TIndexSpec, typename TSpec, typename TDfsOrder>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 _isLeaf(Iter<Index<TText, IndexSa<TIndexSpec> >, VSTree<TSpec> > const & it,
         VSTreeIteratorTraits<TDfsOrder, True> const)
 {
@@ -285,7 +285,7 @@ _isLeaf(Iter<Index<TText, IndexSa<TIndexSpec> >, VSTree<TSpec> > const & it,
 }
 
 template <typename TIndex, typename TSize, typename TAlphabet>
-SEQAN_HOST_DEVICE inline typename Size<TIndex>::Type
+inline typename Size<TIndex>::Type
 repLength(TIndex const &, VertexSA<TSize, TAlphabet> const & vDesc)
 {
     return vDesc.repLen;
@@ -306,7 +306,7 @@ parentEdgeFirstChar(Iter<Index<TText, IndexSa<TIndexSpec> >, VSTree<TopDown<TSpe
 }
 
 template <typename TText, typename TIndexSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline void goRoot(Iter<Index<TText, IndexSa<TIndexSpec> >, VSTree<TSpec> > & it)
+inline void goRoot(Iter<Index<TText, IndexSa<TIndexSpec> >, VSTree<TSpec> > & it)
 {
     _historyClear(it);
     clear(it);
diff --git a/include/seqan/index/index_shims.h b/include/seqan/index/index_shims.h
index 02e874d..c4d0c3b 100644
--- a/include/seqan/index/index_shims.h
+++ b/include/seqan/index/index_shims.h
@@ -687,7 +687,7 @@ inline bool indexCreate(Index<TText, TSpec> & index, FibreSA, Trie)
  * @return bool <tt>true</tt>, iff the fibre is present.
  */
     template <typename TText, typename TSpec, typename TFibre>
-    SEQAN_HOST_DEVICE inline bool indexSupplied(Index<TText, TSpec> &index, Tag<TFibre> const fibre) {
+    inline bool indexSupplied(Index<TText, TSpec> &index, Tag<TFibre> const fibre) {
         return !empty(getFibre(index, fibre));
     }
 
@@ -822,23 +822,6 @@ inline bool indexCreate(Index<TText, TSpec> & index, FibreSA, Trie)
         return open(string, fileName, OPEN_RDONLY);
     }
 
-#ifdef PLATFORM_CUDA
-    template <typename TChar, typename TAlloc>
-    inline bool open(thrust::device_vector<TChar, TAlloc> & me, const char *fileName, int openMode)
-    {
-        String<TChar> str;
-        if (!open(str, fileName, openMode)) return false;
-        assign(me, str);
-        return true;
-    }
-
-    template <typename TChar, typename TAlloc>
-    inline bool open(thrust::device_vector<TChar, TAlloc> & me, const char *fileName)
-    {
-        return open(me, fileName, OPEN_RDONLY);
-    }
-#endif
-
     // ATTENTION:
     // This implementation of open doesn't work with external memory StringSets (External<>, MMap<>)
     // If you need a persistent external StringSet you have to use a Owner<ConcatDirect<> > StringSet.
@@ -850,7 +833,7 @@ inline bool indexCreate(Index<TText, TSpec> & index, FibreSA, Trie)
         CharString name;
         while (true)
         {
-            sprintf(id, ".%u", i);
+            snprintf(id, 12, ".%u", i);
             name = fileName;
             append(name, id);
             {
@@ -949,7 +932,7 @@ inline bool indexCreate(Index<TText, TSpec> & index, FibreSA, Trie)
         CharString name;
         for(unsigned i = 0; i < length(multi); ++i)
         {
-            sprintf(id, ".%u", i);
+            snprintf(id, 12, ".%u", i);
             name = fileName;
             append(name, &(id[0]));
             if (!save(multi[i], toCString(name), openMode))
diff --git a/include/seqan/index/index_view.h b/include/seqan/index/index_view.h
index d12a3ab..b7d2ab5 100644
--- a/include/seqan/index/index_view.h
+++ b/include/seqan/index/index_view.h
@@ -525,56 +525,56 @@ struct HistoryStack_<Iter<Index<StringSet<ContainerView<TText, TViewSpec>, TSSet
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TViewSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Fibre<Index<ContainerView<TText, TViewSpec>, TSpec>, FibreText>::Type &
+inline typename Fibre<Index<ContainerView<TText, TViewSpec>, TSpec>, FibreText>::Type &
 getFibre(Index<ContainerView<TText, TViewSpec>, TSpec> & index, FibreText)
 {
     return index.text;
 }
 
 template <typename TText, typename TViewSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Fibre<Index<ContainerView<TText, TViewSpec>, TSpec> const, FibreText>::Type &
+inline typename Fibre<Index<ContainerView<TText, TViewSpec>, TSpec> const, FibreText>::Type &
 getFibre(Index<ContainerView<TText, TViewSpec>, TSpec> const & index, FibreText)
 {
     return index.text;
 }
 
 template <typename TText, typename TViewSpec, typename TSSetSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Fibre<Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec>, FibreText>::Type &
+inline typename Fibre<Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec>, FibreText>::Type &
 getFibre(Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec> & index, FibreText)
 {
     return index.text;
 }
 
 template <typename TText, typename TViewSpec, typename TSSetSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Fibre<Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec> const, FibreText>::Type &
+inline typename Fibre<Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec> const, FibreText>::Type &
 getFibre(Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec> const & index, FibreText)
 {
     return index.text;
 }
 
 template <typename TText, typename TViewSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Fibre<Index<ContainerView<TText, TViewSpec>, TSpec>, FibreRawText>::Type &
+inline typename Fibre<Index<ContainerView<TText, TViewSpec>, TSpec>, FibreRawText>::Type &
 getFibre(Index<ContainerView<TText, TViewSpec>, TSpec> & index, FibreRawText)
 {
     return concat(getFibre(index, FibreText()));
 }
 
 template <typename TText, typename TViewSpec, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline typename Fibre<Index<ContainerView<TText, TViewSpec>, TSpec> const, FibreRawText>::Type &
+inline typename Fibre<Index<ContainerView<TText, TViewSpec>, TSpec> const, FibreRawText>::Type &
 getFibre(Index<ContainerView<TText, TViewSpec>, TSpec> const & index, FibreRawText)
 {
     return concat(getFibre(index, FibreText()));
 }
 
 template <typename TText, typename TViewSpec, typename TSSetSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Fibre<Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec>, FibreRawText>::Type &
+inline typename Fibre<Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec>, FibreRawText>::Type &
 getFibre(Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec> & index, FibreRawText)
 {
     return concat(getFibre(index, FibreText()));
 }
 
 template <typename TText, typename TViewSpec, typename TSSetSpec, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Fibre<Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec> const, FibreRawText>::Type &
+inline typename Fibre<Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec> const, FibreRawText>::Type &
 getFibre(Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec> const & index, FibreRawText)
 {
     return concat(getFibre(index, FibreText()));
@@ -585,7 +585,7 @@ getFibre(Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec> con
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TViewSpec, typename TSpec, typename TFibre>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 indexRequire(Index<ContainerView<TText, TViewSpec>, TSpec> & index, Tag<TFibre> const fibre)
 {
     bool supplied = indexSupplied(index, fibre);
@@ -594,7 +594,7 @@ indexRequire(Index<ContainerView<TText, TViewSpec>, TSpec> & index, Tag<TFibre>
 }
 
 template <typename TText, typename TViewSpec, typename TSSetSpec, typename TSpec, typename TFibre>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 indexRequire(Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec> & index, Tag<TFibre> const fibre)
 {
     bool supplied = indexSupplied(index, fibre);
@@ -607,7 +607,7 @@ indexRequire(Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec>
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TViewSpec, typename TSpec, typename TConfig, typename TFibre>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 indexRequire(Index<ContainerView<TText, TViewSpec>, FMIndex<TSpec, TConfig> > & index, Tag<TFibre> const fibre)
 {
     bool supplied = indexSupplied(index, fibre);
@@ -616,7 +616,7 @@ indexRequire(Index<ContainerView<TText, TViewSpec>, FMIndex<TSpec, TConfig> > &
 }
 
 template <typename TText, typename TViewSpec, typename TSSetSpec, typename TSpec, typename TConfig, typename TFibre>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 indexRequire(Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, FMIndex<TSpec, TConfig> > & index, Tag<TFibre> const fibre)
 {
     bool supplied = indexSupplied(index, fibre);
@@ -629,7 +629,7 @@ indexRequire(Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, FMInde
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TViewSpec, typename TSpec, typename TFibre>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 indexCreate(Index<ContainerView<TText, TViewSpec>, TSpec> & /* index */, Tag<TFibre> const /* fibre */)
 {
     SEQAN_ASSERT_MSG(false, "Fibre cannot be created on a view.");
@@ -637,7 +637,7 @@ indexCreate(Index<ContainerView<TText, TViewSpec>, TSpec> & /* index */, Tag<TFi
 }
 
 template <typename TText, typename TViewSpec, typename TSSetSpec, typename TSpec, typename TFibre>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 indexCreate(Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec> & /* index */, Tag<TFibre> const /* fibre */)
 {
     SEQAN_ASSERT_MSG(false, "Fibre cannot be created on a view.");
@@ -649,7 +649,7 @@ indexCreate(Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec>
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TViewSpec, typename TSpec, typename TConfig, typename TFibre>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 indexCreate(Index<ContainerView<TText, TViewSpec>, FMIndex<TSpec, TConfig> > & /* index */, Tag<TFibre> const /* fibre */)
 {
     SEQAN_ASSERT_MSG(false, "Fibre cannot be created on a view.");
@@ -657,7 +657,7 @@ indexCreate(Index<ContainerView<TText, TViewSpec>, FMIndex<TSpec, TConfig> > & /
 }
 
 template <typename TText, typename TViewSpec, typename TSSetSpec, typename TSpec, typename TConfig, typename TFibre>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 indexCreate(Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, FMIndex<TSpec, TConfig> > & /* index */, Tag<TFibre> const /* fibre */)
 {
     SEQAN_ASSERT_MSG(false, "Fibre cannot be created on a view.");
@@ -669,28 +669,28 @@ indexCreate(Index<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, FMIndex
 // ----------------------------------------------------------------------------
 
 template <typename TText, typename TViewSpec, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline typename Fibre<CompressedSA<ContainerView<TText, TViewSpec>, TSpec, TConfig>, FibreLF>::Type &
+inline typename Fibre<CompressedSA<ContainerView<TText, TViewSpec>, TSpec, TConfig>, FibreLF>::Type &
 getFibre(CompressedSA<ContainerView<TText, TViewSpec>, TSpec, TConfig> & sa, FibreLF)
 {
     return sa.lf;
 }
 
 template <typename TText, typename TViewSpec, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline typename Fibre<CompressedSA<ContainerView<TText, TViewSpec>, TSpec, TConfig> const, FibreLF>::Type &
+inline typename Fibre<CompressedSA<ContainerView<TText, TViewSpec>, TSpec, TConfig> const, FibreLF>::Type &
 getFibre(CompressedSA<ContainerView<TText, TViewSpec>, TSpec, TConfig> const & sa, FibreLF)
 {
     return sa.lf;
 }
 
 template <typename TText, typename TViewSpec, typename TSSetSpec, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline typename Fibre<CompressedSA<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec, TConfig>, FibreLF>::Type &
+inline typename Fibre<CompressedSA<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec, TConfig>, FibreLF>::Type &
 getFibre(CompressedSA<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec, TConfig> & sa, FibreLF)
 {
     return sa.lf;
 }
 
 template <typename TText, typename TViewSpec, typename TSSetSpec, typename TSpec, typename TConfig>
-SEQAN_HOST_DEVICE inline typename Fibre<CompressedSA<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec, TConfig> const, FibreLF>::Type &
+inline typename Fibre<CompressedSA<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec, TConfig> const, FibreLF>::Type &
 getFibre(CompressedSA<StringSet<ContainerView<TText, TViewSpec>, TSSetSpec>, TSpec, TConfig> const & sa, FibreLF)
 {
     return sa.lf;
diff --git a/include/seqan/index/index_wotd.h b/include/seqan/index/index_wotd.h
index f099a1e..1ec2751 100644
--- a/include/seqan/index/index_wotd.h
+++ b/include/seqan/index/index_wotd.h
@@ -210,6 +210,18 @@ namespace seqan
         TSize            sentinelBound;
         bool            interSentinelNodes;    // should virtually one (true) $-sign or many (false) $_i-signs be appended to the strings in text
 
+        /*!
+         * @fn IndexWotd::Index
+         * @brief Constructor
+         *
+         * @signature Index::Index();
+         * @signature Index::Index(index);
+         * @signature Index::Index(text);
+         *
+         * @param[in] index    Other Index object to copy from.
+         * @param[in] text     The text to be indexed.
+         */
+
         Index():
             interSentinelNodes(false) {}
 
diff --git a/include/seqan/index/pizzachili_api.h b/include/seqan/index/pizzachili_api.h
index b8c0ef8..aabefc1 100644
--- a/include/seqan/index/pizzachili_api.h
+++ b/include/seqan/index/pizzachili_api.h
@@ -69,6 +69,8 @@ struct PizzaChiliCodeProvider {
  *
  * @tag PizzaChiliIndexTags#PizzaChiliSada
  *
+ * @deprecated Module is outdated and is not maintained anymore. Will presumably be removed in the next major release.
+ *
  * @brief the compressed suffix array index.
  *
  * @section Remarks
@@ -77,10 +79,14 @@ struct PizzaChiliCodeProvider {
  *
  * @tag PizzaChiliIndexTags#PizzaChiliAF
  *
+ * @deprecated Module is outdated and is not maintained anymore. Will presumably be removed in the next major release.
+ *
  * @brief The alphabet-friendly FM index.
  *
  * @tag PizzaChiliIndexTags#PizzaChiili_RSA
  *
+ * @deprecated Module is outdated and is not maintained anymore. Will presumably be removed in the next major release.
+ *
  * @brief The repair suffix array index.
  *
  * @section Remarks
@@ -89,6 +95,8 @@ struct PizzaChiliCodeProvider {
  *
  * @tag PizzaChiliIndexTags#PizzaChiliSA
  *
+ * @deprecated Module is outdated and is not maintained anymore. Will presumably be removed in the next major release.
+ *
  * @brief The simple suffix array index.
  *
  * @section Remarks
@@ -97,10 +105,14 @@ struct PizzaChiliCodeProvider {
  *
  * @tag PizzaChiliIndexTags#PizzaChiliFM
  *
+ * @deprecated Module is outdated and is not maintained anymore. Will presumably be removed in the next major release.
+ *
  * @brief The FM (full-text in minute space) index.
  *
  * @tag PizzaChiliIndexTags#PizzaChiliCcsa
  *
+ * @deprecated Module is outdated and is not maintained anymore. Will presumably be removed in the next major release.
+ *
  * @brief The compressed compact suffix array index.
  */
 
diff --git a/include/seqan/index/shape_base.h b/include/seqan/index/shape_base.h
index db5b1d7..0dd8fed 100644
--- a/include/seqan/index/shape_base.h
+++ b/include/seqan/index/shape_base.h
@@ -307,7 +307,7 @@ namespace seqan
         TValue        leftChar;    // leftmost character
 //____________________________________________________________________________
 
-        SEQAN_HOST_DEVICE
+       
         Shape():
             hValue(0),
             XValue(0),
@@ -357,7 +357,7 @@ namespace seqan
  * @return TSize The number of elements of the shape (span) (Metafunction: @link Shape#Size @endlink).
  */
     template <typename TValue, typename TSpec>
-    inline SEQAN_HOST_DEVICE
+    inline
     typename Size< Shape<TValue, TSpec> >::Type
     length(Shape<TValue, TSpec> const &me)
     {
@@ -380,7 +380,7 @@ namespace seqan
  * @endlink function.  For gapped shapes this is the number of '1's.
  */
     template <typename TValue, typename TSpec>
-    inline SEQAN_HOST_DEVICE
+    inline
     typename Size< Shape<TValue, TSpec> >::Type
     weight(Shape<TValue, TSpec> const &me)
     {
@@ -498,13 +498,13 @@ namespace seqan
 
     // loop unrolling ...
     template <typename THValue, typename TValue, typename TIter>
-    SEQAN_HOST_DEVICE inline THValue
+    inline THValue
     _hashFixedShape(THValue hash, TIter &, TValue const, UngappedShape<1> const) {
         return hash;
     }
 
     template <typename THValue, typename TValue, typename TIter, unsigned q>
-    SEQAN_HOST_DEVICE inline THValue
+    inline THValue
     _hashFixedShape(THValue hash, TIter &it, TValue const, UngappedShape<q> const) {
         ++it;
         return _hashFixedShape(
@@ -514,7 +514,7 @@ namespace seqan
 
     // ... for fixed ungapped shapes
     template <typename TValue, unsigned q, typename TIter>
-    SEQAN_HOST_DEVICE inline typename Value< Shape<TValue, UngappedShape<q> > >::Type
+    inline typename Value< Shape<TValue, UngappedShape<q> > >::Type
     hash(Shape<TValue, UngappedShape<q> > &me, TIter it)
     {
         //typedef typename Value< Shape<TValue, UngappedShape<q> > >::Type    THValue;
diff --git a/include/seqan/index/shape_minimizer.h b/include/seqan/index/shape_minimizer.h
index 2807442..a27df7d 100644
--- a/include/seqan/index/shape_minimizer.h
+++ b/include/seqan/index/shape_minimizer.h
@@ -91,7 +91,7 @@ struct WEIGHT<Shape<TValue, MinimizerShape<TSPAN, TWEIGHT, TSpec> > >
 // ----------------------------------------------------------------------------
 
 template <typename TValue, unsigned TSPAN, unsigned TWEIGHT, typename TSpec>
-inline SEQAN_HOST_DEVICE
+inline
 typename Size< Shape<TValue, MinimizerShape<TSPAN, TWEIGHT, TSpec> > >::Type
 weight(Shape<TValue, MinimizerShape<TSPAN, TWEIGHT, TSpec> > const &me)
 {
diff --git a/include/seqan/index/shape_threshold.h b/include/seqan/index/shape_threshold.h
index 0de0e95..c0f8592 100644
--- a/include/seqan/index/shape_threshold.h
+++ b/include/seqan/index/shape_threshold.h
@@ -203,7 +203,7 @@ int qgramThreshold(TShape const & shape, TPatternSize patternLength, TErrors err
         bool intermediate:1;        // this is an intermediate result (beginning with INSERT)
         bool qgramHit:1;            // is this a q-gram hit? (result of the former delta function)
     }
-#ifndef PLATFORM_WINDOWS
+#ifndef STDLIB_VS
     __attribute__((packed))
 #endif
     ;
@@ -222,12 +222,12 @@ int qgramThreshold(TShape const & shape, TPatternSize patternLength, TErrors err
         bool intermediate:1;        // this is an intermediate result (beginning with INSERT)
         bool qgramHit:1;            // is this a q-gram hit? (result of the former delta function)
     }
-#ifndef PLATFORM_WINDOWS
+#ifndef STDLIB_VS
     __attribute__((packed))
 #endif
     ;
 
-#if defined(PLATFORM_WINDOWS) | defined(PLATFORM_CUDA)
+#if defined(STDLIB_VS)
 
     template<typename TValue>
     inline bool isNan(TValue value)
@@ -437,6 +437,71 @@ _getLastPatternProb(TState &, Nothing const &, TPattern const &, int)
 {
 }
 
+template <template <typename, typename> class TState,
+          typename TDistance, typename TFloat,
+          typename TPatternStore,
+          typename TPattern,
+          typename TErr>
+inline void
+_setInsertTransitions(TState<TDistance, TFloat> & state,
+                      TPatternStore const & patternStore,
+                      TPattern const & pattern,
+                      TErr const errors,
+                      TErr const maxErrors)
+{
+    if (errors <= maxErrors)
+        state.transition[SEQAN_INSERT] = _getErrorPatternIndex(patternStore, pattern);
+    else
+        state.transition[SEQAN_INSERT] = -1;
+}
+
+template <template <typename, typename> class TState,
+          typename TFloat,
+          typename TPatternStore,
+          typename TPattern,
+          typename TErr>
+inline void
+_setInsertTransitions(TState<HammingDistance, TFloat> & /*state*/,
+                      TPatternStore const & /*patternStore*/,
+                      TPattern const & /*pattern*/,
+                      TErr const /*errors*/,
+                      TErr const /*maxErrors*/)
+{
+    // no-op
+}
+
+template <template <typename, typename> class TState,
+          typename TDistance, typename TFloat,
+          typename TPatternStore,
+          typename TPattern,
+          typename TErr>
+inline void
+_setDeleteTransitions(TState<TDistance, TFloat> & state,
+                      TPatternStore const & patternStore,
+                      TPattern const & pattern,
+                      TErr const errors,
+                      TErr const maxErrors)
+{
+    if (errors <= maxErrors)
+        state.transition[SEQAN_DELETE] = _getErrorPatternIndex(patternStore, pattern);
+    else
+        state.transition[SEQAN_DELETE] = -1;
+}
+
+template <template <typename, typename> class TState,
+          typename TFloat,
+          typename TPatternStore,
+          typename TPattern,
+          typename TErr>
+inline void
+_setDeleteTransitions(TState<HammingDistance, TFloat> & /*state*/,
+                      TPatternStore const & /*patternStore*/,
+                      TPattern const & /*pattern*/,
+                      TErr const /*errors*/,
+                      TErr const /*maxErrors*/)
+{
+    // no-op
+}
 
 //////////////////////////////////////////////////////////////////////////////
 // Initialize states-string for edit/hamming-distance filters
@@ -709,13 +774,7 @@ void initPatterns(
         // prepend INSERT
         ++errors;
         insertValue(pattern, 0, SEQAN_INSERT);
-        if ((int)SEQAN_INSERT < (int)state.TRANSITIONS)
-        {
-            if (errors <= maxErrors)
-                state.transition[SEQAN_INSERT] = _getErrorPatternIndex(patternStore, pattern);
-            else
-                state.transition[SEQAN_INSERT] = -1;
-        }
+        _setInsertTransitions(state, patternStore, pattern, errors, maxErrors);
 
         // prepend MISMATCH and cut INSERTS
         errors -= _cutErrorPattern(pattern);
@@ -729,14 +788,8 @@ void initPatterns(
         }
 
         // prepend DELETE
-        if ((int)SEQAN_DELETE < (int)state.TRANSITIONS)
-        {
-            pattern[0] = SEQAN_DELETE;
-            if (errors <= maxErrors)
-                state.transition[SEQAN_DELETE] = _getErrorPatternIndex(patternStore, pattern);
-            else
-                state.transition[SEQAN_DELETE] = -1;
-        }
+        pattern[0] = SEQAN_DELETE;
+        _setDeleteTransitions(state, patternStore, pattern, errors, maxErrors);
 
         // prepend MATCH
         if ((int)SEQAN_MATCH < (int)state.TRANSITIONS)
diff --git a/include/seqan/journaled_set/journal_alignment_interface.h b/include/seqan/journaled_set/journal_alignment_interface.h
index 662666a..e88018d 100644
--- a/include/seqan/journaled_set/journal_alignment_interface.h
+++ b/include/seqan/journaled_set/journal_alignment_interface.h
@@ -85,7 +85,7 @@ TScoreValue globalAlignment(String<TValue, Journaled<THostSpec, TJournalSpec, TB
     DPScoutState_<Default> dpScoutState;
     // We need to do that in order to build journal strings from two simple sequences.
     TScoreValue res = _setUpAndRunAlignment(traceSegments, dpScoutState, reference, source, scoringScheme, TDPConfig(),
-                                            IsSameType<TAlgoTag, NeedlemanWunsch>());
+                                            typename SubstituteAlgoTag_<TAlgoTag>::Type());
     _adaptTraceSegmentsTo(journaledString, reference, source, traceSegments);
     return res;
 }
@@ -179,7 +179,7 @@ TScoreValue globalAlignment(String<TValue, Journaled<THostSpec, TJournalSpec, TB
     // We need to do that in order to build journal strings from two simple sequences.
     TScoreValue res = _setUpAndRunAlignment(traceSegments, dpScoutState, reference, source, scoringScheme,
                                             TDPConfig(lowerDiag, upperDiag),
-                                            IsSameType<TAlgoTag, NeedlemanWunsch>());
+                                            typename SubstituteAlgoTag_<TAlgoTag>::Type());
     _adaptTraceSegmentsTo(journaledString, reference, source, traceSegments);
     return res;
 }
diff --git a/include/seqan/journaled_set/journal_alignment_traceback_adaptor.h b/include/seqan/journaled_set/journal_alignment_traceback_adaptor.h
index 68feead..543aa8b 100644
--- a/include/seqan/journaled_set/journal_alignment_traceback_adaptor.h
+++ b/include/seqan/journaled_set/journal_alignment_traceback_adaptor.h
@@ -95,7 +95,7 @@ _adaptTraceSegmentsTo(String<TValue, Journaled<THostSpec, SortedArray, TBuffSpec
     {
         switch (value(traceSegIter)._traceValue)
         {
-        case TraceBitMap_::DIAGONAL: //matching area
+        case TraceBitMap_<>::DIAGONAL: //matching area
         {
             appendValue(targetJournal._journalEntries._journalNodes, TJournalEntry(SOURCE_ORIGINAL, value(traceSegIter)._horizontalBeginPos,
                                                                                    virtualPos, value(traceSegIter)._horizontalBeginPos, value(traceSegIter)._length));
@@ -103,7 +103,7 @@ _adaptTraceSegmentsTo(String<TValue, Journaled<THostSpec, SortedArray, TBuffSpec
             break;
         }
 
-        case TraceBitMap_::VERTICAL: //insertion
+        case TraceBitMap_<>::VERTICAL: //insertion
         {
             appendValue(targetJournal._journalEntries._journalNodes, TJournalEntry(SOURCE_PATCH, length(targetJournal._insertionBuffer),
                                                                                    virtualPos, 0, value(traceSegIter)._length));
diff --git a/include/seqan/journaled_string_tree/jst_extension_base.h b/include/seqan/journaled_string_tree/jst_extension_base.h
index a7d3d2f..707ec1e 100644
--- a/include/seqan/journaled_string_tree/jst_extension_base.h
+++ b/include/seqan/journaled_string_tree/jst_extension_base.h
@@ -251,7 +251,12 @@ template <typename TExtension, typename TCxtPosition,
 inline auto
 run(JstExtensionBase<TExtension, TCxtPosition> & extension,
     TTraverser const & traverser,
-    TDelegate && delegate) -> decltype(impl::run(extension._derived, traverser, TCxtPosition()).first)
+    TDelegate && delegate)
+#if !defined(COMPILER_WINTEL)
+// the intel compiler on windows fails with this decltype, but can auto infer
+// the return type itself (possible as of c++14).
+    -> decltype(impl::run(extension._derived, traverser, TCxtPosition()).first)
+#endif
 {
     auto res = impl::run(extension._derived, traverser, TCxtPosition());
     if (res.second)
diff --git a/include/seqan/misc/bit_twiddling.h b/include/seqan/misc/bit_twiddling.h
index 6240edc..3f4356e 100644
--- a/include/seqan/misc/bit_twiddling.h
+++ b/include/seqan/misc/bit_twiddling.h
@@ -39,7 +39,7 @@
 #ifndef SEQAN_MISC_BIT_TWIDDLING_H_
 #define SEQAN_MISC_BIT_TWIDDLING_H_
 
-#ifdef PLATFORM_WINDOWS_VS
+#ifdef STDLIB_VS
 
 // Make intrinsics visible.  It appears that this is not necessary with VS 10
 // any more, for VS 9, it must be included.
@@ -49,7 +49,7 @@
 #include <nmmintrin.h>
 #endif
 
-#endif  // #ifdef PLATFORM_WINDOWS_VS
+#endif  // #ifdef STDLIB_VS
 
 // TODO(holtgrew): Test this!
 
@@ -232,7 +232,7 @@ isBitSet(TWord word, TIndex index)
 // ----------------------------------------------------------------------------
 
 template <typename TWord, typename TPos>
-SEQAN_HOST_DEVICE inline TWord
+inline TWord
 hiBits(TWord word, TPos index)
 {
     return word & ~((TWord(1) << (BitsPerValue<TWord>::VALUE - index)) - TWord(1));
@@ -256,7 +256,6 @@ hiBits(TWord word, TPos index)
  */
 
 template <typename TWord>
-SEQAN_HOST_DEVICE
 inline unsigned
 popCount(TWord word)
 {
@@ -272,36 +271,8 @@ popCount(TWord word)
 // the types unsigned, unsigned long, and unsigned long long.  Starting with version 2008, Visual C++ provides the
 // intrinsics __popcnt16, __popcnt, and __popcnt64 for 16, 32, and 64 bit words.
 
-#if defined(__CUDA_ARCH__)
-
-// ----------------------------------------------------------------------------
-// Function _popCountImpl()
-// ----------------------------------------------------------------------------
-// CUDA implementations.
-
-template <typename TWord>
-SEQAN_DEVICE
-inline unsigned _popCountImpl(TWord word, WordSize_<32> const & /*tag*/)
-{
-    return __popc(static_cast<uint32_t>(word));
-}
-
-template <typename TWord>
-SEQAN_DEVICE
-inline unsigned _popCountImpl(TWord word, WordSize_<16> const & /*tag*/)
-{
-    return __popc(static_cast<uint32_t>(word));
-}
-
-template <typename TWord>
-SEQAN_DEVICE
-inline unsigned _popCountImpl(TWord word, WordSize_<8> const & /*tag*/)
-{
-    return __popc(static_cast<uint32_t>(word));
-}
-
 // MSVC >= 2008, has intrinsic
-#elif defined(_MSC_VER)   // #if !defined(__CUDA_ARCH__) && defined(_MSC_VER)
+#if defined(COMPILER_MSVC) || defined(COMPILER_WINTEL)
 
 // ----------------------------------------------------------------------------
 // Function _popCountImpl()
@@ -317,6 +288,8 @@ _popCountImpl(TWord word, WordSize_<64> const & /*tag*/)
 #if defined(__SSE4_2__)
     // 64-bit Windows, SSE4.2 bit intrinsic available
     return _mm_popcnt_u64(static_cast<uint64_t>(word));
+#elif defined(COMPILER_WINTEL)
+    return _popcnt64(static_cast<uint64_t>(word));
 #else
     // 64-bit Windows, 64 bit intrinsic available
     return __popcnt64(static_cast<uint64_t>(word));
@@ -325,7 +298,8 @@ _popCountImpl(TWord word, WordSize_<64> const & /*tag*/)
 #else // #if defined(_WIN64)
 
     // 32-bit Windows, 64 bit intrinsic not available
-    return __popcnt(static_cast<uint32_t>(word)) + __popcnt(static_cast<uint32_t>(word >> 32));
+    return  _popCountImpl(static_cast<const uint32_t>(word), WordSize_<32>())
+          + _popCountImpl(static_cast<const uint32_t>(word >> 32), WordSize_<32>());
 
 #endif // #if defined(_WIN64)
 }
@@ -337,6 +311,8 @@ _popCountImpl(TWord word, WordSize_<32> const & /*tag*/)
 #if defined(__SSE4_2__)
     // SSE4.2 bit intrinsic available
     return _mm_popcnt_u32(static_cast<uint32_t>(word));
+#elif defined(COMPILER_WINTEL)
+    return _popcnt32(static_cast<uint32_t>(word));
 #else
     return __popcnt(static_cast<uint32_t>(word));
 #endif
@@ -357,7 +333,7 @@ _popCountImpl(TWord word, WordSize_<8> const & /*tag*/)
 }
 
 // GCC or CLANG
-#elif !defined(_MSC_VER)  // #if !defined(__CUDA_ARCH__) && !defined(_MSC_VER)
+#elif !(defined(COMPILER_MSVC) || defined(COMPILER_WINTEL))
 
 // ----------------------------------------------------------------------------
 // Function _popCountImpl()
@@ -369,14 +345,14 @@ template <typename TWord>
 inline unsigned
 _popCountImpl(TWord word, WordSize_<64> const & /*tag*/)
 {
-    return __builtin_popcountll(static_cast<unsigned long long>(word));
+    return __builtin_popcountll(static_cast<uint64_t>(word));
 }
 
 template <typename TWord>
 inline unsigned
 _popCountImpl(TWord word, WordSize_<32> const & /*tag*/)
 {
-    return __builtin_popcount(static_cast<unsigned int>(word));
+    return __builtin_popcount(static_cast<uint32_t>(word));
 }
 
 template <typename TWord>
@@ -393,7 +369,7 @@ _popCountImpl(TWord word, WordSize_<8> const & /*tag*/)
     return _popCountImpl(static_cast<uint32_t>(word), WordSize_<32>());
 }
 
-#endif // #if !defined(__CUDA_ARCH__) && !defined(_MSC_VER)
+#endif // #if !(defined(COMPILER_MSVC) || defined(COMPILER_WINTEL))
 
 // ----------------------------------------------------------------------------
 // Function printBits()
@@ -514,7 +490,7 @@ _bitScanReverse(TWord word, WordSize_<NUM_BITS>)
 // Function _bitScanForwardGeneric()                     [Platform independent]
 // ----------------------------------------------------------------------------
 
-// bitScanForward implementations for 64 and 32 bit values using DeBruijn sequence by Martin L�uter, Charles E. Leiserson,
+// bitScanForward implementations for 64 and 32 bit values using DeBruijn sequence by Martin L�uter, Charles E. Leiserson,
 // Harald Prokop and Keith H. Randall; "Using de Bruijn Sequences to Index a 1 in a Computer Word"; (1997)
 
 // Note, the cast of word to a signed integer is necessary to fix compiler warning C4146 on Windows platforms.
@@ -543,7 +519,10 @@ _bitScanForward(TWord word, WordSize_<NUM_BITS>)
     return _bitScanForwardGeneric(word, WordSize_<NUM_BITS>());
 }
 
-#if defined(PLATFORM_GCC)
+// NOTE(marehr): The Intel compiler on windows behaves the same as the visual
+// studio compiler and on *nix the same as gcc. Thus, the __builtin_clz is only
+// available on *nix.
+#if defined(COMPILER_GCC) || defined(COMPILER_CLANG) || defined(COMPILER_LINTEL)
 
 template <typename TWord>
 inline TWord
@@ -574,7 +553,7 @@ _bitScanForward(TWord word, WordSize_<32>)
     return __builtin_ctz(static_cast<unsigned int>(word));
 }
 
-#elif defined(PLATFORM_WINDOWS) // #if !defined(PLATFORM_GCC) && defined(PLATFORM_WINDOWS)
+#elif defined(STDLIB_VS) // #if !(defined(COMPILER_GCC) || defined(COMPILER_CLANG) || defined(COMPILER_LINTEL)) && defined(STDLIB_VS)
 
 #if (SEQAN_IS_64_BIT)
 
@@ -645,7 +624,7 @@ _bitScanForward(TWord word, WordSize_<32>)
     _BitScanForward(&index, static_cast<unsigned long>(word));
     return index;
 }
-#endif  // #if !defined(PLATFORM_GCC) && defined(PLATFORM_WINDOWS)
+#endif  // #if !(defined(COMPILER_GCC) || defined(COMPILER_CLANG) || defined(COMPILER_LINTEL)) && defined(STDLIB_VS)
 
 // ----------------------------------------------------------------------------
 // Function bitScanReverse()
diff --git a/include/seqan/misc/cuda.h b/include/seqan/misc/cuda.h
deleted file mode 100644
index e2fbadb..0000000
--- a/include/seqan/misc/cuda.h
+++ /dev/null
@@ -1,296 +0,0 @@
-// ==========================================================================
-//                 SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2013 NVIDIA Corporation
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of NVIDIA Corporation nor the names of
-//       its contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-// Author: Jacopo Pantaleoni <jpantaleoni at nvidia.com>
-// Author: Enrico Siragusa <enrico.siragusa at fu-berlin.de>
-// ==========================================================================
-
-#ifndef SEQAN_MISC_CUDA_MISC_H_
-#define SEQAN_MISC_CUDA_MISC_H_
-
-//#include <cuda_runtime.h>
-//#include <thrust/version.h>
-//#if THRUST_VERSION < 100600
-//#include <thrust/detail/backend/cuda/arch.h>
-//#else
-//#include <thrust/system/cuda/detail/arch.h>
-//#endif
-
-namespace seqan {
-
-// ============================================================================
-// Classes
-// ============================================================================
-
-/*
-struct Arch
-{
-    static const uint32_t LOG_WARP_SIZE = 5;
-    static const uint32_t WARP_SIZE     = 1u << LOG_WARP_SIZE;
-};
-*/
-
-// --------------------------------------------------------------------------
-// Type FunctionPointer
-// --------------------------------------------------------------------------
-
-typedef void (*FunctionPointer)();
-
-
-// ============================================================================
-// Functions
-// ============================================================================
-
-// --------------------------------------------------------------------------
-// Function nvccShowType()
-// --------------------------------------------------------------------------
-
-template <typename TObject>
-inline void
-nvccShowType(TObject object)
-{
-    ignoreUnusedVariableWarning(static_cast<Nothing>(object));
-}
-
-// --------------------------------------------------------------------------
-// Function divideRI()
-// --------------------------------------------------------------------------
-
-// Round x/y towards +infinity for integers, used to determine # of blocks/warps etc.
-template<typename L, typename R>
-inline L divideRI(const L x, const R y)
-{
-    return L((x + (y - 1)) / y);
-}
-
-// --------------------------------------------------------------------------
-// Function roundI()
-// --------------------------------------------------------------------------
-
-// Round x towards infinity to the next multiple of y.
-template<typename L, typename R>
-inline L roundI(L x, R y)
-{
-    return L(y * divideRI(x, y));
-}
-
-// --------------------------------------------------------------------------
-// Function cudaPrintFreeMemory()
-// --------------------------------------------------------------------------
-
-inline void cudaPrintFreeMemory()
-{
-    size_t free, total;
-    cudaMemGetInfo(&free, &total);
-
-    std::cout << "Free " << free / 1024 / 1024 <<  " of " << total / 1024 / 1024 << " MB\n";
-}
-
-// --------------------------------------------------------------------------
-// Function cudaOccupancy()
-// --------------------------------------------------------------------------
-
-inline SEQAN_DEVICE
-float cudaOccupancy()
-{
-    return __popc(__ballot(true)) / 32.0f;
-}
-
-// --------------------------------------------------------------------------
-// Function cudaSmemAllocationUnit()
-// --------------------------------------------------------------------------
-// Granularity of shared memory allocation.
-
-inline size_t cudaSmemAllocationUnit(cudaDeviceProp const & /* properties */)
-{
-    return 512;
-}
-
-// --------------------------------------------------------------------------
-// Function cudaRegAllocationUnit()
-// --------------------------------------------------------------------------
-// Granularity of register allocation.
-
-inline size_t cudaRegAllocationUnit(cudaDeviceProp const & properties)
-{
-    return (properties.major <= 1) ? (properties.minor <= 1 ? 256 : 512) : 64;
-}
-
-// --------------------------------------------------------------------------
-// Function cudaWarpAllocationMultiple()
-// --------------------------------------------------------------------------
-// Granularity of warp allocation.
-
-inline size_t cudaWarpAllocationMultiple(cudaDeviceProp const & /* properties */)
-{
-    return 2;
-}
-
-// --------------------------------------------------------------------------
-// Function cudaMaxBlocksPerMultiprocessor()
-// --------------------------------------------------------------------------
-
-inline size_t cudaMaxBlocksPerMultiprocessor(cudaDeviceProp const & properties)
-{
-    return properties.major <= 2 ? 8 : 16;
-}
-
-// --------------------------------------------------------------------------
-// Function cudaKernelGetAttributes()
-// --------------------------------------------------------------------------
-
-template <typename TKernel>
-inline cudaFuncAttributes cudaKernelGetAttributes(TKernel kernel)
-{
-    FunctionPointer kernelPointer = reinterpret_cast<FunctionPointer>(kernel);
-
-    cudaFuncAttributes attributes;
-    cudaFuncGetAttributes(&attributes, kernelPointer);
-
-    return attributes;
-}
-
-// --------------------------------------------------------------------------
-// Function cudaRegistersUsed()
-// --------------------------------------------------------------------------
-
-template <typename TKernel>
-inline size_t cudaRegistersUsed(TKernel kernel)
-{
-    return cudaKernelGetAttributes(kernel).numRegs;
-}
-
-// --------------------------------------------------------------------------
-// Function cudaMaxActiveBlocks()
-// --------------------------------------------------------------------------
-
-template <typename TKernel, typename TCTASize, typename TSmemSize>
-inline size_t cudaMaxActiveBlocks(TKernel kernel, TCTASize ctaSize, TSmemSize dynamicSmemBytes)
-{
-    int device;
-    cudaGetDevice(&device);
-
-    cudaDeviceProp properties;
-    cudaGetDeviceProperties(&properties, device);
-
-    return properties.multiProcessorCount * cudaMaxActiveBlocksPerSM(kernel, ctaSize, dynamicSmemBytes, properties);
-}
-
-// --------------------------------------------------------------------------
-// Function cudaMaxActiveBlocksPerSM()
-// --------------------------------------------------------------------------
-
-template <typename TKernel, typename TCTASize, typename TSmemSize>
-inline size_t cudaMaxActiveBlocksPerSM(TKernel kernel, TCTASize ctaSize, TSmemSize dynamicSmemBytes,
-                                       cudaDeviceProp & properties)
-{
-    cudaFuncAttributes attributes = cudaKernelGetAttributes(kernel);
-
-    // Determine the maximum number of CTAs that can be run simultaneously per SM.
-    // This is equivalent to the calculation done in the CUDA Occupancy Calculator spreadsheet.
-    size_t regAllocationUnit      = cudaRegAllocationUnit(properties);
-    size_t warpAllocationMultiple = cudaWarpAllocationMultiple(properties);
-    size_t smemAllocationUnit     = cudaSmemAllocationUnit(properties);
-    size_t maxThreadsPerSM        = properties.maxThreadsPerMultiProcessor;  // 768, 1024, 1536, etc.
-    size_t maxBlocksPerSM         = cudaMaxBlocksPerMultiprocessor(properties);
-
-    // Number of warps (round up to nearest whole multiple of warp size & warp allocation multiple).
-    size_t numWarps = roundI(divideRI(ctaSize, properties.warpSize), warpAllocationMultiple);
-
-    // Number of regs is regs per thread times number of warps times warp size.
-    size_t regsPerCTA = properties.major < 2 ?
-            roundI(attributes.numRegs * properties.warpSize * numWarps, regAllocationUnit) :
-            roundI(attributes.numRegs * properties.warpSize, regAllocationUnit) * numWarps;
-
-    size_t smemBytes  = attributes.sharedSizeBytes + dynamicSmemBytes;
-    size_t smemPerCTA = roundI(smemBytes, smemAllocationUnit);
-
-    size_t ctaLimitRegs    = regsPerCTA > 0 ? properties.regsPerBlock      / regsPerCTA : maxBlocksPerSM;
-    size_t ctaLimitSMem    = smemPerCTA > 0 ? properties.sharedMemPerBlock / smemPerCTA : maxBlocksPerSM;
-    size_t ctaLimitThreads =                  maxThreadsPerSM              / ctaSize;
-
-  return _min(ctaLimitRegs, _min(ctaLimitSMem, _min(ctaLimitThreads, maxBlocksPerSM)));
-}
-
-// --------------------------------------------------------------------------
-// Function checkCudaError()
-// --------------------------------------------------------------------------
-
-//inline void checkCudaError(const char *message)
-//{
-//    cudaError_t error = cudaGetLastError();
-//    if(error!=cudaSuccess) {
-//        fprintf(stderr,"%s: %s\n", message, cudaGetErrorString(error) );
-//        exit(1);
-//    }
-//}
-
-// --------------------------------------------------------------------------
-// Functions not yet used.
-// --------------------------------------------------------------------------
-
-/*
-template <typename KernelFunction>
-size_t auto_blocksize(KernelFunction kernel, size_t dynamic_smem_bytes_per_thread = 0)
-{
-#if THRUST_VERSION < 100600
-    return thrust::detail::backend::cuda::arch::max_blocksize_with_highest_occupancy(kernel, dynamic_smem_bytes_per_thread);
-#else
-    return thrust::system::cuda::detail::arch::max_blocksize_with_highest_occupancy(kernel, dynamic_smem_bytes_per_thread);
-#endif
-}
-
-inline bool is_tcc_enabled()
-{
-    int            device;
-    cudaDeviceProp device_properties;
-    cudaGetDevice(&device);
-    cudaGetDeviceProperties( &device_properties, device );
-    return device_properties.tccDriver ? true : false;
-}
-
-/// a generic syncthreads() implementation to synchronize contiguous
-/// blocks of N threads at a time
-///
-template <uint32_t N>
-SEQAN_HOST_DEVICE inline
-void syncThreads()
-{
-    #ifdef __CUDA_ARCH__
-    if ((N > cuda::Arch::WARP_SIZE) || (is_pow2<N>() == false))
-        __syncthreads();
-    #endif
-}
-*/
-
-}
-
-#endif  // SEQAN_MISC_CUDA_MISC_H_
diff --git a/include/seqan/misc/terminal.h b/include/seqan/misc/terminal.h
index 928611a..9b1bb00 100644
--- a/include/seqan/misc/terminal.h
+++ b/include/seqan/misc/terminal.h
@@ -76,7 +76,7 @@ namespace seqan {
  * @see isAnsiColorTerminal
  */
 
-#if defined(PLATFORM_WINDOWS)
+#if defined(STDLIB_VS)
 
 #include <io.h>
 
@@ -85,9 +85,9 @@ inline bool isTerminal()
     return false;  // Windows does not understand ANSI codes.
 }
 
-#endif  // #if defined(PLATFORM_WINDOWS)
+#endif  // #if defined(STDLIB_VS)
 
-#if defined(PLATFORM_GCC)
+#if !defined(STDLIB_VS)
 
 #include <unistd.h>
 
@@ -100,7 +100,7 @@ inline bool isTerminal()
 #endif
 }
 
-#endif  // #if defined(PLATFORM_GCC)
+#endif  // #if !defined(STDLIB_VS)
 
 // ----------------------------------------------------------------------------
 // Function isAnsiColorTerminal()
@@ -123,21 +123,21 @@ inline bool isTerminal()
  * @see getTerminalSize
  */
 
-#if defined(PLATFORM_WINDOWS) || defined(PLATFORM_GCC_MINGW)
+#if defined(STDLIB_VS)
 
 inline bool isAnsiColorTerminal()
 {
     return false;
 }
 
-#else  // #if defined(PLATFORM_WINDOWS) || defined(PLATFORM_GCC_MINGW)
+#else  // #if defined(STDLIB_VS)
 
 inline bool isAnsiColorTerminal()
 {
     return isTerminal();
 }
 
-#endif  // #if defined(PLATFORM_WINDOWS) || defined(PLATFORM_GCC_MINGW)
+#endif  // #if defined(STDLIB_VS)
 
 // ----------------------------------------------------------------------------
 // Function getTerminalSize()
@@ -169,7 +169,7 @@ inline bool isAnsiColorTerminal()
  * @see isAnsiColorTerminal
  */
 
-#if defined(PLATFORM_WINDOWS)
+#if defined(STDLIB_VS)
 
 #include <Windows.h>
 
@@ -187,9 +187,9 @@ inline bool getTerminalSize(unsigned & cols, unsigned & rows)
     return true;
 }
 
-#endif  // #if defined(PLATFORM_WINDOWS)
+#endif  // #if defined(STDLIB_VS)
 
-#if defined(PLATFORM_GCC)
+#if !defined(STDLIB_VS)
 
 #include <sys/ioctl.h>
 #include <unistd.h>
@@ -208,7 +208,7 @@ inline bool getTerminalSize(unsigned & cols, unsigned & rows)
     return true;
 }
 
-#endif  // #if defined(PLATFORM_GCC)
+#endif  // #if !defined(STDLIB_VS)
 
 }  // namespace seqan
 
diff --git a/include/seqan/modifier.h b/include/seqan/modifier.h
index 91ce2e5..bad50e7 100644
--- a/include/seqan/modifier.h
+++ b/include/seqan/modifier.h
@@ -77,5 +77,6 @@
 #include <seqan/modifier/modifier_shortcuts.h>
 #include <seqan/modifier/modifier_cyclic_shape.h>
 #include <seqan/modifier/modifier_position.h>
+#include <seqan/modifier/modifier_padding.h>
 
 #endif  // #ifndef SEQAN_INCLUDE_SEQAN_MODIFIER_H_
diff --git a/include/seqan/modifier/modifier_padding.h b/include/seqan/modifier/modifier_padding.h
new file mode 100644
index 0000000..38a72de
--- /dev/null
+++ b/include/seqan/modifier/modifier_padding.h
@@ -0,0 +1,413 @@
+// ==========================================================================
+//                 SeqAn - The Library for Sequence Analysis
+// ==========================================================================
+// Copyright (c) 2006-2016, Knut Reinert, FU Berlin
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
+//       its contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+//
+// ==========================================================================
+// Author: Rene Rahn <rene.rahn at fu-berlin.de>
+// ==========================================================================
+
+#ifndef INCLUDE_SEQAN_MODIFIER_MODIFIER_PADDING_H_
+#define INCLUDE_SEQAN_MODIFIER_MODIFIER_PADDING_H_
+
+namespace seqan
+{
+
+// ============================================================================
+// Forwards
+// ============================================================================
+
+// ============================================================================
+// Tags, Classes, Enums
+// ============================================================================
+// --------------------------------------------------------------------------
+// Class ModPad Iterator
+// --------------------------------------------------------------------------
+
+struct ModPadding_;
+using ModPadding = Tag<ModPadding_>;
+
+/*!
+ * @class ModPaddingIterator
+ * @extends ModifiedIterator
+ * @headerfile <seqan/modifier.h>
+ * @brief Adds padding characters beyond the end of a string, without modifing the original string.
+ *
+ * @signature template <typename THost>
+ *            class ModifiedIterator<THost, ModPadding>;
+ *
+ * @tparam THost original iterator.
+ */
+
+/*!
+ * @class ModPaddingString
+ * @extends ModifiedString
+ * @headerfile <seqan/modifier.h>
+ * @brief Pad characters beyond the end of a string with default value.
+ *
+ * @signature template <typename THost>
+ *            class ModifiedString<THost, ModPadding>;
+ *
+ * @tparam THost original string.
+ */
+
+template <typename THost>
+struct ModPaddingCargo
+{
+    using TSize  = typename Size<THost>::Type;
+    using TValue = typename Value<THost>::Type;
+
+    TSize   _numPaddedChar  = 0;
+    TSize   _remainingSteps = 0;
+    TValue  _paddedValue    = TValue();
+};
+
+// ============================================================================
+// Metafunctions
+// ============================================================================
+
+// --------------------------------------------------------------------------
+// Metafunction Reference
+// --------------------------------------------------------------------------
+
+template <typename THost>
+struct Reference<ModifiedString<THost, ModPadding> > :
+    Reference<THost>
+{};
+
+template < typename THost>
+struct Reference<ModifiedString<THost, ModPadding> const> :
+    Reference<THost const>
+{};
+
+// --------------------------------------------------------------------------
+// Metafunction Cargo                           [ModPadding ModifiedIterator]
+// --------------------------------------------------------------------------
+
+template <typename THost>
+struct Cargo<ModifiedString<THost, ModPadding> >
+{
+    using Type = ModPaddingCargo<THost>;
+};
+
+template <typename THost>
+struct Cargo<ModifiedIterator<THost, ModPadding> >
+{
+    using Type = ModPaddingCargo<typename Container<THost>::Type>;
+};
+
+// --------------------------------------------------------------------------
+// Metafunction Iterator                          [ModPadding ModifiedString]
+// --------------------------------------------------------------------------
+
+template <typename THost>
+struct Iterator<ModifiedString<THost, ModPadding>, Standard>
+{
+    typedef ModifiedIterator<typename Iterator<THost, Rooted>::Type, ModPadding> Type;
+};
+
+template <typename THost>
+struct Iterator<ModifiedString<THost, ModPadding> const, Standard>
+{
+    typedef ModifiedIterator<typename Iterator<THost, Rooted>::Type, ModPadding> Type;
+};
+
+// --------------------------------------------------------------------------
+// Metafunction DefaultIteratorSpec               [ModReverse ModifiedString]
+// --------------------------------------------------------------------------
+
+template <typename THost>
+struct DefaultIteratorSpec< ModifiedString<THost, ModPadding> >
+{
+    typedef Rooted Type;
+};
+
+// ============================================================================
+// Functions
+// ============================================================================
+
+// --------------------------------------------------------------------------
+// Function expand()
+// --------------------------------------------------------------------------
+
+/*!
+ * @fn ModPaddingString#expand
+ * @headerfile <seqan/modifier.h>
+ * @brief Expands the original string by the given size.
+ *
+ * @signature void expand(str, size[, pad])
+ *
+ * @param [in,out] str  The modified string to be padded.
+ * @param [in]     size The number of padded characters.
+ * @param [in]     pad  The character to pad the sequence with.
+ * 
+ * @datarace Not thread-safe.
+ */
+
+template <typename THost, typename TSize, typename TPadding>
+inline void expand(ModifiedString<THost, ModPadding> & me,
+                   TSize const newSize,
+                   TPadding const & _padding)
+{
+    SEQAN_ASSERT(me._host != nullptr);
+
+    cargo(me)._numPaddedChar = newSize;
+    cargo(me)._paddedValue = _padding;
+}
+
+template <typename THost, typename TSize>
+inline void expand(ModifiedString<THost, ModPadding> & me,
+                   TSize const newSize)
+{
+    expand(me, newSize, typename Value<THost>::Type());
+}
+
+// --------------------------------------------------------------------------
+// Function length()
+// --------------------------------------------------------------------------
+
+template <typename THost>
+inline auto
+length(ModifiedString<THost, ModPadding> const & me)
+{
+    return length(host(me)) + cargo(me)._numPaddedChar;
+}
+
+// ----------------------------------------------------------------------------
+// Function value()
+// ----------------------------------------------------------------------------
+
+template <typename THost, typename TPosition>
+inline typename Reference<ModifiedString<THost, ModPadding> >::Type
+value(ModifiedString<THost, ModPadding> & me, TPosition const pos)
+{
+    SEQAN_ASSERT_LT(pos, static_cast<TPosition>(length(me)));
+    return (SEQAN_LIKELY(pos < static_cast<TPosition>(length(host(me))))) ? host(me)[pos] : cargo(me)._paddedValue;
+}
+
+template <typename THost, typename TPosition>
+inline typename Reference<ModifiedString<THost, ModPadding> const>::Type
+value(ModifiedString<THost, ModPadding> const & me, TPosition const pos)
+{
+    SEQAN_ASSERT_LT(pos, static_cast<TPosition>(length(me)));
+    return (SEQAN_LIKELY(pos < static_cast<TPosition>(length(host(me))))) ? value(host(me), pos) : cargo(me)._paddedValue;
+}
+
+// --------------------------------------------------------------------------
+// Function begin()                               [ModReverse ModifiedString]
+// --------------------------------------------------------------------------
+
+template < typename THost, typename TTagSpec>
+inline typename Iterator< ModifiedString<THost, ModPadding> const>::Type
+begin(ModifiedString<THost, ModPadding> const & me, Tag<TTagSpec> const & /*tag*/)
+{
+    typename Iterator<ModifiedString<THost, ModPadding> const, Standard>::Type temp(begin(host(me), Rooted()));
+
+    _copyCargo(temp, me);
+    cargo(temp)._remainingSteps = cargo(me)._numPaddedChar;
+    return temp;
+}
+
+template < typename THost, typename TTagSpec>
+inline typename Iterator< ModifiedString<THost, ModPadding> >::Type
+begin(ModifiedString<THost, ModPadding> & me, Tag<TTagSpec> const & /*tag*/)
+{
+    typename Iterator<ModifiedString<THost, ModPadding>, Standard>::Type temp(begin(host(me), Rooted()));
+
+    _copyCargo(temp, me);
+    cargo(temp)._remainingSteps = cargo(me)._numPaddedChar;
+    return temp;
+}
+
+// --------------------------------------------------------------------------
+// Function end()                                 [ModReverse ModifiedString]
+// --------------------------------------------------------------------------
+
+template <typename THost, typename TTagSpec>
+inline auto
+end(ModifiedString<THost, ModPadding> const & me, Tag<TTagSpec> const)
+{
+    typename Iterator<ModifiedString<THost, ModPadding> const, Standard>::Type temp(end(host(me), Rooted()));
+
+    _copyCargo(temp, me);
+    cargo(temp)._remainingSteps = 0;
+    return temp;
+}
+
+template <typename THost, typename TTagSpec>
+inline auto
+end(ModifiedString<THost, ModPadding> & me, Tag<TTagSpec> const)
+{
+    typename Iterator<ModifiedString<THost, ModPadding>, Standard>::Type temp(end(host(me), Rooted()));
+
+    _copyCargo(temp, me);
+    cargo(temp)._remainingSteps = 0;
+    return temp;
+}
+
+// ----------------------------------------------------------------------------
+// Function operator*()
+// ----------------------------------------------------------------------------
+
+template <typename THost>
+inline auto
+operator*(ModifiedIterator<THost, ModPadding> & me)
+{
+    return (SEQAN_UNLIKELY(atEnd(host(me)))) ? cargo(me)._paddedValue : *host(me);
+}
+
+template <typename THost>
+inline auto
+operator*(ModifiedIterator<THost, ModPadding> const & me)
+{
+    return (SEQAN_UNLIKELY(atEnd(host(me)))) ? (cargo(me)._paddedValue) : (*host(me));
+}
+
+// ----------------------------------------------------------------------------
+// Function operator++()
+// ----------------------------------------------------------------------------
+
+template <typename THost>
+inline ModifiedIterator<THost, ModPadding> &
+operator++(ModifiedIterator<THost, ModPadding> & me)
+{
+    if (SEQAN_UNLIKELY(atEnd(host(me))))
+        --cargo(me)._remainingSteps;
+    else
+        ++host(me);
+    return me;
+}
+
+// ----------------------------------------------------------------------------
+// Function operator+=()
+// ----------------------------------------------------------------------------
+
+template <typename THost, typename TSize>
+inline ModifiedIterator<THost, ModPadding> &
+operator+=(ModifiedIterator<THost, ModPadding> & me, TSize const steps)
+{
+    if (SEQAN_UNLIKELY(atEnd(host(me))))
+    {
+        cargo(me)._remainingSteps -= steps;   // Remove 'steps' from remaining steps.
+    }
+    else
+    {
+        auto rem = (end(container(host(me)), Rooted()) - host(me));
+        if (SEQAN_LIKELY(static_cast<decltype(rem)>(steps) <= rem))  // Move host by 'steps' forward.
+        {
+            host(me) += steps;
+        }
+        else  // Move host by 'rem' forward and remove diff from cargo.
+        {
+            host(me) += rem;
+            cargo(me)._remainingSteps -= (steps - rem);
+        }
+    }
+    return me;
+}
+
+// ----------------------------------------------------------------------------
+// Function operator--()
+// ----------------------------------------------------------------------------
+
+template <typename THost>
+inline ModifiedIterator<THost, ModPadding> &
+operator--(ModifiedIterator<THost, ModPadding> & me)
+{
+    if (SEQAN_LIKELY(cargo(me)._remainingSteps == cargo(me)._numPaddedChar))
+        --host(me);
+    else
+        ++cargo(me)._remainingSteps;
+    return me;
+}
+
+// ----------------------------------------------------------------------------
+// Function operator-=()
+// ----------------------------------------------------------------------------
+
+template <typename THost, typename TSize>
+inline ModifiedIterator<THost, ModPadding> &
+operator-=(ModifiedIterator<THost, ModPadding> & me, TSize const steps)
+{
+    if (SEQAN_UNLIKELY(atEnd(host(me))))
+    {
+        auto rem = cargo(me)._numPaddedChar - cargo(me)._remainingSteps;
+        if (static_cast<decltype(rem)>(steps) <= rem)
+        {
+            cargo(me)._remainingSteps += steps;
+        }
+        else
+        {
+            cargo(me)._remainingSteps = cargo(me)._numPaddedChar;
+            host(me) -= steps - rem;
+        }
+    }
+    else
+    {
+        host(me) -= steps;
+    }
+    return me;
+}
+
+// ----------------------------------------------------------------------------
+// Function operator-()
+// ----------------------------------------------------------------------------
+
+template <typename THost>
+inline typename Difference<ModifiedIterator<THost, ModPadding> >::Type
+operator-(ModifiedIterator<THost, ModPadding> const & a,
+          ModifiedIterator<THost, ModPadding> const & b)
+{
+    return host(a) - host(b) + cargo(b)._remainingSteps - cargo(a)._remainingSteps;
+}
+
+// --------------------------------------------------------------------------
+// Function operator==()
+// --------------------------------------------------------------------------
+
+template <typename THost>
+inline bool
+operator == (ModifiedIterator<THost, ModPadding> const & a, ModifiedIterator<THost, ModPadding> const & b)
+{
+    return host(a) == host(b) && cargo(a)._remainingSteps == cargo(b)._remainingSteps;
+}
+
+// --------------------------------------------------------------------------
+// Function operator!=()
+// --------------------------------------------------------------------------
+
+template <typename THost>
+inline bool
+operator != (ModifiedIterator<THost, ModPadding> const & a, ModifiedIterator<THost, ModPadding> const & b)
+{
+    return !(a == b);
+}
+
+}
+
+#endif  // #ifndef INCLUDE_SEQAN_MODIFIER_MODIFIER_PADDING_H_
diff --git a/include/seqan/modifier/modifier_position.h b/include/seqan/modifier/modifier_position.h
index 8d325eb..ca4d9fa 100644
--- a/include/seqan/modifier/modifier_position.h
+++ b/include/seqan/modifier/modifier_position.h
@@ -415,7 +415,7 @@ struct PosLess_ : public std::binary_function<TPos, TPos, bool>
 // ----------------------------------------------------------------------------
 
 template <typename THost, typename TPositions, typename TBinaryPredicate, typename TParallelTag>
-inline void sort(ModifiedString<THost, ModPos<TPositions> > && me, TBinaryPredicate p, Tag<TParallelTag> const & tag)
+inline void sort(ModifiedString<THost, ModPos<TPositions> > & me, TBinaryPredicate p, Tag<TParallelTag> const & tag)
 {
     typedef typename Position<ModifiedString<THost, ModPos<TPositions> > >::Type TPos;
 
@@ -423,7 +423,7 @@ inline void sort(ModifiedString<THost, ModPos<TPositions> > && me, TBinaryPredic
 }
 
 template <typename THost, typename TPositions, typename TParallelTag>
-inline void sort(ModifiedString<THost, ModPos<TPositions> > && me, Tag<TParallelTag> const & tag)
+inline void sort(ModifiedString<THost, ModPos<TPositions> > & me, Tag<TParallelTag> const & tag)
 {
     typedef typename Position<ModifiedString<THost, ModPos<TPositions> > >::Type TPos;
 
diff --git a/include/seqan/modifier/modifier_string.h b/include/seqan/modifier/modifier_string.h
index c62dfc4..8ddbc56 100644
--- a/include/seqan/modifier/modifier_string.h
+++ b/include/seqan/modifier/modifier_string.h
@@ -483,14 +483,14 @@ _toPointer(ModifiedString<THost, TSpec> const & me)
 // --------------------------------------------------------------------------
 
 template <typename THost, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Parameter_<ModifiedString<THost, TSpec> >::Type
+inline typename Parameter_<ModifiedString<THost, TSpec> >::Type
 _toParameter(ModifiedString<THost, TSpec> & me)
 {
     return me;
 }
 
 template <typename THost, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Parameter_<ModifiedString<THost, TSpec> const >::Type
+inline typename Parameter_<ModifiedString<THost, TSpec> const >::Type
 _toParameter(ModifiedString<THost, TSpec> const & me)
 {
     return me;
@@ -884,6 +884,14 @@ save(StringSet<ModifiedString<THost, TSpec>, Owner<ConcatDirect<TSpec2> > > cons
     return true; // NOOP; this has to be done manually right now
 }
 
+// --------------------------------------------------------------------------
+// Function clear()
+// --------------------------------------------------------------------------
+
+template <typename THost, typename TSpec >
+inline void clear(ModifiedString<THost, TSpec> &)
+{}
+
 }  // namespace seqan
 
 #endif  // SEQAN_MODIFIER_MODIFIER_STRING_H_
diff --git a/include/seqan/parallel.h b/include/seqan/parallel.h
index a74334b..ac0a3d7 100755
--- a/include/seqan/parallel.h
+++ b/include/seqan/parallel.h
@@ -45,31 +45,24 @@
 #include <seqan/basic.h>
 #include <seqan/sequence.h>
 
-#ifdef PLATFORM_WINDOWS
-#include <windows.h>
-#else
-#include <pthread.h>
-#include <errno.h>
-#endif
-
-#include <seqan/system/system_critical_section.h>   // Suspendable Queue
-#include <seqan/system/system_condition.h>          // Suspendable Queue
-
 // ----------------------------------------------------------------------------
 // STL
 // ----------------------------------------------------------------------------
 // Use MCSTL which is part of the GCC since version 4.3
 
-#if defined(_OPENMP) && defined(PLATFORM_GNU)
+#if defined(_OPENMP) && defined(STDLIB_GNU)
 #include <parallel/algorithm>
 #include <parallel/numeric>
 #else
 #include <algorithm>
 #include <numeric>
-#endif // PLATFORM_GCC
+#endif // COMPILER_GCC
 
 #include <atomic>
 #include <thread>
+#include <future>
+#include <mutex>
+#include <condition_variable>
 
 // ============================================================================
 // Module Headers
diff --git a/include/seqan/parallel/parallel_algorithms.h b/include/seqan/parallel/parallel_algorithms.h
index 60a1345..8944c38 100644
--- a/include/seqan/parallel/parallel_algorithms.h
+++ b/include/seqan/parallel/parallel_algorithms.h
@@ -462,7 +462,7 @@ inline void stableSort(TContainer && c, Tag<TParallelTag> const & /* tag */)
 // ============================================================================
 
 // use MCSTL which is part of the GCC since version 4.3
-#if defined(_OPENMP) && defined(PLATFORM_GNU)
+#if defined(_OPENMP) && defined(COMPILER_GCC)
 
 // ----------------------------------------------------------------------------
 // Function forEach(Parallel)
@@ -641,7 +641,7 @@ inline void stableSort(TContainer && c, Parallel)
     return __gnu_parallel::stable_sort(begin(c, Standard()), end(c, Standard()));
 }
 
-#endif  // #ifdef PLATFORM_GNU
+#endif  // #ifdef COMPILER_GCC
 
 // ============================================================================
 // Shortcuts for STL Wrappers
diff --git a/include/seqan/parallel/parallel_atomic_primitives.h b/include/seqan/parallel/parallel_atomic_primitives.h
index 08be04f..d5f0681 100644
--- a/include/seqan/parallel/parallel_atomic_primitives.h
+++ b/include/seqan/parallel/parallel_atomic_primitives.h
@@ -38,9 +38,9 @@
 #ifndef SEQAN_PARALLEL_PARALLEL_ATOMIC_PRIMITIVES_H_
 #define SEQAN_PARALLEL_PARALLEL_ATOMIC_PRIMITIVES_H_
 
-#if defined(PLATFORM_WINDOWS)
+#if defined(STDLIB_VS)
 #include <intrin.h>
-#endif  // #if defined(PLATFORM_WINDOWS)
+#endif  // #if defined(STDLIB_VS)
 
 namespace seqan {
 
@@ -225,15 +225,19 @@ struct Atomic
 #define SEQAN_CACHE_LINE_SIZE 128
 #endif
 
-#if defined(PLATFORM_WINDOWS)
+#if defined(STDLIB_VS)
 
 // ----------------------------------------------------------------------------
 // Implementation in MSVC
 // ----------------------------------------------------------------------------
 
+// NOTE(marehr): clang/c2 v3.7 doesn't know #pragma intrinsic.
+#if !defined(COMPILER_CLANG)
+#pragma intrinsic(_InterlockedOr, _InterlockedXor, _InterlockedCompareExchange)
+#endif
+
 // We break the standard code layout here since we only wrap compiler
 // intrinsics and it's easier to see things with one glance this way.
-#pragma intrinsic(_InterlockedOr, _InterlockedXor, _InterlockedCompareExchange)
 
 template <typename T, typename S>
 inline T _atomicOr(T volatile &x, ConstInt<sizeof(char)>, S y) { return _InterlockedOr8(reinterpret_cast<char volatile *>(&x), y); }
@@ -256,7 +260,11 @@ inline T _atomicCas(T volatile &x, ConstInt<sizeof(short)>, S cmp, U y) { return
 template <typename T>
 inline T _atomicInc(T volatile &x, ConstInt<sizeof(LONG)>) { return InterlockedIncrement(reinterpret_cast<LONG volatile *>(&x)); }
 template <typename T>
+inline T* _atomicInc(T* volatile &x, ConstInt<sizeof(LONG)>) { InterlockedExchangeAdd(reinterpret_cast<LONG volatile *>(&x), sizeof(LONG)); return x; }
+template <typename T>
 inline T _atomicDec(T volatile &x, ConstInt<sizeof(LONG)>) { return InterlockedDecrement(reinterpret_cast<LONG volatile *>(&x)); }
+template <typename T>
+inline T* _atomicDec(T* volatile &x, ConstInt<sizeof(LONG)>) { InterlockedExchangeAdd(reinterpret_cast<LONG volatile *>(&x), -sizeof(LONG)); return x; }
 template <typename T, typename S>
 inline T _atomicAdd(T volatile &x, ConstInt<sizeof(LONG)>, S y) { return InterlockedExchangeAdd(reinterpret_cast<LONG volatile *>(&x), y); }
 template <typename T, typename S>
@@ -270,7 +278,11 @@ inline T _atomicCas(T volatile &x, ConstInt<sizeof(long)>, S cmp, U y) { return
 template <typename T>
 inline T _atomicInc(T volatile &x, ConstInt<sizeof(LONGLONG)>) { return InterlockedIncrement64(reinterpret_cast<LONGLONG volatile *>(&x)); }
 template <typename T>
+inline T* _atomicInc(T* volatile &x, ConstInt<sizeof(LONGLONG)>) { InterlockedExchangeAdd64(reinterpret_cast<LONGLONG volatile *>(&x), sizeof(LONGLONG)); return x; }
+template <typename T>
 inline T _atomicDec(T volatile &x, ConstInt<sizeof(LONGLONG)>) { return InterlockedDecrement64(reinterpret_cast<LONGLONG volatile *>(&x)); }
+template <typename T>
+inline T* _atomicDec(T* volatile &x, ConstInt<sizeof(LONGLONG)>) { InterlockedExchangeAdd64(reinterpret_cast<LONGLONG volatile *>(&x), -sizeof(LONGLONG)); return x; }
 template <typename T, typename S>
 inline T _atomicAdd(T volatile &x, ConstInt<sizeof(LONGLONG)>, S y) { return InterlockedExchangeAdd64(reinterpret_cast<LONGLONG volatile *>(&x), y); }
 template <typename T, typename S>
@@ -302,7 +314,7 @@ template <typename T>
 inline T atomicPostDec(T volatile & x) { return atomicDec(x) + 1; }
 
 
-#else  // #if defined(PLATFORM_WINDOWS)
+#else  // #if defined(STDLIB_VS)
 
 // ----------------------------------------------------------------------------
 // Implementation in GCC (LLVM is GCC compatible)
@@ -400,7 +412,7 @@ inline T1 * atomicAdd(T1 * volatile & x, T2 y)
     return (T1 *) __sync_add_and_fetch((size_t volatile *)&x, y * sizeof(T2));
 }
 
-#endif  // #if defined(PLATFORM_WINDOWS)
+#endif  // #if defined(STDLIB_VS)
 
 
 // ----------------------------------------------------------------------------
@@ -446,4 +458,4 @@ template <typename T>   inline bool atomicCasBool(std::atomic<T> & x, T cmp, T y
 
 } // namespace seqan
 
-#endif  // #if defined(PLATFORM_WINDOWS)
+#endif  // #if defined(STDLIB_VS)
diff --git a/include/seqan/parallel/parallel_lock.h b/include/seqan/parallel/parallel_lock.h
index c021806..d4be60b 100644
--- a/include/seqan/parallel/parallel_lock.h
+++ b/include/seqan/parallel/parallel_lock.h
@@ -37,14 +37,12 @@
 #ifndef SEQAN_PARALLEL_PARALLEL_LOCK_H_
 #define SEQAN_PARALLEL_PARALLEL_LOCK_H_
 
-#if defined(__SSE2__) && !defined(__CUDACC__)
+#if defined(__SSE2__)
 #include <xmmintrin.h>  // _mm_pause()
 #endif
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 #include <Windows.h>
-#else
-#include <sched.h>
 #endif
 
 namespace seqan {
@@ -53,7 +51,6 @@ namespace seqan {
 // Forwards
 // ============================================================================
 
-struct Mutex;
 inline void yieldProcessor();
 
 // ============================================================================
@@ -88,13 +85,7 @@ waitFor(SpinDelay & me)
     }
     else
     {
-#ifdef PLATFORM_WINDOWS
-#if _WIN32_WINNT >= 0x0400
-        SwitchToThread();
-#endif
-#else
-        sched_yield();
-#endif
+        std::this_thread::yield();
     }
 }
 
@@ -150,37 +141,6 @@ public:
 };
 
 // ----------------------------------------------------------------------------
-// Class ScopedLock
-// ----------------------------------------------------------------------------
-
-template <typename TMutex = Mutex, typename TParallel = Parallel>
-struct ScopedLock
-{
-    TMutex & mutex;
-
-    explicit
-    ScopedLock(TMutex & mutex) :
-        mutex(mutex)
-    {
-        lock(mutex);
-    }
-
-    ~ScopedLock()
-    {
-        unlock(mutex);
-    }
-
-};
-
-template <typename TLock>
-struct ScopedLock<TLock, Serial>
-{
-    explicit
-    ScopedLock(TLock &)
-    {}
-};
-
-// ----------------------------------------------------------------------------
 // Class ScopedReadLock
 // ----------------------------------------------------------------------------
 
@@ -253,9 +213,7 @@ struct ScopedWriteLock<TLock, Serial>
 inline void
 yieldProcessor()
 {
-#if defined( __CUDACC__)
-    // don't wait on the GPU
-#elif defined(PLATFORM_WINDOWS_VS)
+#if defined(STDLIB_VS)
     YieldProcessor();
 #elif defined(__SSE2__)
     _mm_pause();
diff --git a/include/seqan/parallel/parallel_macros.h b/include/seqan/parallel/parallel_macros.h
index 26564fd..1499865 100644
--- a/include/seqan/parallel/parallel_macros.h
+++ b/include/seqan/parallel/parallel_macros.h
@@ -79,14 +79,14 @@
 
 #include <omp.h>
 
-#if defined(PLATFORM_GCC)
+#if defined(COMPILER_MSVC) || defined(COMPILER_WINTEL)
+  // MSVC __pragma-operator
+  #define SEQAN_OMP_PRAGMA(x) __pragma(omp x)
+#else
   // GCC _Pragma operator
   #define SEQAN_DO_PRAGMA(x) _Pragma(# x)
   #define SEQAN_OMP_PRAGMA(x) SEQAN_DO_PRAGMA(omp x)
-#else  // #if defined(PLATFORM_GCC)
-  // MSVC __pragma-operator
-  #define SEQAN_OMP_PRAGMA(x) __pragma(omp x)
-#endif // #if defined(PLATFORM_GCC)
+#endif
 
 #else  // #ifdef _OPENMP
 
@@ -122,12 +122,9 @@ inline double omp_get_wtime()
 // Function getThreadId()
 // ----------------------------------------------------------------------------
 
-SEQAN_HOST_DEVICE inline unsigned getThreadId()
+inline unsigned getThreadId()
 {
-#if defined(__CUDA_ARCH__)
-    return blockIdx.x * blockDim.x + threadIdx.x;
-
-#elif defined(_OPENMP)
+#if defined(_OPENMP)
     return omp_get_thread_num();
 
 #else
diff --git a/include/seqan/parallel/parallel_queue_suspendable.h b/include/seqan/parallel/parallel_queue_suspendable.h
index a95bd78..db1aa13 100644
--- a/include/seqan/parallel/parallel_queue_suspendable.h
+++ b/include/seqan/parallel/parallel_queue_suspendable.h
@@ -45,9 +45,6 @@ namespace seqan {
 // Forwards
 // ============================================================================
 
-struct CriticalSection;
-struct Condition;
-
 // ============================================================================
 // Classes
 // ============================================================================
@@ -86,18 +83,18 @@ public:
     typedef typename Host<ConcurrentQueue>::Type    TString;
     typedef typename Size<TString>::Type            TSize;
 
-    size_t          readerCount;
-    size_t          writerCount;
+    size_t                  readerCount;
+    size_t                  writerCount;
 
-    TString         data;
-    TSize           occupied;
-    TSize           back;
-    TSize           front;
+    TString                 data;
+    TSize                   occupied;
+    TSize                   back;
+    TSize                   front;
 
-    CriticalSection cs;
-    Condition       more;
+    std::mutex              cs;
+    std::condition_variable more;
 
-    bool        virgin;
+    bool                    virgin;
 
     ConcurrentQueue():
         readerCount(0),
@@ -105,7 +102,6 @@ public:
         occupied(0),
         back(0),
         front(0),
-        more(cs),
         virgin(true)
     {}
 
@@ -144,19 +140,17 @@ public:
     typedef typename Host<ConcurrentQueue>::Type    TString;
     typedef typename Size<TString>::Type            TSize;
 
-    Condition less;
+    std::condition_variable less;
 
     ConcurrentQueue(TSize maxSize):
-        TBase(),
-        less(TBase::cs)
+        TBase()
     {
         reserve(this->data, maxSize, Exact());
         _setLength(this->data, maxSize);
     }
 
     ConcurrentQueue(ConcurrentQueue const & other):
-        TBase((TBase const &)other),
-        less(this->mutex)
+        TBase((TBase const &)other)
     {}
 };
 
@@ -175,9 +169,12 @@ template <typename TValue, typename TSpec>
 inline void
 unlockReading(ConcurrentQueue<TValue, Suspendable<TSpec> > & me)
 {
-    ScopedLock<CriticalSection> lock(me.cs);
+    std::unique_lock<std::mutex> lock(me.cs);
     if (--me.readerCount == 0u)
-        signal(me.less);
+    {
+        lock.unlock();
+        me.less.notify_all();
+    }
 }
 
 template <typename TValue, typename TSpec>
@@ -189,16 +186,19 @@ template <typename TValue, typename TSpec>
 inline void
 unlockWriting(ConcurrentQueue<TValue, Suspendable<TSpec> > & me)
 {
-    ScopedLock<CriticalSection> lock(me.cs);
+    std::unique_lock<std::mutex> lk(me.cs);
     if (--me.writerCount == 0u)
-        signal(me.more);
+    {
+        lk.unlock();
+        me.more.notify_all();
+    }
 }
 
 template <typename TValue, typename TSize, typename TSpec>
 inline void
 setReaderCount(ConcurrentQueue<TValue, Suspendable<TSpec> > & me, TSize readerCount)
 {
-    ScopedLock<CriticalSection> lock(me.cs);
+    std::unique_lock<std::mutex> lock(me.cs);
     me.readerCount = readerCount;
 }
 
@@ -206,7 +206,7 @@ template <typename TValue, typename TSize, typename TSpec>
 inline void
 setWriterCount(ConcurrentQueue<TValue, Suspendable<TSpec> > & me, TSize writerCount)
 {
-    ScopedLock<CriticalSection> lock(me.cs);
+    std::unique_lock<std::mutex> lock(me.cs);
     me.writerCount = writerCount;
 }
 
@@ -214,7 +214,7 @@ template <typename TValue, typename TSize1, typename TSize2, typename TSpec>
 inline void
 setReaderWriterCount(ConcurrentQueue<TValue, Suspendable<TSpec> > & me, TSize1 readerCount, TSize2 writerCount)
 {
-    ScopedLock<CriticalSection> lock(me.cs);
+    std::unique_lock<std::mutex> lock(me.cs);
     me.readerCount = readerCount;
     me.writerCount = writerCount;
 }
@@ -224,9 +224,9 @@ inline bool
 waitForMinSize(ConcurrentQueue<TValue, Suspendable<TSpec> > & me,
                TSize minSize)
 {
-    ScopedLock<CriticalSection> lock(me.cs);
+    std::unique_lock<std::mutex> lock(me.cs);
     while (me.occupied < minSize && me.writerCount > 0u)
-        waitFor(me.more);
+        me.more.wait(lock);
     return me.occupied >= minSize;
 }
 
@@ -247,7 +247,8 @@ length(ConcurrentQueue<TValue, Suspendable<TSpec> > const & me)
 
 template <typename TValue, typename TSpec>
 inline bool
-_popFront(TValue & result, ConcurrentQueue<TValue, Suspendable<TSpec> > & me)
+_popFront(TValue & result, ConcurrentQueue<TValue, Suspendable<TSpec> > & me,
+          std::unique_lock<std::mutex> & lk)
 {
     typedef ConcurrentQueue<TValue, Suspendable<TSpec> >    TQueue;
     typedef typename Host<TQueue>::Type                     TString;
@@ -257,7 +258,7 @@ _popFront(TValue & result, ConcurrentQueue<TValue, Suspendable<TSpec> > & me)
     TSize cap = capacity(me.data);
 
     while (me.occupied == 0u && me.writerCount > 0u)
-        waitFor(me.more);
+        me.more.wait(lk);
 
     if (me.occupied == 0u)
         return false;
@@ -283,7 +284,9 @@ _popFront(TValue & result, ConcurrentQueue<TValue, Suspendable<TSpec> > & me)
 
 template <typename TValue, typename TSpec>
 inline bool
-_popBack(TValue & result, ConcurrentQueue<TValue, Suspendable<TSpec> > & me)
+_popBack(TValue & result,
+         ConcurrentQueue<TValue, Suspendable<TSpec> > & me,
+         std::unique_lock<std::mutex> & lk)
 {
     typedef ConcurrentQueue<TValue, Suspendable<TSpec> >    TQueue;
     typedef typename Host<TQueue>::Type                     TString;
@@ -293,7 +296,7 @@ _popBack(TValue & result, ConcurrentQueue<TValue, Suspendable<TSpec> > & me)
     TSize cap = capacity(me.data);
 
     while (me.occupied == 0u && me.writerCount > 0u)
-        waitFor(me.more);
+        me.more.wait(lk);
 
     if (me.occupied == 0u)
         return false;
@@ -322,42 +325,42 @@ template <typename TValue, typename TSpec>
 inline bool
 popFront(TValue & result, ConcurrentQueue<TValue, Suspendable<TSpec> > & me)
 {
-    ScopedLock<CriticalSection> lock(me.cs);
-    return _popFront(result, me);
+    std::unique_lock<std::mutex> lock(me.cs);
+    return _popFront(result, me, lock);
 }
 
 template <typename TValue>
 inline bool
 popFront(TValue & result, ConcurrentQueue<TValue, Suspendable<Limit> > & me)
 {
-    ScopedLock<CriticalSection> lock(me.cs);
-    if (_popFront(result, me))
     {
-        signal(me.less);
-        return true;
+        std::unique_lock<std::mutex> lk(me.cs);
+        if (!_popFront(result, me, lk))
+            return false;
     }
-    return false;
+    me.less.notify_all();
+    return true;
 }
 
 template <typename TValue, typename TSpec>
 inline bool
 popBack(TValue & result, ConcurrentQueue<TValue, Suspendable<TSpec> > & me)
 {
-    ScopedLock<CriticalSection> lock(me.cs);
-    return _popBack(result, me);
+    std::unique_lock<std::mutex> lk(me.cs);
+    return _popBack(result, me, lk);
 }
 
 template <typename TValue>
 inline bool
 popBack(TValue & result, ConcurrentQueue<TValue, Suspendable<Limit> > & me)
 {
-    ScopedLock<CriticalSection> lock(me.cs);
-    if (_popBack(result, me))
     {
-        signal(me.less);
-        return true;
+        std::unique_lock<std::mutex> lk(me.cs);
+        if (!_popBack(result, me, lk))
+            return false;
     }
-    return false;
+    me.less.notify_all();
+    return true;
 }
 
 
@@ -371,36 +374,37 @@ appendValue(ConcurrentQueue<TValue, Suspendable<TSpec> > & me,
     typedef typename Host<TQueue>::Type                     TString;
     typedef typename Size<TString>::Type                    TSize;
 
-    ScopedLock<CriticalSection> lock(me.cs);
-    TSize cap = capacity(me.data);
-
-    if (me.occupied >= cap)
     {
-        // increase capacity
-        _setLength(me.data, cap);
-        reserve(me.data, cap + 1, expandTag);
-        TSize delta = capacity(me.data) - cap;
+        std::lock_guard<std::mutex> lock(me.cs);
+        TSize cap = capacity(me.data);
+
+        if (me.occupied >= cap)
+        {
+            // increase capacity
+            _setLength(me.data, cap);
+            reserve(me.data, cap + 1, expandTag);
+            TSize delta = capacity(me.data) - cap;
 
-        // create a gap of delta many values between tail and head
-        _clearSpace(me.data, delta, me.back, me.back, expandTag);
-        if (me.occupied != 0 && me.back <= me.front)
-            me.front += delta;
+            // create a gap of delta many values between tail and head
+            _clearSpace(me.data, delta, me.back, me.back, expandTag);
+            if (me.occupied != 0 && me.back <= me.front)
+                me.front += delta;
 
-        cap += delta;
-    }
+            cap += delta;
+        }
 
-    valueConstruct(begin(me.data, Standard()) + me.back, val);
-    me.back = (me.back + 1) % cap;
+        valueConstruct(begin(me.data, Standard()) + me.back, val);
+        me.back = (me.back + 1) % cap;
 
-    me.occupied++;
+        me.occupied++;
+    }
 
     /* now: either me.occupied < BSIZE and me.nextin is the index
-       of the next empty slot in the buffer, or
-       me.occupied == BSIZE and me.nextin is the index of the
-       next (occupied) slot that will be emptied by a consumer
-       (such as me.nextin == me.nextout) */
-
-    signal(me.more);
+     of the next empty slot in the buffer, or
+     me.occupied == BSIZE and me.nextin is the index of the
+     next (occupied) slot that will be emptied by a consumer
+     (such as me.nextin == me.nextout) */
+    me.more.notify_all();
     return true;
 }
 
@@ -420,28 +424,29 @@ appendValue(ConcurrentQueue<TValue, Suspendable<Limit> > & me,
     typedef typename Host<TQueue>::Type                     TString;
     typedef typename Size<TString>::Type                    TSize;
 
-    ScopedLock<CriticalSection> lock(me.cs);
-    TSize cap = capacity(me.data);
+    {
+        std::unique_lock<std::mutex> lock(me.cs);
+        TSize cap = capacity(me.data);
 
-    while (me.occupied >= cap && me.readerCount > 0u)
-        waitFor(me.less);
+        while (me.occupied >= cap && me.readerCount > 0u)
+            me.less.wait(lock);
 
-    if (me.occupied >= cap)
-        return false;
+        if (me.occupied >= cap)
+            return false;
 
-    SEQAN_ASSERT_LT(me.occupied, cap);
+        SEQAN_ASSERT_LT(me.occupied, cap);
 
-    valueConstruct(begin(me.data, Standard()) + me.back, val);
-    me.back = (me.back + 1) % cap;
-    me.occupied++;
+        valueConstruct(begin(me.data, Standard()) + me.back, val);
+        me.back = (me.back + 1) % cap;
+        me.occupied++;
+    }
 
     /* now: either me.occupied < BSIZE and me.nextin is the index
-       of the next empty slot in the buffer, or
-       me.occupied == BSIZE and me.nextin is the index of the
-       next (occupied) slot that will be emptied by a consumer
-       (such as me.nextin == me.nextout) */
-
-    signal(me.more);
+     of the next empty slot in the buffer, or
+     me.occupied == BSIZE and me.nextin is the index of the
+     next (occupied) slot that will be emptied by a consumer
+     (such as me.nextin == me.nextout) */
+    me.more.notify_all();
     return true;
 }
 
diff --git a/include/seqan/parallel/parallel_serializer.h b/include/seqan/parallel/parallel_serializer.h
index 5d0e954..f40c373 100644
--- a/include/seqan/parallel/parallel_serializer.h
+++ b/include/seqan/parallel/parallel_serializer.h
@@ -69,7 +69,7 @@ public:
     typedef ResourcePool<TItem>             TPool;
     typedef typename Size<Serializer>::Type TSize;
 
-    CriticalSection     cs;
+    std::mutex          cs;
     TWorker             worker;
     TItemPtr            first;
     TItemPtr            last;
@@ -149,7 +149,7 @@ aquireValue(Serializer<TValue, TWorker> & me)
 
     // add item to the end of our linked list
     {
-        ScopedLock<CriticalSection> lock(me.cs);
+        std::lock_guard<std::mutex> lock(me.cs);
         if (me.first == NULL)
             me.first = item;
         else
@@ -177,7 +177,7 @@ releaseValue(Serializer<TValue, TWorker> & me, TValue *ptr)
 
     // change our ready flag and test if me.first->ready became true
     {
-        ScopedLock<CriticalSection> lock(me.cs);
+        std::lock_guard<std::mutex> lock(me.cs);
         item->ready = true;
         if (item != me.first)
             return true;
@@ -195,7 +195,7 @@ releaseValue(Serializer<TValue, TWorker> & me, TValue *ptr)
 
         // remove item from linked list
         {
-            ScopedLock<CriticalSection> lock(me.cs);
+            std::lock_guard<std::mutex> lock(me.cs);
             me.first = item->next;
 
             // recycle released items
diff --git a/include/seqan/pipe/pool_base.h b/include/seqan/pipe/pool_base.h
index 67329a4..d8d1adf 100644
--- a/include/seqan/pipe/pool_base.h
+++ b/include/seqan/pipe/pool_base.h
@@ -127,8 +127,8 @@ namespace seqan
 
     struct PoolParameters
     {
-
-#ifdef SEQAN_IS_32_BIT
+// The enum for 64bit does not work: building an index runs out of memoty
+#if 1 //SEQAN_IS_32_BIT
         // in 32bit mode at most 4GB are addressable
         enum { DefaultMemBufferSize     = 384 * 1024,      // low memory config [kB]
                DefaultPageSize          = 32 * 1024,            // [kB]
diff --git a/include/seqan/platform.h b/include/seqan/platform.h
index 6726c68..60bc6b6 100644
--- a/include/seqan/platform.h
+++ b/include/seqan/platform.h
@@ -36,16 +36,299 @@
 
 #include <cinttypes>
 
+// ==========================================================================
+// Define Used STD Library (e.g. the STL of the GNU compiler)
+// ==========================================================================
+
+#include <cstddef> // makes __GLIBCXX__ available
+#include <ciso646> // makes _LIBCPP_VERSION available
+
+/*!
+ * @macro STDLIB_VS
+ * @headerfile <seqan/platform.h>
+ * @brief The standard library implemented by Visual C++, if defined
+ * @signature #define STDLIB_VS
+ */
 #ifdef _MSC_VER
-    #include "platform/platform_windows.h"
-#elif __ICC
-    #include "platform/platform_icc.h"
+#define STDLIB_VS
+#endif
+
+/*!
+ * @macro STDLIB_GNU
+ * @headerfile <seqan/platform.h>
+ * @brief The standard library implemented by GNU/GCC, if defined
+ * @signature #define STDLIB_GNU
+ */
+#ifdef __GLIBCXX__
+#define STDLIB_GNU
+#endif
+
+/*!
+ * @macro STDLIB_LLVM
+ * @headerfile <seqan/platform.h>
+ * @brief The standard library implemented by clang/llvm, if defined
+ * @signature #define STDLIB_LLVM
+ */
+#ifdef _LIBCPP_VERSION
+#define STDLIB_LLVM
+#endif
+
+// ==========================================================================
+// Define Compilers
+// ==========================================================================
+
+/*!
+ * @macro COMPILER_LINTEL
+ * @headerfile <seqan/platform.h>
+ * @brief The compiler is the intel compiler (icc), if defined
+ * @signature #define COMPILER_LINTEL
+ */
+#if defined(__ICC)
+#define COMPILER_LINTEL
+#if __ICC < 1600
+     #warning ICC versions older than 16 are not supported.
+#endif
+#endif
+
+/*!
+ * @macro COMPILER_WINTEL
+ * @headerfile <seqan/platform.h>
+ * @brief The compiler is the intel compiler for windows, if defined
+ * @signature #define COMPILER_WINTEL
+ */
+#if defined(__ICL)
+#define COMPILER_WINTEL
+#if __ICL < 1600
+     #warning Intel compiler (windows) versions older than 16 are not supported.
+#endif
+#endif
+
+/*!
+ * @macro COMPILER_CLANG
+ * @headerfile <seqan/platform.h>
+ * @brief The compiler is the llvm compiler (clang), if defined
+ * @signature #define COMPILER_CLANG
+ */
+#if defined(__clang__)
+#define COMPILER_CLANG
+#define COMPILER_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)
+#if COMPILER_VERSION < 30500
+    #warning Clang versions older than 3.5.0 are not supported.
+#endif
+#undef COMPILER_VERSION
+#endif
+
+/*!
+ * @macro COMPILER_MSVC
+ * @headerfile <seqan/platform.h>
+ * @brief The compiler is the microsoft visual studio compiler (msvc), if defined
+ * @signature #define COMPILER_MSVC
+ */
+#if defined(_MSC_VER) && !defined(COMPILER_WINTEL) && !defined(COMPILER_CLANG)
+#define COMPILER_MSVC
+#if _MSC_VER < 1900
+#error Visual Studio versions older than version 14 / "2015" are not supported.
+#endif
+#endif
+
+/*!
+ * @macro COMPILER_GCC
+ * @headerfile <seqan/platform.h>
+ * @brief The compiler is the gnu compiler (gcc), if defined
+ * @signature #define COMPILER_GCC
+ */
+#if defined(__GNUC__) && !defined(COMPILER_LINTEL) && !defined(COMPILER_CLANG)
+#define COMPILER_GCC
+#define COMPILER_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+#if COMPILER_VERSION < 40901
+    #warning GCC versions older than 4.9.1 are not supported.
+#endif
+#undef COMPILER_VERSION
+#endif
+
+// ==========================================================================
+// C++ standard macros
+// ==========================================================================
+
+#ifndef STDLIB_VS // all Visual Studio >= 2015 compilers are c++14 by default
+#if __cplusplus < 201300
+    #error SeqAn requires C++14! You must compile your application with -std=c++14, -std=gnu++14 or -std=c++1y.
+#endif
+#endif
+
+// ==========================================================================
+// Platform Macros (Backwards Compatibility)
+// ==========================================================================
+/*!
+ * @macro PLATFORM_GCC
+ * @headerfile <seqan/platform.h>
+ * @brief Defined if the compiler is GCC (or compatible).
+ * @deprecated Use STDLIB_VS, STDLIB_GNU or STDLIB_LLVM to know which
+ *     standard lib is currently used. Or use COMPILER_MSVC, COMPILER_GCC,
+ *     COMPILER_LINTEL, COMPILER_WINTEL or COMPILER_CLANG to know which compiler
+ *     is currently used.
+ *
+ * @signature #define PLATFORM_GCC
+ */
+
+#ifdef STDLIB_VS
+#define PLATFORM_WINDOWS
+#define PLATFORM_WINDOWS_VS
 #else
-    #include "platform/platform_gcc.h"
+#define PLATFORM_GCC
+#endif
+
+#if defined(PLATFORM_GCC) && defined(COMPILER_CLANG)
+#define PLATFORM_CLANG
+#endif
+
+#if defined(PLATFORM_GCC) && defined(COMPILER_LINTEL)
+#define PLATFORM_INTEL
 #endif
 
-// NOTE(esiragusa): nvcc header must be included even if __CUDACC__ is not defined.
-#include "platform/platform_nvcc.h"
+#if defined(PLATFORM_GCC) && defined(COMPILER_GCC)
+#define PLATFORM_GNU
+#endif
+
+// ==========================================================================
+// Disable Warnings
+// ==========================================================================
+
+// Disable warning for identifer name truncation.  There is not much we can
+// do about this.  Boost also has this problem and they chose to suppress
+// it globally.  So did we.
+//
+// Documentation of C4503 from Microsoft:
+//   https://msdn.microsoft.com/en-us/library/074af4b6%28v=vs.140%29.aspx
+// Boost Warnings Guidelines:
+//   https://svn.boost.org/trac/boost/wiki/Guidelines/WarningsGuidelines
+// Intel compiler for windows also triggers this error:
+//   seqan/pipe/pipe_base.h(263): warning #2586: 'bundle5' : decorated name
+//   length exceeded, name was truncated
+#if defined(COMPILER_MSVC) || defined(COMPILER_WINTEL)
+#pragma warning( disable : 4503 )
+#endif
+
+// ==========================================================================
+// Define Integers
+// ==========================================================================
+
+/*!
+ * @defgroup StandardIntegers Standard Integers
+ * @brief Integers defined globally by the SeqAn library.
+ *
+ * For protability, SeqAn defines the integers in this group.
+ *
+ * @typedef StandardIntegers#__int64
+ * @headerfile <seqan/platform.h>
+ * @brief Signed 64-bit integer type.
+ * @deprecated Use int64_t instead.
+ *
+ * @signature typedef (...) __int64;
+ *
+ * @typedef StandardIntegers#__uint64
+ * @headerfile <seqan/platform.h>
+ * @brief Unsigned 64-bit integer type.
+ * @deprecated Use uint64_t instead.
+ *
+ * @signature typdef (...) __uint64;
+ *
+ * @typedef StandardIntegers#__int32
+ * @headerfile <seqan/platform.h>
+ * @brief Signed 32-bit integer type.
+ * @deprecated Use int32_t instead.
+ *
+ * @signature typedef (...) __int32;
+ *
+ * @typedef StandardIntegers#__uint32
+ * @headerfile <seqan/platform.h>
+ * @brief Unsigned 32-bit integer type.
+ * @deprecated Use uint32_t instead.
+ *
+ * @signature typdef (...) __uint32;
+ *
+ * @typedef StandardIntegers#__int16
+ * @headerfile <seqan/platform.h>
+ * @brief Signed 16-bit integer type.
+ * @deprecated Use int16_t instead.
+ *
+ * @signature typedef (...) __int16;
+ *
+ * @typedef StandardIntegers#__uint16
+ * @headerfile <seqan/platform.h>
+ * @brief Unsigned 16-bit integer type.
+ * @deprecated Use uint16_t instead.
+ *
+ * @signature typdef (...) __uint16;
+ *
+ * @typedef StandardIntegers#__int8
+ * @headerfile <seqan/platform.h>
+ * @brief Signed 8-bit integer type.
+ * @deprecated Use int8_t instead.
+ *
+ * @signature typedef (...) __int8;
+ *
+ * @typedef StandardIntegers#__uint8
+ * @headerfile <seqan/platform.h>
+ * @brief Unsigned 8-bit integer type.
+ * @deprecated Use uint8_t instead.
+ *
+ * @signature typdef (...) __uint8;
+ */
+
+typedef uint64_t __uint64; // nolint
+typedef uint32_t __uint32; // nolint
+typedef uint16_t __uint16; // nolint
+typedef uint8_t __uint8;   // nolint
+
+#if !(defined(COMPILER_LINTEL) || defined(STDLIB_VS))
+typedef int64_t __int64;   // nolint
+typedef int32_t __int32;   // nolint
+typedef int16_t __int16;   // nolint
+typedef int8_t __int8;     // nolint
+#endif
+
+#if defined(COMPILER_MSVC) || defined(COMPILER_WINTEL)
+#define finline __forceinline
+#else
+#define finline __inline__
+#endif
+
+// TODO(marehr): always define _FILE_OFFSET_BITS and _LARGEFILE_SOURCE
+// if msvc doesn't supprt those flags, why not define them anyway.
+#if !defined(COMPILER_MSVC)
+    #ifndef _FILE_OFFSET_BITS
+    #define _FILE_OFFSET_BITS 64
+    #endif
+
+    #ifndef _LARGEFILE_SOURCE
+    #define _LARGEFILE_SOURCE
+    #endif
+#endif // !defined(COMPILER_MSVC)
+
+/*!
+ * @macro SEQAN_IS_64_BIT
+ * @headerfile <seqan/platform.h>
+ * @brief 1 if the architecture is 64 bit, 0 otherwise.
+ *
+ * @signature #define SEQAN_IS_64_BIT
+ *
+ * @macro SEQAN_IS_32_BIT
+ * @headerfile <seqan/platform.h>
+ * @brief 1 if the architecture is 32 bit, 0 otherwise.
+ *
+ * @signature #define SEQAN_IS_32_BIT
+ */
+
+// The symbols SEQAN_IS_64_BIT and SEQAN_IS_32_BIT can be used to check
+// whether we are on a 32 bit or on a 64 bit machine.
+#if defined(__amd64__) || defined(__x86_64__) || defined(__aarch64__) || defined(__ia64__) || defined(__ppc64__) || defined(_WIN64)
+#define SEQAN_IS_64_BIT 1
+#define SEQAN_IS_32_BIT 0
+#else
+#define SEQAN_IS_64_BIT 0
+#define SEQAN_IS_32_BIT 1
+#endif
 
 /**
  * SEQAN_AUTO_PTR_NAME .... alias for the auto_ptr class template deprecated in C++11.
@@ -77,27 +360,91 @@
 #define SEQAN_CXX11_STANDARD 1
 #define SEQAN_CXX11_COMPLETE 1
 
-// C++ restrict keyword, see e.g. platform_gcc.h
-#ifndef SEQAN_RESTRICT
+/**
+ * The following macros need to be removed when cuda support will be dropped.
+ */
+#define SEQAN_FUNC inline
+#define SEQAN_HOST_DEVICE
+#define SEQAN_HOST
+#define SEQAN_DEVICE
+#define SEQAN_GLOBAL
+
+// ==========================================================================
+// C++ restrict keyword
+// ==========================================================================
+#if defined(COMPILER_GCC) || defined(COMPILER_CLANG)
+#define SEQAN_RESTRICT  __restrict__
+#else
 #define SEQAN_RESTRICT
 #endif
 
+// ==========================================================================
 // C++ branch hints
-#ifndef SEQAN_LIKELY
-#define SEQAN_LIKELY(x) (x)
-#endif
-
-#ifndef SEQAN_UNLIKELY
-#define SEQAN_UNLIKELY(x) (x)
+// ==========================================================================
+#if defined(COMPILER_GCC) || defined(COMPILER_CLANG) && !defined(STDLIB_VS) || defined(COMPILER_LINTEL)
+#define SEQAN_LIKELY(expr) __builtin_expect(!!(expr), 1)
+#define SEQAN_UNLIKELY(expr) __builtin_expect(!!(expr), 0)
+#else
+#define SEQAN_LIKELY(x)    (x)
+#define SEQAN_UNLIKELY(x)    (x)
 #endif
 
 // A macro to eliminate warnings on GCC and Clang
-#if defined(__GNUC__) || defined(__clang__)
-#  define SEQAN_UNUSED __attribute__((unused))
+#if defined(COMPILER_GCC) || defined(COMPILER_CLANG) || defined(COMPILER_LINTEL)
+#define SEQAN_UNUSED __attribute__((unused))
 #else
-#  define SEQAN_UNUSED
+#define SEQAN_UNUSED
 #endif
 // backwards compatibility
 #define SEQAN_UNUSED_TYPEDEF SEQAN_UNUSED
 
+// HAS_EXECINFO
+// note that this is always set by FindSeqAn.cmake
+// this is a fallback for non cmake environments
+#ifndef SEQAN_HAS_EXECINFO
+    #ifdef STDLIB_VS
+    #define SEQAN_HAS_EXECINFO 0
+    #elif defined(__has_include)
+        #if __has_include(<execinfo.h>)
+        #define SEQAN_HAS_EXECINFO 1
+        #else
+        #define SEQAN_HAS_EXECINFO 0
+        #endif
+    #else // assume that it is there
+    #define SEQAN_HAS_EXECINFO 1
+    #endif
+#endif
+
+// ASYNCHRONOUS I/O
+#ifndef SEQAN_ASYNC_IO
+    // FreeBSD only has proper support on 64Bit
+    #if defined(__FreeBSD__)
+    #define SEQAN_ASYNC_IO SEQAN_IS_64_BIT
+    // Clang (and future gcc) can detect it
+    #elif defined(__has_include) && defined(__unix__)
+        #if __has_include(<aio.h>)
+        #define SEQAN_ASYNC_IO 1
+        #else
+        #define SEQAN_ASYNC_IO 0
+        #endif
+    // OpenBSD doesn't have it
+    #elif defined(__OpenBSD__)
+    #define SEQAN_ASYNC_IO 0
+    // we assume the rest have it (Linux, OSX, Win)
+    #else
+    #define SEQAN_ASYNC_IO 1
+    #endif
+#endif //ndef SEQAN_ASYNC_IO
+
+// There is a bug in clang35 on FreeBSD that crashes the compiler.
+// Since this is only triggered on some codepaths we define a macro
+// here that we can later access.
+#if defined(__FreeBSD__) && defined(COMPILER_CLANG)
+#define COMPILER_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)
+#if (COMPILER_VERSION >= 30500) && (COMPILER_VERSION < 30600)
+    #define SEQAN_CLANG35_FREEBSD_BUG 1
+#endif
+#undef COMPILER_VERSION
+#endif
+
 #endif
diff --git a/include/seqan/platform/platform_gcc.h b/include/seqan/platform/platform_gcc.h
deleted file mode 100644
index 9ab895a..0000000
--- a/include/seqan/platform/platform_gcc.h
+++ /dev/null
@@ -1,178 +0,0 @@
-// ==========================================================================
-//                 SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2006-2016, Knut Reinert, FU Berlin
-// Copyright (c) 2013 NVIDIA Corporation
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
-//       its contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-
-/*!
- * @macro PLATFORM_GCC
- * @headerfile <seqan/platform.h>
- * @brief Defined if the compiler is GCC (or compatible).
- *
- * @signature #define PLATFORM_GCC
- */
-
-// GNU COMPATIBLE
-#ifndef PLATFORM_GCC
-#define PLATFORM_GCC
-
-#if defined(__clang__)
-#ifndef PLATFORM_CLANG
-#define PLATFORM_CLANG
-#endif
-#elif defined(__ICC)
-    // INTEL COMPILER handled in different file
-#else
-#ifndef PLATFORM_GNU
-#define PLATFORM_GNU
-#endif
-#endif
-
-// should be set before including anything
-#ifndef _FILE_OFFSET_BITS
-  #define _FILE_OFFSET_BITS 64
-#endif
-
-#ifndef _LARGEFILE_SOURCE
-  #define _LARGEFILE_SOURCE
-#endif
-
-/*!
- * @macro SEQAN_IS_64_BIT
- * @headerfile <seqan/platform.h>
- * @brief Defined when compiling in 64 bit mode.
- *
- * @signature #define SEQAN_IS_64_BIT
- *
- * @macro SEQAN_IS_32_BIT
- * @headerfile <seqan/platform.h>
- * @brief Defined when compiling in 32 bit mode.
- *
- * @signature #define SEQAN_IS_32_BIT
- */
-
-// The symbols SEQAN_IS_64_BIT and SEQAN_IS_32_BIT can be used to check
-// whether we are on a 32 bit or on a 64 bit machine.
-#if defined(__amd64__) || defined(__x86_64__) || defined(__ia64__)
-#define SEQAN_IS_64_BIT 1
-#define SEQAN_IS_32_BIT 0
-#else  // #if defined(__amd64__) || defined(__x86_64__) || defined(__ia64__)
-#define SEQAN_IS_64_BIT 0
-#define SEQAN_IS_32_BIT 1
-#endif  // #if defined(__amd64__) || defined(__x86_64__) || defined(__ia64__)
-
-
-#define finline __inline__
-
-/*!
- * @defgroup StandardIntegers Standard Integers
- * @brief Integers defined globally by the SeqAn library.
- *
- * For protability, SeqAn defines the integers in this group.
- *
- * @typedef StandardIntegers#__int64
- * @headerfile <seqan/platform.h>
- * @brief Signed 64-bit integer type.
- * @deprecated Use int64_t instead.
- *
- * @signature typedef (...) __int64;
- *
- * @typedef StandardIntegers#__uint64
- * @headerfile <seqan/platform.h>
- * @brief Unsigned 64-bit integer type.
- * @deprecated Use uint64_t instead.
- *
- * @signature typdef (...) __uint64;
- *
- * @typedef StandardIntegers#__int32
- * @headerfile <seqan/platform.h>
- * @brief Signed 32-bit integer type.
- * @deprecated Use int32_t instead.
- *
- * @signature typedef (...) __int32;
- *
- * @typedef StandardIntegers#__uint32
- * @headerfile <seqan/platform.h>
- * @brief Unsigned 32-bit integer type.
- * @deprecated Use uint32_t instead.
- *
- * @signature typdef (...) __uint32;
- *
- * @typedef StandardIntegers#__int16
- * @headerfile <seqan/platform.h>
- * @brief Signed 16-bit integer type.
- * @deprecated Use int16_t instead.
- *
- * @signature typedef (...) __int16;
- *
- * @typedef StandardIntegers#__uint16
- * @headerfile <seqan/platform.h>
- * @brief Unsigned 16-bit integer type.
- * @deprecated Use uint16_t instead.
- *
- * @signature typdef (...) __uint16;
- *
- * @typedef StandardIntegers#__int8
- * @headerfile <seqan/platform.h>
- * @brief Signed 8-bit integer type.
- * @deprecated Use int8_t instead.
- *
- * @signature typedef (...) __int8;
- *
- * @typedef StandardIntegers#__uint8
- * @headerfile <seqan/platform.h>
- * @brief Unsigned 8-bit integer type.
- * @deprecated Use uint8_t instead.
- *
- * @signature typdef (...) __uint8;
- */
-
-// default 64bit type
-typedef int64_t __int64;   // nolint
-typedef uint64_t __uint64; // nolint
-
-// default 32bit type
-typedef int32_t __int32;   // nolint
-typedef uint32_t __uint32; // nolint
-
-// default 16bit type
-typedef int16_t __int16;   // nolint
-typedef uint16_t __uint16; // nolint
-
-// default 8bit type
-typedef int8_t __int8;     // nolint
-typedef uint8_t __uint8;   // nolint
-
-#define SEQAN_LIKELY(expr)    __builtin_expect(!!(expr), 1)
-#define SEQAN_UNLIKELY(expr)  __builtin_expect(!!(expr), 0)
-
-#define SEQAN_RESTRICT  __restrict__
-
-#endif  // #ifndef PLATFORM_GCC
diff --git a/include/seqan/platform/platform_icc.h b/include/seqan/platform/platform_icc.h
deleted file mode 100644
index 9bd6214..0000000
--- a/include/seqan/platform/platform_icc.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// ==========================================================================
-//                 SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2006-2016, Knut Reinert, FU Berlin
-// Copyright (c) 2013 NVIDIA Corporation
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
-//       its contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-
-#ifndef PLATFORM_INTEL
-#define PLATFORM_INTEL
-
-// icc is gcc compatible
-#ifndef PLATFORM_GCC
-#define PLATFORM_GCC
-#endif
-
-// should be set before including anything
-#ifndef _FILE_OFFSET_BITS
-  #define _FILE_OFFSET_BITS 64
-#endif
-
-#ifndef _LARGEFILE_SOURCE
-  #define _LARGEFILE_SOURCE
-#endif
-
-// The symbols SEQAN_IS_64_BIT and SEQAN_IS_32_BIT can be used to check
-// whether we are on a 32 bit or on a 64 bit machine.
-#if defined(__amd64__) || defined(__x86_64__) || defined(__ia64__)
-#define SEQAN_IS_64_BIT 1
-#define SEQAN_IS_32_BIT 0
-#else  // #if defined(__amd64__) || defined(__x86_64__) || defined(__ia64__)
-#define SEQAN_IS_64_BIT 0
-#define SEQAN_IS_32_BIT 1
-#endif  // #if defined(__amd64__) || defined(__x86_64__) || defined(__ia64__)
-
-
-#define finline __inline__
-
-typedef uint64_t __uint64;
-typedef uint32_t __uint32;
-typedef uint16_t __uint16;
-typedef uint8_t __uint8;
-
-#endif  // #ifndef PLATFORM_INTEL
diff --git a/include/seqan/platform/platform_nvcc.h b/include/seqan/platform/platform_nvcc.h
deleted file mode 100644
index 4d4845f..0000000
--- a/include/seqan/platform/platform_nvcc.h
+++ /dev/null
@@ -1,150 +0,0 @@
-// ==========================================================================
-//                 SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2013 NVIDIA Corporation
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of NVIDIA Corporation nor the names of
-//       its contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-// Author: Enrico Siragusa <enrico.siragusa at fu-berlin.de>
-// ==========================================================================
-
-/*!
- * @macro PLATFORM_CUDA
- * @headerfile <seqan/platform.h>
- * @brief Defined if the compiler is nvcc (or CUDA-capable).
- *
- * @signature #define PLATFORM_CUDA
- *
- * @section Remarks
- *
- * This macro is a synonym for __CUDACC__.
- */
-
-/*!
- * @macro SEQAN_HOST_DEVICE
- * @headerfile <seqan/platform.h>
- * @brief Prefix for functions working both on host and device side.
- *
- * @signature #define SEQAN_HOST_DEVICE
- *
- * This macro can be placed in front of CUDA-compatible functions that can be callable both on host and device side.
- * The macro expands to <tt>__host__ __device__</tt> on CUDA-capable compilers and is ignored otherwise.
- *
- * @see SEQAN_HOST
- * @see SEQAN_DEVICE
- * @see SEQAN_GLOBAL
- *
- * @section Example
- *
- * @code{.cpp}
- * inline SEQAN_HOST_DEVICE void foo(int & x)
- * {
- *     // I can run on the CPU and on the GPU, yay!
- *     x = 10;
- * }
- * @endcode
- */
-
-/*!
- * @macro SEQAN_HOST
- * @headerfile <seqan/platform.h>
- * @brief Prefix for functions working only on host side.
- *
- * @signature #define SEQAN_HOST
- *
- * This macro can be placed in front of functions that can be callable only from host side.
- * The macro expands to <tt>__host__</tt> on CUDA-capable compilers and is ignored otherwise.
- *
- * @see SEQAN_HOST_DEVICE
- * @see SEQAN_DEVICE
- * @see SEQAN_GLOBAL
- */
-
-/*!
- * @macro SEQAN_DEVICE
- * @headerfile <seqan/platform.h>
- * @brief Prefix for functions working only on device side.
- *
- * @signature #define SEQAN_DEVICE
- *
- * This macro must be placed in front of functions that can be callable only from device side.
- * The macro expands to <tt>__device__</tt> on CUDA-capable compilers and is ignored otherwise.
- *
- * @see SEQAN_HOST_DEVICE
- * @see SEQAN_HOST
- * @see SEQAN_GLOBAL
- *
- * @section Remarks
- *
- * Note that a device function containing CUDA intrinsics will not compile on non CUDA-capable compilers. Therefore, to
- * insure graceful compilation, it is still necessary to wrap CUDA-intrinsic code inside __CUDA_ARCH__ defines.
- */
-
-/*!
- * @macro SEQAN_GLOBAL
- * @headerfile <seqan/platform.h>
- * @brief Prefix for functions defining entry points for device side kernels.
- *
- * @signature #define SEQAN_GLOBAL
- *
- * This macro must be placed in front of functions defining entry points for device side kernels.
- * The macro expands to <tt>__global__</tt> on CUDA-capable compilers and is ignored otherwise.
- *
- * @see SEQAN_HOST_DEVICE
- * @see SEQAN_HOST
- * @see SEQAN_DEVICE
- */
-
-#ifndef PLATFORM_CUDA_H_
-#define PLATFORM_CUDA_H_
-
-#ifdef __CUDACC__
-
-#define PLATFORM_CUDA
-
-#define SEQAN_FUNC inline __host__ __device__
-#define SEQAN_HOST_DEVICE __host__ __device__
-#define SEQAN_HOST __host__
-#define SEQAN_DEVICE __device__
-#define SEQAN_GLOBAL __global__
-
-// NOTE(esiragusa): this solves a problem with nvcc using gcc4.x on MacOS X
-#if defined(PLATFORM_GCC) && defined (__APPLE__)
-#undef _GLIBCXX_USE_INT128
-#endif
-
-#else
-
-#define SEQAN_FUNC inline
-#define SEQAN_HOST_DEVICE
-#define SEQAN_HOST
-#define SEQAN_DEVICE
-#define SEQAN_GLOBAL
-
-#endif  // #ifdef __CUDACC__
-
-#endif  // #ifndef PLATFORM_CUDA_H_
diff --git a/include/seqan/platform/platform_windows.h b/include/seqan/platform/platform_windows.h
deleted file mode 100644
index 38b74c2..0000000
--- a/include/seqan/platform/platform_windows.h
+++ /dev/null
@@ -1,125 +0,0 @@
-// ==========================================================================
-//                 SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2006-2016, Knut Reinert, FU Berlin
-// Copyright (c) 2013 NVIDIA Corporation
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
-//       its contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-
-#ifndef PLATFORM_WINDOWS
-#define PLATFORM_WINDOWS
-
-#define PLATFORM_WINDOWS_VS
-
-// ==========================================================================
-// Compiler Defines For MSVC.
-// ==========================================================================
-
-// Make <windows.h> not define min() and max() as macros.
-#ifndef NOMINMAX
-#define NOMINMAX
-#endif  // #ifndef NOMINMAX
-
-#define finline __forceinline
-
-// ==========================================================================
-// Disable Warnings
-// ==========================================================================
-
-// Disable warning for identifer name truncation.  There is not much we can
-// do about this.  Boost also has this problem and they chose to suppress
-// it globally.  So did we.
-//
-// Documentation of C4504 from Microsoft:
-//   http://msdn.microsoft.com/en-us/library/074af4b6%28v=vs.80%29.aspx
-// Boost Warnings Guidelines:
-//   https://svn.boost.org/trac/boost/wiki/Guidelines/WarningsGuidelines
-#pragma warning( disable : 4503 )
-
-// Disable warning for C++ compliant behaviour for default-initializing
-// arrays in classes.
-//
-// Documentation of C4345 from Microsoft:
-//   http://msdn.microsoft.com/de-de/library/1ywe7hcy(v=vs.80).aspx
-// Documentation of C4351 from Microsoft:
-//   http://msdn.microsoft.com/en-us/library/wewb47ee(v=vs.80).aspx
-#pragma warning( disable : 4345 )
-#pragma warning( disable : 4351 )
-
-// Disable warning for "this" used in derived c'tor
-// Documentation of C4355 from Microsoft:
-//   https://msdn.microsoft.com/en-us/library/3c594ae3(v=vs.100).aspx
-#pragma warning( disable : 4355 )
-
-// ==========================================================================
-// Define Integers
-// ==========================================================================
-
-
-// TODO(holtgrew): It would probably be better to define these in namespace seqan only.
-
-typedef uint64_t __uint64;
-typedef uint32_t __uint32;
-typedef uint16_t __uint16;
-typedef uint8_t __uint8;
-
-// ==========================================================================
-// Define SeqAn Specific Macros.
-// ==========================================================================
-
-// The symbols SEQAN_IS_64_BIT and SEQAN_IS_32_BIT can be used to check
-// whether we are on a 32 bit or on a 64 bit machine.
-
-#if defined(_WIN64)
-#define SEQAN_IS_64_BIT 1
-#define SEQAN_IS_32_BIT 0
-#else
-#define SEQAN_IS_64_BIT 0
-#define SEQAN_IS_32_BIT 1
-#endif  // #if defined(_WIN64)
-
-// ==========================================================================
-// Visual Studio Specific Workarounds.
-// ==========================================================================
-
-// Workaround for missing round() from C99 in Visual Studio.
-template <typename T>
-inline T round(T const & x)
-{
-    return static_cast<T>(floor(x + 0.5));
-}
-
-// Define ftello
-#ifndef ftello
-#define ftello(fp) ftell(fp)
-#endif  // #ifndef ftello
-
-//#define SEQAN_RESTRICT  __restrict
-//#define SEQAN_RESTRICT  __declspec(restrict)
-
-#endif  // #ifndef PLATFORM_WINDOWS
diff --git a/include/seqan/score.h b/include/seqan/score.h
index 4955dd9..124657c 100644
--- a/include/seqan/score.h
+++ b/include/seqan/score.h
@@ -46,6 +46,11 @@
 #include <seqan/score/score_matrix.h>
 #include <seqan/score/score_matrix_io.h>
 #include <seqan/score/score_matrix_data.h>
+#include <seqan/score/score_matrix_dyn.h>
 #include <seqan/score/score_simple.h>
 
+#if SEQAN_SIMD_ENABLED
+#include <seqan/score/score_simd_wrapper.h>
+#endif  // SEQAN_SIMD_ENABLED
+
 #endif  // SEQAN_SH_
diff --git a/include/seqan/score/score_base.h b/include/seqan/score/score_base.h
index 35bc0e2..1f97e4b 100644
--- a/include/seqan/score/score_base.h
+++ b/include/seqan/score/score_base.h
@@ -83,6 +83,22 @@ struct Value<Score<TValue, TSpec> > {
     typedef TValue Type;
 };
 
+/*!
+ * @mfn Score#Spec
+ * @brief Return the specialization type of the scoring scheme.
+ *
+ * @signature Spec<TScore>::Type;
+ *
+ * @tparam TScore The Score specialization.
+ *
+ * @return Type The score specialization type of the scoring scheme.
+ */
+
+template <typename TValue, typename TSpec>
+struct Spec<Score<TValue, TSpec> > {
+    typedef TSpec Type;
+};
+
 // --------------------------------------------------------------------------
 // Metafunction ConsensusScoreSequenceEntry
 // --------------------------------------------------------------------------
diff --git a/include/seqan/score/score_matrix.h b/include/seqan/score/score_matrix.h
index fd3839e..a2e7c89 100644
--- a/include/seqan/score/score_matrix.h
+++ b/include/seqan/score/score_matrix.h
@@ -126,6 +126,26 @@ public:
 };
 
 
+// ----------------------------------------------------------------------------
+// Metafunction IsScoreMatrix_
+// ----------------------------------------------------------------------------
+
+template <typename TSpec>
+struct IsScoreMatrix_ : False
+{};
+
+template <typename TAlphabet, typename TSpec>
+struct IsScoreMatrix_<ScoreMatrix<TAlphabet, TSpec> > : True
+{};
+
+template <typename TValue, typename  TSpec>
+struct IsScoreMatrix_<Score<TValue, TSpec> > : IsScoreMatrix_<TSpec>
+{};
+
+// ----------------------------------------------------------------------------
+// Function score()
+// ----------------------------------------------------------------------------
+
 // TODO(holtgrew): Does it make sense to document each Score specialization?  Should dddoc show a list of all specializations of a class?
 template <typename TValue, typename TSequenceValue, typename TSpec, typename TVal1, typename TVal2>
 inline TValue
@@ -137,7 +157,6 @@ score(Score<TValue, ScoreMatrix<TSequenceValue, TSpec> > const & sc, TVal1 val1,
     return sc.data_tab[i * TScore::VALUE_SIZE + j];
 }
 
-
 /*!
  * @fn MatrixScore#setScore
  * @brief Set the substitution score between to values.
@@ -186,7 +205,6 @@ setDefaultScoreMatrix(Score<TValue, ScoreMatrix<TSequenceValue, TSpec> > & sc, T
     arrayCopy(tab, tab + TScore::TAB_SIZE, sc.data_tab);
 }
 
-
 template <typename TValue, typename TSequenceValue, typename TSpec>
 inline void
 setDefaultScoreMatrix(Score<TValue, ScoreMatrix<TSequenceValue, TSpec> > & sc, Default) {
diff --git a/include/seqan/score/score_matrix_dyn.h b/include/seqan/score/score_matrix_dyn.h
new file mode 100644
index 0000000..8f80070
--- /dev/null
+++ b/include/seqan/score/score_matrix_dyn.h
@@ -0,0 +1,240 @@
+// ==========================================================================
+//                 SeqAn - The Library for Sequence Analysis
+// ==========================================================================
+// Copyright (c) 2006-2016, Knut Reinert, FU Berlin
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
+//       its contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+//
+// ==========================================================================
+// Author: Hannes Hauswedell <hannes.hauswedell at fu-berlin.de
+// ==========================================================================
+// Code for dynamically selectable protein matrixes
+// ==========================================================================
+
+#ifndef SEQAN_SCORE_MATRIX_DYN_H_
+#define SEQAN_SCORE_MATRIX_DYN_H_
+
+namespace seqan
+{
+
+// ============================================================================
+// Classes, Tags, Enums
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// helpers
+// ----------------------------------------------------------------------------
+
+struct ScoreSpecSelectable {};
+
+namespace impl
+{
+namespace score
+{
+// ATTENTION: always keep in sync with the enum below!
+using MatrixTags = TagList<ScoreSpecBlosum30,
+                   TagList<ScoreSpecBlosum45,
+                   TagList<ScoreSpecBlosum62,
+                   TagList<ScoreSpecBlosum80,
+                   TagList<ScoreSpecPam40,
+                   TagList<ScoreSpecPam120,
+                   TagList<ScoreSpecPam200,
+                   TagList<ScoreSpecPam250,
+                   TagList<ScoreSpecVtml200
+                   > > > > > > > > >;
+} // namespace impl::score
+} // namespace impl
+
+// ----------------------------------------------------------------------------
+// Enum AminoAcidScoreMatrixID
+// ----------------------------------------------------------------------------
+
+/*!
+ * @enum AminoAcidScoreMatrixID
+ * @brief Enum with aliases for the different Score specializations
+ * @signature enum class AminoAcidScoreMatrixID : uint8_t { ... };
+ *
+ * @headerfile <seqan/score.h>
+ *
+ * @val AminoAcidScoreMatrixID AminoAcidScoreMatrixID::BLOSUM30
+ * @brief Blosum30, see also @link Blosum30 @endlink
+ *
+ * @val AminoAcidScoreMatrixID AminoAcidScoreMatrixID::BLOSUM45
+ * @brief Blosum45, see also @link Blosum45 @endlink
+ *
+ * @val AminoAcidScoreMatrixID AminoAcidScoreMatrixID::BLOSUM62
+ * @brief Blosum62, see also @link Blosum62 @endlink
+ *
+ * @val AminoAcidScoreMatrixID AminoAcidScoreMatrixID::BLOSUM80
+ * @brief Blosum80, see also @link Blosum80 @endlink
+ *
+ * @val AminoAcidScoreMatrixID AminoAcidScoreMatrixID::PAM40
+ * @brief Pam40, see also @link Pam40 @endlink
+ *
+ * @val AminoAcidScoreMatrixID AminoAcidScoreMatrixID::PAM120
+ * @brief Pam120, see also @link Pam120 @endlink
+ *
+ * @val AminoAcidScoreMatrixID AminoAcidScoreMatrixID::PAM200
+ * @brief Pam200, see also @link Pam200 @endlink
+ *
+ * @val AminoAcidScoreMatrixID AminoAcidScoreMatrixID::PAM250
+ * @brief Pam250, see also @link Pam250 @endlink
+ *
+ * @val AminoAcidScoreMatrixID AminoAcidScoreMatrixID::VTML200
+ * @brief Vtml200, see also @link Vtml200 @endlink
+ */
+
+enum class AminoAcidScoreMatrixID : std::underlying_type_t<decltype(Find<impl::score::MatrixTags, ScoreSpecBlosum30>::VALUE)>
+{
+    BLOSUM30 = Find<impl::score::MatrixTags, ScoreSpecBlosum30>::VALUE,
+    BLOSUM45 = Find<impl::score::MatrixTags, ScoreSpecBlosum45>::VALUE,
+    BLOSUM62 = Find<impl::score::MatrixTags, ScoreSpecBlosum62>::VALUE,
+    BLOSUM80 = Find<impl::score::MatrixTags, ScoreSpecBlosum80>::VALUE,
+    PAM40    = Find<impl::score::MatrixTags, ScoreSpecPam40>::VALUE,
+    PAM120   = Find<impl::score::MatrixTags, ScoreSpecPam120>::VALUE,
+    PAM200   = Find<impl::score::MatrixTags, ScoreSpecPam200>::VALUE,
+    PAM250   = Find<impl::score::MatrixTags, ScoreSpecPam250>::VALUE,
+    VTML200  = Find<impl::score::MatrixTags, ScoreSpecVtml200>::VALUE
+};
+
+// ----------------------------------------------------------------------------
+// Class SelectableAminoAcidMatrix
+// ----------------------------------------------------------------------------
+
+/*!
+ * @typedef SelectableAminoAcidMatrix
+ * @headerfile <seqan/score.h>
+ * @brief An AminoAcid score matrix that can be "specialized" at run-time
+ *
+ * @signature using SelectableAminoAcidMatrix =  Score<int, ScoreMatrix<AminoAcid, ScoreSpecSelectable> >;
+ */
+
+template <typename TValue>
+class Score<TValue, ScoreMatrix<AminoAcid, ScoreSpecSelectable> > :
+    public Score<TValue, ScoreMatrix<AminoAcid, Default> >
+{
+public:
+    AminoAcidScoreMatrixID _ident = static_cast<AminoAcidScoreMatrixID>(0u);
+};
+
+using SelectableAminoAcidMatrix =  Score<int, ScoreMatrix<AminoAcid, ScoreSpecSelectable> >;
+
+// ============================================================================
+// Functions
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// helper functions
+// ----------------------------------------------------------------------------
+
+namespace impl
+{
+namespace score
+{
+
+template <typename TCurTag,
+          typename TRunnable>
+inline void
+matrixTagDispatch(TagList<TCurTag, void> const &,
+                  AminoAcidScoreMatrixID const m,
+                  TRunnable const & runnable)
+{
+    using TUndType = std::underlying_type_t<AminoAcidScoreMatrixID>;
+    if (Find<impl::score::MatrixTags, TCurTag>::VALUE == static_cast<TUndType>(m))
+        runnable(TCurTag());
+    else
+        SEQAN_FAIL("ERROR: Recursing the ScoreMatrixTags failed, please report this as a BUG!");
+}
+
+template <typename TCurTag,
+          typename TRestList,
+          typename TRunnable>
+inline void
+matrixTagDispatch(TagList<TCurTag, TRestList> const &,
+                  AminoAcidScoreMatrixID const m,
+                  TRunnable const & runnable)
+{
+    using TUndType = std::underlying_type_t<AminoAcidScoreMatrixID>;
+    if (Find<impl::score::MatrixTags, TCurTag>::VALUE == static_cast<TUndType>(m))
+        runnable(TCurTag());
+    else
+        matrixTagDispatch(TRestList(), m, runnable);
+}
+
+} // namespace impl::score
+} // namespace impl
+
+// ----------------------------------------------------------------------------
+// Function setScoreMatrixById()
+// ----------------------------------------------------------------------------
+
+/*!
+ * @fn SelectableAminoAcidMatrix#setScoreMatrixById
+ * @headerfile <seqan/score.h>
+ * @brief Set the substitution score matrix
+ *
+ * @signature void setScoreMatrixById(SelectableAminoAcidMatrix & sc, AminoAcidScoreMatrixID const id)
+ *
+ * @param[in,out] sc    The score object to be modified.
+ * @param[in]     id    The ID of the matrix (@link AminoAcidScoreMatrixID @endlink).
+ */
+
+template <typename TValue>
+inline void
+setScoreMatrixById(Score<TValue, ScoreMatrix<AminoAcid, ScoreSpecSelectable> > & sc,
+                   AminoAcidScoreMatrixID const m)
+{
+    sc._ident = m;
+    impl::score::matrixTagDispatch(impl::score::MatrixTags(), m, [&sc] (auto const & tag)
+    {
+        setDefaultScoreMatrix(sc, tag);
+    });
+}
+
+// ----------------------------------------------------------------------------
+// Function getScoreMatrixId()
+// ----------------------------------------------------------------------------
+
+/*!
+ * @fn SelectableAminoAcidMatrix#getScoreMatrixId
+ * @headerfile <seqan/score.h>
+ * @brief Get the matrix ID from the dynamic matrix object.
+ *
+ * @signature AminoAcidScoreMatrixID getScoreMatrixId(SelectableAminoAcidMatrix const & sc)
+ *
+ * @param[in] sc    The score object to be modified.
+ */
+
+template <typename TValue>
+inline AminoAcidScoreMatrixID
+getScoreMatrixId(Score<TValue, ScoreMatrix<AminoAcid, ScoreSpecSelectable> > const & sc)
+{
+    return sc._ident;
+}
+
+}
+
+#endif // SEQAN_SCORE_MATRIX_DYN_H_
diff --git a/include/seqan/score/score_simd_wrapper.h b/include/seqan/score/score_simd_wrapper.h
new file mode 100644
index 0000000..5bf95b4
--- /dev/null
+++ b/include/seqan/score/score_simd_wrapper.h
@@ -0,0 +1,183 @@
+// ==========================================================================
+//                 SeqAn - The Library for Sequence Analysis
+// ==========================================================================
+// Copyright (c) 2006-2016, Knut Reinert, FU Berlin
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
+//       its contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+//
+// ==========================================================================
+// Author: Rene Rahn <rene.rahn at fu-berlin.de>
+// ==========================================================================
+
+#ifndef INCLUDE_SEQAN_SCORE_SCORE_SIMD_WRAPPER_H_
+#define INCLUDE_SEQAN_SCORE_SCORE_SIMD_WRAPPER_H_
+
+namespace seqan
+{
+
+// ============================================================================
+// Forwards
+// ============================================================================
+
+// ============================================================================
+// Tags, Classes, Enums
+// ============================================================================
+
+template <typename TScoreSpec>
+struct ScoreSimdWrapper;
+
+// ----------------------------------------------------------------------------
+// Class Score<SimdWrapper>
+// ----------------------------------------------------------------------------
+
+/*!
+ * @class ScoreSimdWrapper
+ * @headerfile <seqan/score.h>
+ * @extends SimpleScore
+ * @brief A wrapper class to extend score calsses for SIMD usage.
+ *
+ * @signature template<typename TScoreVec, typename TScoreSpec>
+ *            class Score<TScoreVec, ScoreSimdWrapper<TScoreSpec> >;
+ *
+ * @tparam TScoreVec    The simd vector type.
+ * @tparam TScoreSpec   The score type to be wrapped.
+ *
+ * Extends a @link SimpleScore @endlink or a @link MatrixScore @endlink for the use with simd vectors.
+ */
+
+template <typename TScoreVec, typename TScore>
+class Score<TScoreVec, ScoreSimdWrapper<TScore> >
+{
+public:
+    using TBaseScoreSpec = typename Spec<TScore>::Type;
+
+    // We can be either a SimpleScore or a ScoreMatrix.
+    TScoreVec data_match        = createVector<TScoreVec>(0);
+    TScoreVec data_mismatch     = createVector<TScoreVec>(-1);
+    TScoreVec data_gap_extend   = createVector<TScoreVec>(-1);
+    TScoreVec data_gap_open     = createVector<TScoreVec>(-1);
+
+    TScore const * _baseScorePtr;   // Only needed for the ScoreMatrix data table.
+
+    // Default Constructor.
+    Score()
+    {}
+
+    // Constructing from base score.
+    template <typename TScoreVal2, typename TScoreSpec2>
+    Score(Score<TScoreVal2, TScoreSpec2> const & pScore,
+          SEQAN_CTOR_ENABLE_IF(And<IsSameType<TScoreSpec2, Simple>, IsSameType<TScoreSpec2, TBaseScoreSpec> >)) :
+            data_match(createVector<TScoreVec>(scoreMatch(pScore))),
+            data_mismatch(createVector<TScoreVec>(scoreMismatch(pScore))),
+            data_gap_extend(createVector<TScoreVec>(scoreGapExtend(pScore))),
+            data_gap_open(createVector<TScoreVec>(scoreGapOpen(pScore))),
+            _baseScorePtr(nullptr)
+    {
+        ignoreUnusedVariableWarning(dummy);
+    }
+
+    template <typename TScoreVal2, typename TScoreSpec2>
+    Score(Score<TScoreVal2, TScoreSpec2> const & pScore,
+          SEQAN_CTOR_ENABLE_IF(And<IsScoreMatrix_<TScoreSpec2>, IsSameType<TScoreSpec2, TBaseScoreSpec> >)) :
+            data_gap_extend(createVector<TScoreVec>(scoreGapExtend(pScore))),
+            data_gap_open(createVector<TScoreVec>(scoreGapOpen(pScore))),
+            _baseScorePtr(&pScore)
+    {
+        ignoreUnusedVariableWarning(dummy);
+    }
+};
+
+// ============================================================================
+// Metafunctions
+// ============================================================================
+
+// ============================================================================
+// Functions
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// Function score(); SimpleScore Wrapper
+// ----------------------------------------------------------------------------
+
+template <typename TValue, typename TScore, typename TSeqHVal, typename TSeqVVal>
+inline SEQAN_FUNC_DISABLE_IF(IsScoreMatrix_<TScore>, TValue)
+score(Score<TValue, ScoreSimdWrapper<TScore> > const & me, TSeqHVal const & valH, TSeqVVal const & valV)
+{
+    return blend(scoreMismatch(me), scoreMatch(me), cmpEq(valH, valV));
+}
+
+// ----------------------------------------------------------------------------
+// Function score(); ScoreMatrix Wrapper
+// ----------------------------------------------------------------------------
+
+template <unsigned LENGTH>
+struct VectorLength_
+{};
+
+#define SEQAN_FIXED_VECTOR_FILL_VALUE_IMPL_2(t, d, pos)     d[t[1 + pos]], d[t[pos]]
+#define SEQAN_FIXED_VECTOR_FILL_VALUE_IMPL_4(t, d, pos)     SEQAN_FIXED_VECTOR_FILL_VALUE_IMPL_2(t, d, pos + 2), SEQAN_FIXED_VECTOR_FILL_VALUE_IMPL_2(t, d, pos)
+#define SEQAN_FIXED_VECTOR_FILL_VALUE_IMPL_8(t, d, pos)     SEQAN_FIXED_VECTOR_FILL_VALUE_IMPL_4(t, d, pos + 4), SEQAN_FIXED_VECTOR_FILL_VALUE_IMPL_4(t, d, pos)
+#define SEQAN_FIXED_VECTOR_FILL_VALUE_IMPL_16(t, d, pos)    SEQAN_FIXED_VECTOR_FILL_VALUE_IMPL_8(t, d, pos + 8), SEQAN_FIXED_VECTOR_FILL_VALUE_IMPL_8(t, d, pos)
+#define SEQAN_FIXED_VECTOR_FILL_VALUE_IMPL_32(t, d, pos)    SEQAN_FIXED_VECTOR_FILL_VALUE_IMPL_16(t, d, pos + 16), SEQAN_FIXED_VECTOR_FILL_VALUE_IMPL_16(t, d, pos)
+
+#define SEQAN_FIXED_VECTOR_FILL_VALUE_IMPL_DELEGATE(MACRO, t, d) MACRO(t, d, 0)
+#define SEQAN_FIXED_VECTOR_FILL_VALUE_IMPL(t, d, SIZE) SEQAN_FIXED_VECTOR_FILL_VALUE_IMPL_DELEGATE(SEQAN_FIXED_VECTOR_FILL_VALUE_IMPL_##SIZE, t, d)
+
+#define SEQAN_FIXED_VECTOR_FILL_IMPL(SIZE)                                        \
+template <typename TTarget, typename TPos, typename TData>                        \
+inline void                                                                       \
+_fixedSizeVectorFill(TTarget & target,                                            \
+                     TPos const & pos,                                            \
+                     TData const & data,                                          \
+                     VectorLength_<SIZE> const & /*scope*/)                       \
+{                                                                                 \
+    fillVector(target, SEQAN_FIXED_VECTOR_FILL_VALUE_IMPL(pos, data, SIZE));      \
+}
+
+SEQAN_FIXED_VECTOR_FILL_IMPL(2)
+SEQAN_FIXED_VECTOR_FILL_IMPL(4)
+SEQAN_FIXED_VECTOR_FILL_IMPL(8)
+SEQAN_FIXED_VECTOR_FILL_IMPL(16)
+SEQAN_FIXED_VECTOR_FILL_IMPL(32)
+
+// TODO(rrahn): We should make the fixedSizeVectorFill the fall back gather interface, if gather is not implemented.
+template <typename TValue, typename TScore, typename TVal1, typename TVal2>
+inline SEQAN_FUNC_ENABLE_IF(IsScoreMatrix_<TScore>, TValue)
+score(Score<TValue, ScoreSimdWrapper<TScore> > const & sc, TVal1 const & val1, TVal2 const & val2)
+{
+    SEQAN_ASSERT(sc._baseScorePtr != nullptr);
+#ifdef __AVX2__
+    return gather(&sc._baseScorePtr->data_tab[0], val1 + val2);
+#else
+    TValue results;
+    _fixedSizeVectorFill(results, val1 + val2, sc._baseScorePtr->data_tab, VectorLength_<LENGTH<TVal1>::VALUE>());
+    return results;
+#endif
+}
+
+}
+
+#endif  // #ifndef INCLUDE_SEQAN_SCORE_SCORE_SIMD_WRAPPER_H_
diff --git a/include/seqan/score/score_simple.h b/include/seqan/score/score_simple.h
index 406c7b5..aa967fe 100644
--- a/include/seqan/score/score_simple.h
+++ b/include/seqan/score/score_simple.h
@@ -276,7 +276,6 @@ setScoreGap(Score<TValue, TSpec> & me, TValue const & value) {
     me.data_gap_extend = value;
 }
 
-
 // TODO(rmaerker): Remove this here!
 //template <typename TValue, typename TSpec, typename TVal1, typename TVal2>
 //inline TValue
diff --git a/include/seqan/seeds/banded_chain_alignment.h b/include/seqan/seeds/banded_chain_alignment.h
index c580833..881c722 100644
--- a/include/seqan/seeds/banded_chain_alignment.h
+++ b/include/seqan/seeds/banded_chain_alignment.h
@@ -168,7 +168,7 @@ namespace seqan {
  *
  * @section Tutorial
  *
- * Also see the <a href="http://seqan.readthedocs.org/en/develop/Tutorial/SeedAndExtend.html">Seed-and-Extend Tutorial</a>
+ * Also see the <a href="http://seqan.readthedocs.io/en/develop/Tutorial/SeedAndExtend.html">Seed-and-Extend Tutorial</a>
  *
  * @section Reference
  *
diff --git a/include/seqan/seeds/banded_chain_alignment_impl.h b/include/seqan/seeds/banded_chain_alignment_impl.h
index d5434db..6203472 100644
--- a/include/seqan/seeds/banded_chain_alignment_impl.h
+++ b/include/seqan/seeds/banded_chain_alignment_impl.h
@@ -446,7 +446,7 @@ _computeCell(TDPScout & scout,
     typedef DPMetaColumn_<TDPProfile, TColumnDescriptor> TMetaColumnProfile;
 
     activeCell = _verticalCellInitialization(scout, traceMatrixNavigator);
-    assignValue(traceMatrixNavigator, +TraceBitMap_::NONE);
+    assignValue(traceMatrixNavigator, +TraceBitMap_<>::NONE);
     if (TrackingEnabled_<TMetaColumnProfile, TCellDescriptor>::VALUE)
         _applyBandedChainTracking(scout, traceMatrixNavigator, activeCell, TColumnDescriptor(), TCellDescriptor(), TDPProfile());
 }
@@ -468,7 +468,7 @@ _computeHorizontalInitCell(TDPScout & scout,
     typedef DPMetaColumn_<TDPProfile, TColumnDescriptor> TMetaColumnProfile;
 
     activeCell = _horizontalCellInitialization(scout, traceMatrixNavigator);
-    assignValue(traceMatrixNavigator, +TraceBitMap_::NONE);
+    assignValue(traceMatrixNavigator, +TraceBitMap_<>::NONE);
     if (TrackingEnabled_<TMetaColumnProfile, TCellDescriptor>::VALUE)
         _applyBandedChainTracking(scout, traceMatrixNavigator, activeCell, TColumnDescriptor(), TCellDescriptor(), TDPProfile());
 }
diff --git a/include/seqan/seeds/banded_chain_alignment_scout.h b/include/seqan/seeds/banded_chain_alignment_scout.h
index a8e1458..02f45f4 100644
--- a/include/seqan/seeds/banded_chain_alignment_scout.h
+++ b/include/seqan/seeds/banded_chain_alignment_scout.h
@@ -131,8 +131,9 @@ public:
 // Metafunction ScoutSpecForAlignmentAlgorithm_
 // ----------------------------------------------------------------------------
 
-template <typename TSpec, typename TDPMatrixLocation>
-struct ScoutSpecForAlignmentAlgorithm_<BandedChainAlignment_<TSpec, TDPMatrixLocation> >
+template <typename TSpec, typename TDPMatrixLocation, typename TDPCell>
+struct ScoutSpecForAlignmentAlgorithm_<BandedChainAlignment_<TSpec, TDPMatrixLocation>,
+                                       DPScoutState_<BandedChainAlignmentScoutState<TDPCell> > >
 {
     typedef BandedChainAlignmentScout Type;
 };
diff --git a/include/seqan/seeds/banded_chain_alignment_traceback.h b/include/seqan/seeds/banded_chain_alignment_traceback.h
index 436397d..40970b2 100644
--- a/include/seqan/seeds/banded_chain_alignment_traceback.h
+++ b/include/seqan/seeds/banded_chain_alignment_traceback.h
@@ -218,12 +218,12 @@ inline void
 _correctDPCellForAffineGaps(DPCell_<TScoreValue, AffineGaps> & dpCell, TTraceValue lastTraceValue)
 {
     typedef DPCell_<TScoreValue, AffineGaps> TDPCell;
-    if (lastTraceValue & TraceBitMap_::DIAGONAL)
+    if (lastTraceValue & TraceBitMap_<>::DIAGONAL)
     {
         dpCell._verticalScore = DPCellDefaultInfinity<TDPCell>::VALUE;
         dpCell._horizontalScore = DPCellDefaultInfinity<TDPCell>::VALUE;
     }
-    else if (lastTraceValue & TraceBitMap_::VERTICAL)
+    else if (lastTraceValue & TraceBitMap_<>::VERTICAL)
         dpCell._horizontalScore = DPCellDefaultInfinity<TDPCell>::VALUE;
     else
         dpCell._verticalScore = DPCellDefaultInfinity<TDPCell>::VALUE;
@@ -255,7 +255,7 @@ void _computeTraceback(TTarget & target,
     typedef typename MakeSigned<TPosition>::Type TSignedPosition;
     typedef typename Size<TSequenceH>::Type TSizeSeqH;
     typedef typename Size<TSequenceV>::Type TSizeSeqV;
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
 
     if (IsSameType<TTracebackSpec, TracebackOff>::VALUE)
         return;
@@ -287,18 +287,18 @@ void _computeTraceback(TTarget & target,
     {
         if (tracebackCoordinator._currRow != seqVSize)
             _recordSegment(target, seqHSize, tracebackCoordinator._currRow, seqVSize - tracebackCoordinator._currRow,
-                           +TraceBitMap_::VERTICAL);
+                           +TraceBitMap_<>::VERTICAL);
         if (tracebackCoordinator._currColumn != seqHSize)
             _recordSegment(target, tracebackCoordinator._currColumn, tracebackCoordinator._currRow, seqHSize -
-                           tracebackCoordinator._currColumn, +TraceBitMap_::HORIZONTAL);
+                           tracebackCoordinator._currColumn, +TraceBitMap_<>::HORIZONTAL);
 
-        _computeTraceback(target, matrixNavigator, position(matrixNavigator), seqH, seqV, band, dpProfile);
+        _computeTraceback(target, matrixNavigator, position(matrixNavigator), seqHSize, seqVSize, band, dpProfile);
         return;
     }
 
     TSize fragmentLength = 0;
     TTarget tmp;
-    while(!_hasReachedEnd(tracebackCoordinator) && traceValue != +TraceBitMap_::NONE)
+    while(!_hasReachedEnd(tracebackCoordinator) && traceValue != +TraceBitMap_<>::NONE)
         _doTraceback(tmp, matrixNavigator, traceValue, lastTraceValue, fragmentLength, tracebackCoordinator, TGapCosts(), TIsGapsLeft());
 
     TSignedPosition horizontalInitPos = static_cast<TSignedPosition>(tracebackCoordinator._currColumn) -
@@ -329,7 +329,7 @@ void _computeTraceback(TTarget & target,
         else if (horizontalInitPos < 0)  // Here we are in a horizontal gap.
             _recordSegment(target, tracebackCoordinator._currColumn, tracebackCoordinator._currRow, -horizontalInitPos,
                            lastTraceValue);
-        _computeTraceback(target, matrixNavigator, position(matrixNavigator), seqH, seqV, band, dpProfile);
+        _computeTraceback(target, matrixNavigator, position(matrixNavigator), seqHSize, seqVSize, band, dpProfile);
     }
 
     if (IsSameType<TDPMatrixLocation, BandedChainInitialDPMatrix>::VALUE)
@@ -345,9 +345,9 @@ void _computeTraceback(TTarget & target,
                         currRow -= length(container(matrixNavigator), +DPMatrixDimension_::VERTICAL) - 1 + lowerDiagonal(band) - currCol;
         // Record leading gaps if any.
         if (currRow != 0u)
-            _recordSegment(target, 0, 0, currRow, +TraceBitMap_::VERTICAL);
+            _recordSegment(target, 0, 0, currRow, +TraceBitMap_<>::VERTICAL);
         if (currCol != 0u)
-            _recordSegment(target, 0, 0, currCol, +TraceBitMap_::HORIZONTAL);
+            _recordSegment(target, 0, 0, currCol, +TraceBitMap_<>::HORIZONTAL);
     }
 }
 
@@ -355,16 +355,21 @@ void _computeTraceback(TTarget & target,
 // Function _computeTraceback()        [BandedChainAlignment, global interface]
 // ----------------------------------------------------------------------------
 
-template <typename TTarget, typename TDPTraceMatrixNavigator, typename TDPScout, typename TSequenceH, typename TSequenceV,
-typename TBandFlag, typename TFreeEndGaps, typename TDPMatrixLocation, typename TGapCosts, typename TTracebackSpec>
+template <typename TTarget,
+          typename TDPTraceMatrixNavigator,
+          typename TDPCell, typename TScoutSpec,
+          typename TSequenceH, typename TSequenceV,
+          typename TBandFlag,
+          typename TFreeEndGaps, typename TDPMatrixLocation, typename TGapCosts, typename TTracebackSpec>
 void _computeTraceback(StringSet<TTarget> & targetSet,
                        TDPTraceMatrixNavigator & matrixNavigator,
-                       TDPScout & dpScout,
+                       DPScout_<TDPCell, TScoutSpec> & dpScout,
                        TSequenceH const & seqH,
                        TSequenceV const & seqV,
                        DPBandConfig<TBandFlag> const & band,
                        DPProfile_<BandedChainAlignment_<TFreeEndGaps, TDPMatrixLocation>, TGapCosts, TTracebackSpec> const & dpProfile)
 {
+    typedef DPScout_<TDPCell, TScoutSpec> TDPScout;
     typedef typename TDPScout::TMaxHostPositionString TMaxHostPositions;
     typedef typename Iterator<TMaxHostPositions, Standard>::Type TMaxHostPositionsIterator;
 
diff --git a/include/seqan/seq_io/fai_index.h b/include/seqan/seq_io/fai_index.h
index c7d7b94..ee79122 100644
--- a/include/seqan/seq_io/fai_index.h
+++ b/include/seqan/seq_io/fai_index.h
@@ -104,7 +104,7 @@ clear(FaiIndexEntry_ &entry)
  * FAI indices allow the rast random access to sequences or parts of sequences in a FASTA file.  Originally, they were
  * introduced in the <a href="http://samtools.sourceforge.net/samtools.shtml">samtools</a> program.
  *
- * Also see the <a href="http://seqan.readthedocs.org/en/develop/Tutorial/IndexedFastaIO.html">Indexed FASTA I/O
+ * Also see the <a href="http://seqan.readthedocs.io/en/develop/Tutorial/IndexedFastaIO.html">Indexed FASTA I/O
  * Tutorial</a>.
  *
  * @section Example
@@ -173,6 +173,8 @@ inline void clear(FaiIndex & index)
     clear(index.indexEntryStore);
     clear(index.seqNameStore);
     clear(index.seqNameStoreCache);
+    index.file.clear();
+    index.file.seekg(0, index.file.beg);
 }
 
 // ----------------------------------------------------------------------------
diff --git a/include/seqan/seq_io/read_genbank.h b/include/seqan/seq_io/read_genbank.h
index c26df06..2527237 100644
--- a/include/seqan/seq_io/read_genbank.h
+++ b/include/seqan/seq_io/read_genbank.h
@@ -195,6 +195,7 @@ readRecord(TSeqString & seq, TFwdIterator & iter, GenBankSequence)
 
         readUntil(seq, iter, isNewline, asserter);
     }
+    skipUntil(iter, NotFunctor<IsWhitespace>());
 }
 
 // readRecord() for GenBank id/seq pairs.
diff --git a/include/seqan/sequence.h b/include/seqan/sequence.h
index 37765e1..9966590 100644
--- a/include/seqan/sequence.h
+++ b/include/seqan/sequence.h
@@ -75,15 +75,6 @@
 #include <seqan/misc/bit_twiddling_functors.h>
 #include <seqan/misc/bit_twiddling.h>
 
-// ----------------------------------------------------------------------------
-// Thrust prerequisites.
-// ----------------------------------------------------------------------------
-
-#ifdef PLATFORM_CUDA
-#include <thrust/host_vector.h>
-#include <thrust/device_vector.h>
-#endif
-
 // ===========================================================================
 // Forwards.
 // ===========================================================================
@@ -133,9 +124,6 @@
 
 #include <seqan/sequence/adapt_stl_container.h>
 #include <seqan/sequence/adapt_array_pointer.h>
-#ifdef PLATFORM_CUDA
-#include <seqan/sequence/adapt_thrust_vector.h>
-#endif
 
 // ===========================================================================
 // StringSets.
@@ -145,9 +133,6 @@
 #include <seqan/sequence/sequence_concatenator.h>
 #include <seqan/sequence/string_set_base.h>
 #include <seqan/sequence/string_set_view.h>
-#ifdef PLATFORM_CUDA
-#include <seqan/sequence/string_set_device.h>
-#endif
 #include <seqan/sequence/string_set_concat_direct.h>
 #include <seqan/sequence/string_set_dependent_tight.h>
 #include <seqan/sequence/string_set_dependent_generous.h>
diff --git a/include/seqan/sequence/adapt_thrust_vector.h b/include/seqan/sequence/adapt_thrust_vector.h
deleted file mode 100644
index efc75ad..0000000
--- a/include/seqan/sequence/adapt_thrust_vector.h
+++ /dev/null
@@ -1,800 +0,0 @@
-// ==========================================================================
-//                 SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2013 NVIDIA Corporation
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of NVIDIA Corporation nor the names of
-//       its contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-// Author: David Weese <david.weese at fu-berlin.de>
-// Author: Enrico Siragusa <enrico.siragusa at fu-berlin.de>
-// ==========================================================================
-// Adaptions for Thrust device_vectors to SeqAn strings.
-// ==========================================================================
-// NOTE(esiragusa): This adaption is not tested. Anything beside assign might
-// not work as expected.
-
-#ifndef SEQAN_SEQUENCE_ADAPT_THRUST_VECTOR_H_
-#define SEQAN_SEQUENCE_ADAPT_THRUST_VECTOR_H_
-
-namespace seqan {
-
-// ===========================================================================
-// Enums, Tags, Classes, Specializations
-// ===========================================================================
-
-// ===========================================================================
-// Metafunctions
-// ===========================================================================
-
-// ----------------------------------------------------------------------------
-// Metafunction IsSequence
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc>
-struct IsSequence<thrust::device_vector<TChar, TAlloc> >
-{
-    typedef True Type;
-    enum { VALUE = true };
-};
-
-// ----------------------------------------------------------------------------
-// Metafunction IsContiguous
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc>
-struct IsContiguous<thrust::device_vector<TChar, TAlloc> >
-{
-    enum { VALUE = true };
-};
-
-template <typename  TChar, typename TAlloc>
-struct IsContiguous<thrust::device_vector<TChar, TAlloc> const>
-        : IsContiguous<thrust::device_vector<TChar, TAlloc> > {};
-
-// ----------------------------------------------------------------------------
-// Metafunction Value
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc>
-struct Value<thrust::device_vector<TChar, TAlloc> >
-{
-    typedef typename thrust::device_vector<TChar, TAlloc>::value_type Type;
-};
-
-template <typename TChar, typename TAlloc>
-struct Value<thrust::device_vector<TChar, TAlloc> const>
-        : Value<thrust::device_vector<TChar, TAlloc> > {};
-
-// ----------------------------------------------------------------------------
-// Metafunction Reference
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc>
-struct Reference<thrust::device_vector<TChar, TAlloc> >
-{
-    typedef typename thrust::device_vector<TChar, TAlloc>::reference Type;
-};
-
-template <typename TChar,  typename TAlloc>
-struct Reference<thrust::device_vector<TChar, TAlloc> const>
-{
-    typedef typename thrust::device_vector<TChar, TAlloc>::const_reference Type;
-};
-
-template <typename TValue>
-struct Reference<thrust::detail::normal_iterator<thrust::device_ptr<TValue> > >
-{
-    typedef thrust::device_reference<TValue> Type;
-};
-
-template <typename TValue>
-struct Reference<thrust::detail::normal_iterator<thrust::device_ptr<TValue> > const>
-{
-    typedef thrust::device_reference<TValue> const Type;
-};
-
-// ----------------------------------------------------------------------------
-// Metafunction GetValue
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc>
-struct GetValue<thrust::device_vector<TChar, TAlloc> > : Reference<thrust::device_vector<TChar, TAlloc> const> {};
-
-template <typename TChar, typename TAlloc>
-struct GetValue<thrust::device_vector<TChar, TAlloc> const> : Reference<thrust::device_vector<TChar, TAlloc> const> {};
-
-// ----------------------------------------------------------------------------
-// Metafunction Iterator
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc>
-struct Iterator<thrust::device_vector<TChar, TAlloc>, Rooted>
-{
-    typedef thrust::device_vector<TChar, TAlloc> TVector_;
-    typedef Iter<TVector_, StdIteratorAdaptor> TIterator_;
-    typedef Iter<TVector_, AdaptorIterator<TIterator_> > Type;
-};
-
-template <typename TChar, typename TAlloc>
-struct Iterator<thrust::device_vector<TChar, TAlloc> const, Rooted>
-{
-    typedef thrust::device_vector<TChar, TAlloc> const TVector_;
-    typedef Iter<TVector_, StdIteratorAdaptor> TIterator_;
-    typedef Iter<TVector_, AdaptorIterator<TIterator_> > Type;
-};
-
-template <typename TChar,  typename TAlloc>
-struct Iterator<thrust::device_vector<TChar, TAlloc>, Standard>
-{
-    typedef typename thrust::device_vector<TChar, TAlloc>::iterator Type;
-};
-
-template <typename TChar,  typename TAlloc>
-struct Iterator<thrust::device_vector<TChar, TAlloc> const, Standard>
-{
-    typedef typename thrust::device_vector<TChar, TAlloc>::const_iterator Type;
-};
-
-// ----------------------------------------------------------------------------
-// Metafunction Position
-// ----------------------------------------------------------------------------
-
-template <typename TChar,  typename TAlloc>
-struct Position<thrust::device_vector<TChar, TAlloc> >
-{
-    typedef typename thrust::device_vector<TChar, TAlloc>::size_type Type;
-};
-
-// ----------------------------------------------------------------------------
-// Metafunction Size
-// ----------------------------------------------------------------------------
-
-template <typename TChar,  typename TAlloc>
-struct Size<thrust::device_vector<TChar, TAlloc> >
-{
-    typedef typename thrust::device_vector<TChar, TAlloc>::size_type Type;
-};
-
-// ----------------------------------------------------------------------------
-// Metafunction Difference
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc>
-struct Difference<thrust::device_vector<TChar, TAlloc> >
-{
-    typedef typename thrust::device_vector<TChar, TAlloc>::difference_type Type;
-};
-
-// ----------------------------------------------------------------------------
-// Metafunction DefaultOverflowImplicit
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc>
-struct DefaultOverflowImplicit<thrust::device_vector<TChar, TAlloc> >
-{
-    typedef Generous Type;
-};
-
-// ----------------------------------------------------------------------------
-// Metafunction StdContainerIterator
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc>
-struct StdContainerIterator<thrust::device_vector<TChar, TAlloc> >
-{
-    typedef thrust::device_vector<TChar, TAlloc> TContainer_;
-    typedef typename TContainer_::iterator Type;
-};
-
-template <typename TChar, typename TAlloc>
-struct StdContainerIterator<thrust::device_vector<TChar, TAlloc> const>
-{
-    typedef thrust::device_vector<TChar, TAlloc> TContainer_;
-    typedef typename TContainer_::const_iterator Type;
-};
-
-// ----------------------------------------------------------------------------
-// Metafunction View
-// ----------------------------------------------------------------------------
-
-template <typename TValue, typename TAlloc>
-struct View<thrust::device_vector<TValue, TAlloc> >
-{
-    typedef ContainerView<thrust::device_vector<TValue, TAlloc> >   Type;
-};
-
-// ----------------------------------------------------------------------------
-// Metafunction IsDevice
-// ----------------------------------------------------------------------------
-
-template <typename TValue, typename TAlloc>
-struct IsDevice<thrust::device_vector<TValue, TAlloc> > : public True {};
-
-// ----------------------------------------------------------------------------
-// Metafunction Device
-// ----------------------------------------------------------------------------
-
-template <typename TValue, typename TAlloc>
-struct Device<String<TValue, TAlloc> >
-{
-    typedef thrust::device_vector<TValue>   Type;
-};
-
-template <typename TValue>
-struct Device<std::vector<TValue> >
-{
-    typedef thrust::device_vector<TValue>   Type;
-};
-
-template <>
-struct Device<std::string>
-{
-    typedef thrust::device_vector<char>     Type;
-};
-
-// ===========================================================================
-// Functions
-// ===========================================================================
-
-// ----------------------------------------------------------------------------
-// Function getObjectId()
-// ----------------------------------------------------------------------------
-
-template <typename TChar,  typename TAlloc>
-inline void const *
-getObjectId(thrust::device_vector<TChar, TAlloc> const & me)
-{
-    if (me.empty())
-        return NULL;
-    else
-        return (& *(me.end() - 1)) + 1;
-}
-
-// ----------------------------------------------------------------------------
-// Function begin()
-// ----------------------------------------------------------------------------
-
-template <typename TChar,  typename TAlloc>
-inline typename Iterator<thrust::device_vector<TChar, TAlloc>, Standard>::Type
-begin(thrust::device_vector<TChar, TAlloc> & me, Standard)
-{
-    return typename Iterator<thrust::device_vector<TChar, TAlloc>, Standard>::Type(me.begin());
-}
-
-template <typename TChar,  typename TAlloc>
-inline typename Iterator<thrust::device_vector<TChar, TAlloc> const, Standard>::Type
-begin(thrust::device_vector<TChar, TAlloc> const & me, Standard)
-{
-    return typename Iterator<thrust::device_vector<TChar, TAlloc> const, Standard>::Type(me.begin());
-}
-
-// ----------------------------------------------------------------------------
-// Function end()
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc>
-inline typename Iterator<thrust::device_vector<TChar, TAlloc>, Standard>::Type
-end(thrust::device_vector<TChar, TAlloc> & me, Standard)
-{
-    return typename Iterator<thrust::device_vector<TChar, TAlloc>, Standard>::Type(me.end());
-}
-
-template <typename TChar,  typename TAlloc>
-inline typename Iterator<thrust::device_vector<TChar, TAlloc> const, Standard>::Type
-end(thrust::device_vector<TChar, TAlloc> const & me, Standard)
-{
-    return typename Iterator<thrust::device_vector<TChar, TAlloc> const, Standard>::Type(me.end());
-}
-
-// ----------------------------------------------------------------------------
-// Function value()
-// ----------------------------------------------------------------------------
-
-template <typename TChar,  typename TAlloc, typename TPos>
-inline typename Reference<thrust::device_vector<TChar, TAlloc> >::Type
-value(thrust::device_vector<TChar, TAlloc> & me, TPos pos)
-{
-    return me[pos];
-}
-
-template <typename TChar,  typename TAlloc, typename TPos>
-inline typename Reference<thrust::device_vector<TChar, TAlloc> const>::Type
-value(thrust::device_vector<TChar, TAlloc> const & me, TPos pos)
-{
-    return me[pos];
-}
-
-// ----------------------------------------------------------------------------
-// Function length()
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc>
-inline typename Size<thrust::device_vector<TChar, TAlloc> >::Type
-length(thrust::device_vector<TChar, TAlloc> const & me)
-{
-    return me.size();
-}
-
-// ----------------------------------------------------------------------------
-// Function capacity()
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc>
-inline typename Size<thrust::device_vector<TChar, TAlloc> >::Type
-capacity(thrust::device_vector<TChar, TAlloc> const & me)
-{
-    return me.capacity();
-}
-
-// ----------------------------------------------------------------------------
-// Function empty()
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc>
-inline bool
-empty(thrust::device_vector<TChar, TAlloc> const & me)
-{
-    return me.empty();
-}
-
-// ----------------------------------------------------------------------------
-// Function clear()
-// ----------------------------------------------------------------------------
-
-template <typename TChar,  typename TAlloc>
-inline void
-clear(thrust::device_vector<TChar, TAlloc> & me)
-{
-    me.clear();
-}
-
-// ----------------------------------------------------------------------------
-// Function front()
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc>
-inline typename Reference<thrust::device_vector<TChar, TAlloc> >::Type
-front(thrust::device_vector<TChar, TAlloc> & list)
-{
-    return list.front();
-}
-
-template <typename TChar, typename TAlloc>
-inline typename Reference<thrust::device_vector<TChar, TAlloc> const>::Type
-front(thrust::device_vector<TChar, TAlloc> const & list)
-{
-    return list.front();
-}
-
-// ----------------------------------------------------------------------------
-// Function back()
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc>
-inline typename Reference<thrust::device_vector<TChar, TAlloc> >::Type
-back(thrust::device_vector<TChar, TAlloc> & list)
-{
-    return list.back();
-}
-
-template <typename TChar, typename TAlloc>
-inline typename Reference<thrust::device_vector<TChar, TAlloc> const>::Type
-back(thrust::device_vector<TChar, TAlloc> const & list)
-{
-    return list.back();
-}
-
-// ----------------------------------------------------------------------------
-// Function assign()
-// ----------------------------------------------------------------------------
-
-template <typename TChar,  typename TAlloc, typename TSource>
-inline void
-assign(thrust::device_vector<TChar, TAlloc> & target, TSource const & source)
-{
-    assign(target, source, Generous());
-}
-
-template <typename TChar,  typename TAlloc, typename TSource>
-inline void
-assign(thrust::device_vector<TChar, TAlloc> & target, TSource & source)
-{
-    assign(target, reinterpret_cast<TSource const &>(source), Generous());
-}
-
-template <typename TChar,  typename TAlloc, typename TSource, typename TSize>
-inline void
-assign(thrust::device_vector<TChar, TAlloc> & target, TSource const & source, TSize limit)
-{
-    assign(target, source, limit, Generous());
-}
-
-template <typename TChar,  typename TAlloc, typename TSource, typename TSize>
-inline void
-assign(thrust::device_vector<TChar, TAlloc> & target, TSource & source, TSize limit)
-{
-    assign(target, reinterpret_cast<TSource const &>(source), limit, Generous());
-}
-
-// ----------------------------------------------------------------------------
-// Function assign(); Generous
-// ----------------------------------------------------------------------------
-
-template <typename TChar,  typename TAlloc, typename TSource>
-inline void
-assign(thrust::device_vector<TChar, TAlloc> & target, TSource const & source, Generous)
-{
-    target.assign(begin(source, Standard()), end(source, Standard()));
-}
-
-template <typename TChar, typename TAlloc, typename TSource>
-inline void
-assign(thrust::device_vector<TChar, TAlloc> & target, TSource & source, Generous)
-{
-    assign(target, reinterpret_cast<TSource const &>(source), Generous());
-}
-
-template <typename TChar,  typename TAlloc, typename TSource>
-inline void
-assign(thrust::device_vector<TChar, TAlloc> & target,
-       TSource const & source,
-       typename Size<thrust::device_vector<TChar, TAlloc> >::Type limit,
-       Generous)
-{
-    typename Iterator<TSource const, Standard>::Type source_begin = begin(source, Standard());
-    typename Size<TSource const>::Type source_length = length(source);
-    if (source_length > limit)
-    {
-        source_length = limit;
-    }
-    target.assign(source_begin, source_begin + source_length);
-}
-
-template <typename TChar,  typename TAlloc, typename TSource>
-inline void
-assign(thrust::device_vector<TChar, TAlloc> & target,
-       TSource & source,
-       typename Size<thrust::device_vector<TChar, TAlloc> >::Type limit,
-       Generous)
-{
-    assign(target, reinterpret_cast<TSource const &>(source), limit, Generous());
-}
-
-// ----------------------------------------------------------------------------
-// Function assign(); Limit
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc, typename TSource>
-inline void
-assign(thrust::device_vector<TChar, TAlloc> & target, TSource const & source, Limit)
-{
-    assign(target, source, target.capacity(), Generous());
-}
-
-template <typename TChar, typename TAlloc, typename TSource>
-inline void
-assign(thrust::device_vector<TChar, TAlloc> & target, TSource & source, Limit)
-{
-    assign(target, reinterpret_cast<TSource const &>(source), Generous());
-}
-
-template <typename TChar, typename TAlloc, typename TSource>
-inline void
-assign(thrust::device_vector<TChar, TAlloc> & target,
-       TSource const & source,
-       typename Size<thrust::device_vector<TChar, TAlloc> >::Type limit,
-       Limit)
-{
-    if (limit > target.capacity())
-    {
-        limit = target.capacity();
-    }
-
-    assign(target, source, limit, Generous());
-}
-
-template <typename TChar, typename TAlloc, typename TSource>
-inline void
-assign(thrust::device_vector<TChar, TAlloc> & target,
-       TSource & source,
-       typename Size<thrust::device_vector<TChar, TAlloc> >::Type limit,
-       Limit)
-{
-    assign(target, reinterpret_cast<TSource const &>(source), limit, Generous());
-}
-
-// ----------------------------------------------------------------------------
-// Function append(); Generous
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc, typename TSource>
-inline void
-append(thrust::device_vector<TChar, TAlloc> & target, TSource const & source, Generous)
-{
-    target.insert(target.end(), begin(source, Standard()), end(source, Standard()));
-}
-
-template <typename TChar,  typename TAlloc, typename TSource>
-inline void
-append(thrust::device_vector<TChar, TAlloc> & target,
-       TSource const & source,
-       typename Size<thrust::device_vector<TChar, TAlloc> >::Type limit,
-       Generous)
-{
-    typename Size<thrust::device_vector<TChar, TAlloc> >::Type target_length = target.length();
-    if (target_length > limit)
-    {
-        target.resize(limit);
-    }
-    else
-    {
-        limit -= target_length;
-        typename Iterator<TSource const, Standard>::Type source_begin = begin(source, Standard());
-        typename Size<TSource const>::Type source_length = length(source);
-        if (source_length > limit)
-        {
-            source_length = limit;
-        }
-
-        target.insert(target.end(), source_begin, source_begin + source_length);
-    }
-}
-
-// ----------------------------------------------------------------------------
-// Function append(); Limit
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc, typename TSource>
-inline void
-append(thrust::device_vector<TChar, TAlloc> & target, TSource const & source, Limit)
-{
-    append(target, source, target.capacity(), Generous());
-}
-
-template <typename TChar, typename TAlloc, typename TSource>
-inline void
-append(thrust::device_vector<TChar, TAlloc> & target,
-       TSource const & source,
-       typename Size<thrust::device_vector<TChar, TAlloc> >::Type limit,
-       Limit)
-{
-    if (limit > target.capacity())
-    {
-        limit = target.capacity();
-    }
-
-    append(target, source, limit, Generous());
-}
-
-// ----------------------------------------------------------------------------
-// Function appendValue()
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc, typename TValue, typename TTag>
-inline void
-appendValue(thrust::device_vector<TChar, TAlloc> & me, TValue const & _value, TTag)
-{
-    me.push_back(_value);
-}
-
-template <typename TChar, typename TAlloc, typename TValue>
-inline void
-appendValue(thrust::device_vector<TChar, TAlloc> & me, TValue const & _value, Limit)
-{
-    if (capacity(me) > length(me)) me.push_back(_value);
-}
-
-// ----------------------------------------------------------------------------
-// Function replace()
-// ----------------------------------------------------------------------------
-
-template <typename TChar,  typename TAlloc, typename TSource>
-inline void
-replace(thrust::device_vector<TChar, TAlloc> & target,
-        typename Position<thrust::device_vector<TChar, TAlloc> >::Type pos_begin,
-        typename Position<thrust::device_vector<TChar, TAlloc> >::Type pos_end,
-        TSource const & source,
-        Generous)
-{
-    typename Size<thrust::device_vector<TChar, TAlloc> >::Type target_size = pos_end-pos_begin;
-    typename Size<thrust::device_vector<TChar, TAlloc> >::Type source_size =length(source);
-
-    if (target_size >= source_size)
-    {
-        copy(source.begin(),source.end(), target.begin()+pos_begin);
-        if (target_size > source_size)
-            target.erase(target.begin()+pos_begin+source_size,target.begin()+pos_end);
-    }
-    else
-    {
-        copy(source.begin(),source.begin()+target_size,target.begin()+pos_begin);
-        target.insert(target.begin()+pos_end,source.begin()+target_size,source.end());
-    }
-}
-
-template <typename TChar, typename TAlloc, typename TSource>
-inline void
-replace(thrust::device_vector<TChar, TAlloc> & target,
-        typename Position<thrust::device_vector<TChar, TAlloc> >::Type pos_begin,
-        typename Position<thrust::device_vector<TChar, TAlloc> >::Type pos_end,
-        TSource const & source,
-        typename Size<thrust::device_vector<TChar, TAlloc> >::Type limit,
-        Generous)
-{
-    if (pos_begin >= limit)
-    {
-        target.resize(limit);
-    }
-    else
-    {
-        typename Size<TSource const>::Type source_length = length(source);
-        typename Size<thrust::device_vector<TChar, TAlloc> >::Type pos_mid = pos_begin + source_length;
-        typename Size<thrust::device_vector<TChar, TAlloc> >::Type pos_limit(limit);
-        if (pos_mid > limit)
-        {
-            target.resize(limit);
-            replace(target,pos_begin,pos_limit,source);
-            target.resize(limit);
-        }
-        else
-        {
-            replace(target,pos_begin,pos_end,source);
-            if (target.size() > limit)
-            {
-                target.resize(limit);
-            }
-        }
-    }
-
-}
-
-template <typename TChar,  typename TAlloc, typename TSource>
-inline void
-replace(thrust::device_vector<TChar, TAlloc> & target,
-        typename Position<thrust::device_vector<TChar, TAlloc> >::Type pos_begin,
-        typename Position<thrust::device_vector<TChar, TAlloc> >::Type pos_end,
-        TSource const & source,
-        Limit)
-{
-    replace(target, pos_begin, pos_end, source, target.capacity(), Generous());
-}
-
-template <typename TChar, typename TAlloc, typename TSource>
-inline void
-replace(thrust::device_vector<TChar, TAlloc> & target,
-        typename Position<thrust::device_vector<TChar, TAlloc> >::Type pos_begin,
-        typename Position<thrust::device_vector<TChar, TAlloc> >::Type pos_end,
-        TSource const & source,
-        typename Size<thrust::device_vector<TChar, TAlloc> >::Type limit,
-        Limit)
-{
-    if (limit > target.capacity())
-    {
-        limit = target.capacity();
-    }
-    replace(target, pos_begin, pos_end, source, limit, Generous());
-}
-
-
-// Handling of iterators as begin and end.
-
-template<typename TChar, typename TCharTraits, typename TAlloc, typename TSource, typename TExpand>
-inline void
-replace(thrust::device_vector<TChar, TAlloc> & target,
-        typename Iterator<thrust::device_vector<TChar, TAlloc>, Rooted>::Type pos_begin,
-        typename Iterator<thrust::device_vector<TChar, TAlloc>, Rooted>::Type pos_end,
-        TSource & source,
-        Tag<TExpand> const tag)
-{
-    replace(target, position(pos_begin), position(pos_end), source, tag);
-}
-
-/*
-template<typename TChar, typename TAlloc, typename TSource, typename TExpand>
-inline void
-replace(thrust::device_vector<TChar, TAlloc> & target,
-        typename Iterator<thrust::device_vector<TChar, TAlloc>, Rooted>::Type pos_begin,
-        typename Iterator<thrust::device_vector<TChar, TAlloc>, Rooted>::Type pos_end,
-        TSource & source,
-        typename Size<thrust::device_vector<TChar, TAlloc> >::Type limit,
-        Tag<TExpand> const tag)
-{
-    replace(target,  position(pos_begin),  position(pos_end), source, tag);
-}
-*/
-
-// ----------------------------------------------------------------------------
-// Function reserve()
-// ----------------------------------------------------------------------------
-
-template <typename TChar,  typename TAlloc, typename TSize, typename TExpand>
-inline typename Size<thrust::device_vector<TChar, TAlloc> >::Type
-reserve(thrust::device_vector<TChar, TAlloc> & seq, TSize new_capacity, Tag<TExpand> const & tag)
-{
-    seq.reserve(new_capacity);
-    return _capacityReturned(seq, new_capacity, tag);
-}
-
-template <typename TChar, typename TAlloc, typename TSize>
-inline typename Size<thrust::device_vector<TChar, TAlloc> >::Type
-reserve(thrust::device_vector<TChar, TAlloc> & seq, TSize new_capacity, Insist const &)
-{
-    // do nothing
-    return _capacityReturned(seq, new_capacity, Insist());
-}
-
-template <typename TChar,  typename TAlloc, typename TSize>
-inline typename Size<thrust::device_vector<TChar, TAlloc> >::Type
-reserve(thrust::device_vector<TChar, TAlloc> & seq, TSize new_capacity, Limit const &)
-{
-    // do nothing
-    return _capacityReturned(seq, new_capacity, Limit());
-}
-
-// ----------------------------------------------------------------------------
-// Function resize()
-// ----------------------------------------------------------------------------
-
-template <typename TChar,  typename TAlloc, typename TSize, typename TExpand>
-inline typename Size<thrust::device_vector<TChar, TAlloc> >::Type
-resize(thrust::device_vector<TChar, TAlloc> & me, TSize new_length, Tag<TExpand> const &)
-{
-    me.resize(new_length);
-    return me.size();
-}
-
-// ----------------------------------------------------------------------------
-// Function fill()
-// ----------------------------------------------------------------------------
-
-template <typename TChar, typename TAlloc, typename TSize, typename TExpand>
-inline typename Size<thrust::device_vector<TChar, TAlloc> >::Type
-fill(thrust::device_vector<TChar, TAlloc> & me, TSize new_length, TChar const & val, Tag<TExpand> const &)
-{
-    me.resize(new_length, val);
-    return me.length();
-}
-
-// ----------------------------------------------------------------------------
-// Function view()
-// ----------------------------------------------------------------------------
-
-template <typename TContainer, typename TAlloc>
-inline typename View<thrust::device_vector<TContainer, TAlloc> >::Type
-view(thrust::device_vector<TContainer, TAlloc> & container)
-{
-    typedef typename View<thrust::device_vector<TContainer, TAlloc> >::Type TView;
-
-    if (empty(container)) return TView();
-
-    return TView(thrust::raw_pointer_cast(&container.front()),
-                 thrust::raw_pointer_cast(&container.front()) + container.size());
-}
-
-}  // namespace seqan
-
-#endif  // #ifndef SEQAN_SEQUENCE_ADAPT_THRUST_VECTOR_H_
diff --git a/include/seqan/sequence/container_view.h b/include/seqan/sequence/container_view.h
index f2188f9..b8e64b9 100644
--- a/include/seqan/sequence/container_view.h
+++ b/include/seqan/sequence/container_view.h
@@ -100,27 +100,27 @@ public:
      * @param end An iterator pointing to the end of the view.
      */
 
-    SEQAN_HOST_DEVICE inline
+    inline
     ContainerView() :
         _begin(),
         _end()
     {}
 
     template <typename TOtherContainer>
-    SEQAN_HOST_DEVICE inline
+    inline
     ContainerView(TOtherContainer & cont):
         _begin(begin(cont, Standard())),
         _end(end(cont, Standard()))
     {}
 
     template <typename TOtherContainer>
-    SEQAN_HOST_DEVICE inline
+    inline
     ContainerView(TOtherContainer const & cont):
         _begin(begin(cont, Standard())),
         _end(end(cont, Standard()))
     {}
 
-    SEQAN_HOST_DEVICE inline
+    inline
     ContainerView(TIterator const & begin, TIterator const & end):
         _begin(begin),
         _end(end)
@@ -131,7 +131,7 @@ public:
     // ------------------------------------------------------------------------
 
     template <typename TOtherContainer>
-    SEQAN_HOST_DEVICE inline
+    inline
     ContainerView &
     operator= (TOtherContainer & other)
     {
@@ -144,7 +144,7 @@ public:
     // ------------------------------------------------------------------------
 
     template <typename TPos>
-    SEQAN_HOST_DEVICE inline
+    inline
     typename Reference<ContainerView>::Type
     operator[] (TPos pos)
     {
@@ -152,7 +152,7 @@ public:
     }
 
     template <typename TPos>
-    SEQAN_HOST_DEVICE inline
+    inline
     typename GetValue<ContainerView>::Type
     operator[] (TPos pos) const
     {
@@ -193,27 +193,27 @@ public:
     // ContainerView Constructors
     // ------------------------------------------------------------------------
 
-    SEQAN_HOST_DEVICE inline
+    inline
     ContainerView() :
         TBase(),
         _capacity(0)
     {}
 
     template <typename TOtherContainer>
-    SEQAN_HOST_DEVICE inline
+    inline
     ContainerView(TOtherContainer & cont) :
         TBase(cont),
         _capacity(capacity(cont))
     {}
 
     template <typename TOtherContainer>
-    SEQAN_HOST_DEVICE inline
+    inline
     ContainerView(TOtherContainer const & cont) :
         TBase(cont),
         _capacity(capacity(cont))
     {}
 
-    SEQAN_HOST_DEVICE inline
+    inline
     ContainerView(TIterator const & begin, TIterator const & end) :
         TBase(begin, end),
         _capacity(end - begin)
@@ -307,22 +307,6 @@ template <typename TContainer, typename TSpec>
 struct Iterator<ContainerView<TContainer, TSpec> const, Standard>:
     public Iterator<TContainer const, Standard> {};
 
-#ifdef PLATFORM_CUDA
-template <typename TContainer, typename TAlloc, typename TSpec>
-struct Iterator<ContainerView<thrust::device_vector<TContainer, TAlloc>, TSpec>, Standard>
-{
-    typedef typename thrust::device_vector<TContainer, TAlloc>::pointer         TIterator_;
-    typedef typename thrust::detail::pointer_traits<TIterator_>::raw_pointer    Type;
-};
-
-template <typename TContainer, typename TAlloc, typename TSpec>
-struct Iterator<ContainerView<thrust::device_vector<TContainer, TAlloc>, TSpec> const, Standard>
-{
-    typedef typename thrust::device_vector<TContainer const, TAlloc>::pointer   TIterator_;
-    typedef typename thrust::detail::pointer_traits<TIterator_>::raw_pointer    Type;
-};
-#endif
-
 // ----------------------------------------------------------------------------
 // Metafunction Difference
 // ----------------------------------------------------------------------------
@@ -422,7 +406,7 @@ struct View<Segment<THost, TSpec> >
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TSpec>
-SEQAN_HOST_DEVICE inline
+inline
 typename Iterator<ContainerView<TContainer, TSpec>, Standard>::Type
 begin(ContainerView<TContainer, TSpec> & view, Standard)
 {
@@ -430,7 +414,7 @@ begin(ContainerView<TContainer, TSpec> & view, Standard)
 }
 
 template <typename TContainer, typename TSpec>
-SEQAN_HOST_DEVICE inline
+inline
 typename Iterator<ContainerView<TContainer, TSpec> const, Standard>::Type
 begin(ContainerView<TContainer, TSpec> const & view, Standard)
 {
@@ -442,7 +426,7 @@ begin(ContainerView<TContainer, TSpec> const & view, Standard)
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TSpec>
-SEQAN_HOST_DEVICE inline
+inline
 typename Iterator<ContainerView<TContainer, TSpec>, Standard>::Type
 end(ContainerView<TContainer, TSpec> & view, Standard)
 {
@@ -450,7 +434,7 @@ end(ContainerView<TContainer, TSpec> & view, Standard)
 }
 
 template <typename TContainer, typename TSpec>
-SEQAN_HOST_DEVICE inline
+inline
 typename Iterator<ContainerView<TContainer, TSpec> const, Standard>::Type
 end(ContainerView<TContainer, TSpec> const & view, Standard)
 {
@@ -462,7 +446,7 @@ end(ContainerView<TContainer, TSpec> const & view, Standard)
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TSpec, typename TPos>
-SEQAN_HOST_DEVICE inline
+inline
 typename Reference<ContainerView<TContainer, TSpec> >::Type
 value(ContainerView<TContainer, TSpec> & view, TPos pos)
 {
@@ -471,7 +455,7 @@ value(ContainerView<TContainer, TSpec> & view, TPos pos)
 }
 
 template <typename TContainer, typename TSpec, typename TPos>
-SEQAN_HOST_DEVICE inline
+inline
 typename Reference<ContainerView<TContainer, TSpec> const>::Type
 value(ContainerView<TContainer, TSpec> const & view, TPos pos)
 {
@@ -484,7 +468,7 @@ value(ContainerView<TContainer, TSpec> const & view, TPos pos)
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TSpec, typename TPos>
-SEQAN_HOST_DEVICE inline
+inline
 typename GetValue<ContainerView<TContainer, TSpec> >::Type
 getValue(ContainerView<TContainer, TSpec> & view, TPos pos)
 {
@@ -493,7 +477,7 @@ getValue(ContainerView<TContainer, TSpec> & view, TPos pos)
 }
 
 template <typename TContainer, typename TSpec, typename TPos>
-SEQAN_HOST_DEVICE inline
+inline
 typename GetValue<ContainerView<TContainer, TSpec> const>::Type
 getValue(ContainerView<TContainer, TSpec> const & view, TPos pos)
 {
@@ -506,7 +490,7 @@ getValue(ContainerView<TContainer, TSpec> const & view, TPos pos)
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TSpec>
-SEQAN_HOST_DEVICE inline
+inline
 typename Size<ContainerView<TContainer, TSpec> >::Type
 length(ContainerView<TContainer, TSpec> const & view)
 {
@@ -522,7 +506,7 @@ length(ContainerView<TContainer, TSpec> const & view)
 // and need to make sure that it has a certain length
 
 template <typename TContainer, typename TSpec, typename TSize, typename TValue, typename TExpand>
-SEQAN_HOST_DEVICE inline typename Size< ContainerView<TContainer, TSpec> >::Type
+inline typename Size< ContainerView<TContainer, TSpec> >::Type
 resize(ContainerView<TContainer, TSpec> & me, TSize new_length, TValue /* val */, Tag<TExpand>)
 {
     ignoreUnusedVariableWarning(new_length);
@@ -532,7 +516,7 @@ resize(ContainerView<TContainer, TSpec> & me, TSize new_length, TValue /* val */
 }
 
 template <typename TContainer, typename TSpec, typename TSize, typename TExpand>
-SEQAN_HOST_DEVICE inline typename Size< ContainerView<TContainer, TSpec> >::Type
+inline typename Size< ContainerView<TContainer, TSpec> >::Type
 resize(ContainerView<TContainer, TSpec> & me, TSize new_length, Tag<TExpand> tag)
 {
     return resize(me, new_length, Nothing(), tag);
@@ -543,7 +527,7 @@ resize(ContainerView<TContainer, TSpec> & me, TSize new_length, Tag<TExpand> tag
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TSpec, typename TSize, typename TValue, typename TExpand>
-SEQAN_HOST_DEVICE inline typename Size< ContainerView<TContainer, Resizable<TSpec> > >::Type
+inline typename Size< ContainerView<TContainer, Resizable<TSpec> > >::Type
 resize(ContainerView<TContainer, Resizable<TSpec> > & me, TSize new_length, TValue /* val */, Tag<TExpand>)
 {
     SEQAN_ASSERT_LEQ(new_length, (TSize)capacity(me));
@@ -554,7 +538,7 @@ resize(ContainerView<TContainer, Resizable<TSpec> > & me, TSize new_length, TVal
 }
 
 template <typename TContainer, typename TSpec, typename TSize, typename TExpand>
-SEQAN_HOST_DEVICE inline typename Size< ContainerView<TContainer, Resizable<TSpec> > >::Type
+inline typename Size< ContainerView<TContainer, Resizable<TSpec> > >::Type
 resize(ContainerView<TContainer, Resizable<TSpec> > & me, TSize new_length, Tag<TExpand> tag)
 {
     return resize(me, new_length, Nothing(), tag);
@@ -562,7 +546,7 @@ resize(ContainerView<TContainer, Resizable<TSpec> > & me, TSize new_length, Tag<
 
 // NOTE(esiragusa): It is not necessary to overload it, but otherwise I had to qualify the generic one :(
 template <typename TContainer, typename TSpec, typename TSize>
-SEQAN_HOST_DEVICE inline typename Size< ContainerView<TContainer, Resizable<TSpec> > >::Type
+inline typename Size< ContainerView<TContainer, Resizable<TSpec> > >::Type
 resize(ContainerView<TContainer, Resizable<TSpec> > & me, TSize new_length)
 {
     typedef ContainerView<TContainer, Resizable<TSpec> >    TView;
@@ -575,14 +559,14 @@ resize(ContainerView<TContainer, Resizable<TSpec> > & me, TSize new_length)
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TSpec, typename TPosEnd>
-SEQAN_HOST_DEVICE inline typename Prefix<ContainerView<TContainer, TSpec> const>::Type
+inline typename Prefix<ContainerView<TContainer, TSpec> const>::Type
 prefix(ContainerView<TContainer, TSpec> const & view, TPosEnd pos_end)
 {
     return typename Prefix<ContainerView<TContainer, TSpec> const>::Type(view._begin, view._begin + pos_end);
 }
 
 template <typename TContainer, typename TSpec, typename TPosEnd>
-SEQAN_HOST_DEVICE inline typename Prefix<ContainerView<TContainer, TSpec> >::Type
+inline typename Prefix<ContainerView<TContainer, TSpec> >::Type
 prefix(ContainerView<TContainer, TSpec> & view, TPosEnd pos_end)
 {
     return prefix(reinterpret_cast<ContainerView<TContainer, TSpec> const &>(view), pos_end);
@@ -593,14 +577,14 @@ prefix(ContainerView<TContainer, TSpec> & view, TPosEnd pos_end)
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TSpec, typename TPosBegin>
-SEQAN_HOST_DEVICE inline typename Suffix<ContainerView<TContainer, TSpec> const>::Type
+inline typename Suffix<ContainerView<TContainer, TSpec> const>::Type
 suffix(ContainerView<TContainer, TSpec> const & view, TPosBegin pos_begin)
 {
     return typename Suffix<ContainerView<TContainer, TSpec> const>::Type(view._begin + pos_begin, view._end);
 }
 
 template <typename TContainer, typename TSpec, typename TPosBegin>
-SEQAN_HOST_DEVICE inline typename Suffix<ContainerView<TContainer, TSpec> >::Type
+inline typename Suffix<ContainerView<TContainer, TSpec> >::Type
 suffix(ContainerView<TContainer, TSpec> & view, TPosBegin pos_begin)
 {
     return suffix(reinterpret_cast<ContainerView<TContainer, TSpec> const &>(view), pos_begin);
@@ -611,14 +595,14 @@ suffix(ContainerView<TContainer, TSpec> & view, TPosBegin pos_begin)
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TSpec, typename TPosBegin, typename TPosEnd>
-SEQAN_HOST_DEVICE inline typename Infix<ContainerView<TContainer, TSpec> const>::Type
+inline typename Infix<ContainerView<TContainer, TSpec> const>::Type
 infix(ContainerView<TContainer, TSpec> const & view, TPosBegin pos_begin, TPosEnd pos_end)
 {
     return typename Infix<ContainerView<TContainer, TSpec> >::Type(view._begin + pos_begin, view._begin + pos_end);
 }
 
 template <typename TContainer, typename TSpec, typename TPosBegin, typename TPosEnd>
-SEQAN_HOST_DEVICE inline typename Infix<ContainerView<TContainer, TSpec> >::Type
+inline typename Infix<ContainerView<TContainer, TSpec> >::Type
 infix(ContainerView<TContainer, TSpec> & view, TPosBegin pos_begin, TPosEnd pos_end)
 {
     return infix(reinterpret_cast<ContainerView<TContainer, TSpec> const &>(view), pos_begin, pos_end);
@@ -656,7 +640,7 @@ inline void assign(ContainerView<TContainer, Resizable<TSpec> > & view, TOtherCo
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Size<ContainerView<TContainer, Resizable<TSpec> > >::Type
+inline typename Size<ContainerView<TContainer, Resizable<TSpec> > >::Type
 capacity(ContainerView<TContainer, Resizable<TSpec> > const & view)
 {
     return view._capacity;
@@ -667,7 +651,7 @@ capacity(ContainerView<TContainer, Resizable<TSpec> > const & view)
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TSpec, typename TValue, typename TExpand>
-SEQAN_HOST_DEVICE inline void
+inline void
 appendValue(ContainerView<TContainer, Resizable<TSpec> > & view, TValue const & _value, Tag<TExpand> tag)
 {
     resize(view, length(view) + 1, tag);
@@ -676,7 +660,7 @@ appendValue(ContainerView<TContainer, Resizable<TSpec> > & view, TValue const &
 
 // NOTE(esiragusa): It is not necessary to overload it, but otherwise I had to qualify the generic one :(
 template <typename TContainer, typename TSpec, typename TValue>
-SEQAN_HOST_DEVICE inline void
+inline void
 appendValue(ContainerView<TContainer, Resizable<TSpec> > & view, TValue const & _value)
 {
     typedef ContainerView<TContainer, Resizable<TSpec> >    TView;
@@ -689,7 +673,7 @@ appendValue(ContainerView<TContainer, Resizable<TSpec> > & view, TValue const &
 // ----------------------------------------------------------------------------
 
 template <typename TContainer, typename TSpec>
-SEQAN_HOST_DEVICE inline void
+inline void
 clear(ContainerView<TContainer, Resizable<TSpec> > & view)
 {
     resize(view, 0, Exact());
diff --git a/include/seqan/sequence/container_view_zip.h b/include/seqan/sequence/container_view_zip.h
index 0957b51..7c45d97 100644
--- a/include/seqan/sequence/container_view_zip.h
+++ b/include/seqan/sequence/container_view_zip.h
@@ -282,6 +282,11 @@ template <typename... TContTypes>
 inline ContainerView<std::tuple<typename std::remove_reference<TContTypes>::type...>, ZipContainer<> >
 makeZipView(TContTypes && ...contArgs)
 {
+#ifdef SEQAN_CLANG35_FREEBSD_BUG
+    // the condition always evaluates to false, but ensures that the assertion
+    // only fires if the function is actually instantiated
+    static_assert(sizeof...(contArgs) == 0, "The Zip Container triggers a bug on FreeBSD+clang-3.5, please upgrade you compiler!");
+#endif
     return ContainerView<std::tuple<typename std::remove_reference<TContTypes>::type...>, ZipContainer<> >(std::forward<TContTypes>(contArgs)...);
 }
 
diff --git a/include/seqan/sequence/segment_base.h b/include/seqan/sequence/segment_base.h
index 1411d61..98b0dd9 100644
--- a/include/seqan/sequence/segment_base.h
+++ b/include/seqan/sequence/segment_base.h
@@ -293,7 +293,7 @@ struct Value<Segment<THost, TSpec> > :
 
 template <typename THost, typename TSpec>
 struct Value<Segment<THost, TSpec> const > :
-    Value<THost const> {};
+    Value<THost> {};
 
 //////////////////////////////////////////////////////////////////////////////
 
@@ -303,7 +303,7 @@ struct GetValue<Segment<THost, TSpec> > :
 
 template <typename THost, typename TSpec>
 struct GetValue<Segment<THost, TSpec> const > :
-    GetValue<THost const> {};
+    GetValue<THost> {};
 
 //////////////////////////////////////////////////////////////////////////////
 
@@ -437,14 +437,14 @@ getObjectId(Segment<THost, TSpec> const & me)
 // --------------------------------------------------------------------------
 
 template <typename THost, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Pointer_<Segment<THost, TSpec> >::Type
+inline typename Pointer_<Segment<THost, TSpec> >::Type
 _toPointer(Segment<THost, TSpec> & me)
 {
     return me;
 }
 
 template <typename THost, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Pointer_<Segment<THost, TSpec> const >::Type
+inline typename Pointer_<Segment<THost, TSpec> const >::Type
 _toPointer(Segment<THost, TSpec> const & me)
 {
     return me;
@@ -470,7 +470,7 @@ Segment<THost, TSpec> _fromPointer(Segment<THost, TSpec> const & me)
 //////////////////////////////////////////////////////////////////////////////
 
 template <typename THost, typename TSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 empty(Segment<THost, TSpec> const & me)
 {
     return (beginPosition(me) == endPosition(me));
@@ -479,7 +479,7 @@ empty(Segment<THost, TSpec> const & me)
 //////////////////////////////////////////////////////////////////////////////
 
 template <typename THost, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Size<Segment<THost, TSpec> const>::Type
+inline typename Size<Segment<THost, TSpec> const>::Type
 length(Segment<THost, TSpec> const & me)
 {
     return endPosition(me) - beginPosition(me);
diff --git a/include/seqan/sequence/segment_infix.h b/include/seqan/sequence/segment_infix.h
index 8d2bf19..963ec26 100644
--- a/include/seqan/sequence/segment_infix.h
+++ b/include/seqan/sequence/segment_infix.h
@@ -76,11 +76,11 @@ public:
 public:
     // Check member variables with assertions.  This is called in the
     // constructors.
-    SEQAN_HOST_DEVICE inline void _checkMemberVariables() const {
+    inline void _checkMemberVariables() const {
         SEQAN_ASSERT_LEQ(data_begin_position, data_end_position);
     }
 
-    SEQAN_HOST_DEVICE
+   
     Segment():
         data_host(),
         data_begin_position(0),
@@ -89,7 +89,7 @@ public:
         _checkMemberVariables();
     }
 
-    SEQAN_HOST_DEVICE
+   
     Segment(typename Parameter_<THost>::Type _host):
         data_host(_toPointer(_host)),
         data_begin_position(0),
@@ -98,7 +98,7 @@ public:
         _checkMemberVariables();
     }
 
-    SEQAN_HOST_DEVICE
+   
     Segment(typename Parameter_<THost>::Type _host, typename Position<THost>::Type _begin_index, typename Position<THost>::Type _end_index):
         data_host(_toPointer(_host)),
         data_begin_position(_begin_index),
@@ -115,7 +115,7 @@ public:
     }
 */
 
-    SEQAN_HOST_DEVICE
+   
     Segment(typename Parameter_<THost>::Type _host, typename Iterator<THost, Standard>::Type _begin, typename Iterator<THost, Standard>::Type _end):
         data_host(_toPointer(_host)),
         data_begin_position(position(_begin, _host)),
@@ -125,7 +125,7 @@ public:
     }
 
     template <typename THost2, typename TSpec2>
-    SEQAN_HOST_DEVICE
+   
     Segment(Segment<THost2, TSpec2> const & _other):
         data_host(_toPointer(host(_other))),
         data_begin_position(beginPosition(_other)),
@@ -134,12 +134,12 @@ public:
         _checkMemberVariables();
     }
 
-    SEQAN_HOST_DEVICE
+   
     ~ Segment()
     {
     }
 
-    SEQAN_HOST_DEVICE inline Segment &
+    inline Segment &
     operator = (Segment const & source)
     {
         assign(*this, source);
@@ -189,14 +189,14 @@ public:
 ///Function.host.param.object.type:Class.Segment
 
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Parameter_<THost_>::Type
+inline typename Parameter_<THost_>::Type
 host(Segment<THost_, InfixSegment> & me)
 {
     return _toParameter<THost_>(me.data_host);
 }
 
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Parameter_<THost_>::Type
+inline typename Parameter_<THost_>::Type
 host(Segment<THost_, InfixSegment> const & me)
 {
     return _toParameter<THost_>(me.data_host);
@@ -206,14 +206,14 @@ host(Segment<THost_, InfixSegment> const & me)
 //____________________________________________________________________________
 
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Iterator<Segment<THost_, InfixSegment>, Standard>::Type
+inline typename Iterator<Segment<THost_, InfixSegment>, Standard>::Type
 begin(Segment<THost_, InfixSegment> & me,
     Standard)
 {
     return begin(host(me), Standard()) + me.data_begin_position;
 }
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Iterator<Segment<THost_, InfixSegment> const, Standard>::Type
+inline typename Iterator<Segment<THost_, InfixSegment> const, Standard>::Type
 begin(Segment<THost_, InfixSegment> const & me,
     Standard)
 {
@@ -223,13 +223,13 @@ begin(Segment<THost_, InfixSegment> const & me,
 //____________________________________________________________________________
 
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Position<Segment<THost_, InfixSegment> >::Type
+inline typename Position<Segment<THost_, InfixSegment> >::Type
 beginPosition(Segment<THost_, InfixSegment> & me)
 {
     return me.data_begin_position;
 }
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Position<Segment<THost_, InfixSegment> const>::Type
+inline typename Position<Segment<THost_, InfixSegment> const>::Type
 beginPosition(Segment<THost_, InfixSegment> const & me)
 {
     return me.data_begin_position;
@@ -257,14 +257,14 @@ setBeginPosition(Segment<THost_, InfixSegment> & me, TPosition new_begin)
 //____________________________________________________________________________
 
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Iterator<Segment<THost_, InfixSegment>, Standard>::Type
+inline typename Iterator<Segment<THost_, InfixSegment>, Standard>::Type
 end(Segment<THost_, InfixSegment> & me,
     Standard)
 {
     return begin(host(me), Standard()) + me.data_end_position;
 }
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Iterator<Segment<THost_, InfixSegment> const, Standard>::Type
+inline typename Iterator<Segment<THost_, InfixSegment> const, Standard>::Type
 end(Segment<THost_, InfixSegment> const & me,
     Standard)
 {
@@ -274,13 +274,13 @@ end(Segment<THost_, InfixSegment> const & me,
 //____________________________________________________________________________
 
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Position<Segment<THost_, InfixSegment> >::Type
+inline typename Position<Segment<THost_, InfixSegment> >::Type
 endPosition(Segment<THost_, InfixSegment> & me)
 {
     return me.data_end_position;
 }
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Position<Segment<THost_, InfixSegment> >::Type
+inline typename Position<Segment<THost_, InfixSegment> >::Type
 endPosition(Segment<THost_, InfixSegment> const & me)
 {
     return me.data_end_position;
@@ -356,6 +356,15 @@ template <typename THost>
 struct Infix<THost &>:
     Infix<THost> {};
 
+// ----------------------------------------------------------------------------
+// Metafunction InfixOnValue
+// ----------------------------------------------------------------------------
+
+// The default implementation returns Infix<T>::Type.
+template <typename T>
+struct InfixOnValue :
+    Infix<T> {};
+
 //////////////////////////////////////////////////////////////////////////////
 
 template <typename THost, typename TPosition1, typename TPosition2>
@@ -552,7 +561,7 @@ operator --(Segment<THost, InfixSegment> & segment)
 //////////////////////////////////////////////////////////////////////////////
 
 template <typename THost, typename TSpec, typename TPos>
-SEQAN_HOST_DEVICE inline typename Reference< Segment<THost, TSpec> >::Type
+inline typename Reference< Segment<THost, TSpec> >::Type
 value(Segment<THost, TSpec> & me,
       TPos pos)
 {
@@ -561,7 +570,7 @@ value(Segment<THost, TSpec> & me,
 }
 
 template <typename THost, typename TSpec, typename TPos>
-SEQAN_HOST_DEVICE inline typename Reference< Segment<THost, TSpec> const >::Type
+inline typename Reference< Segment<THost, TSpec> const >::Type
 value(Segment<THost, TSpec> const & me,
       TPos pos)
 {
@@ -572,7 +581,7 @@ value(Segment<THost, TSpec> const & me,
 //////////////////////////////////////////////////////////////////////////////
 
 template <typename T, typename TPosBegin, typename TPosEnd>
-SEQAN_HOST_DEVICE inline typename Infix<T>::Type
+inline typename Infix<T>::Type
 infix(T & t, TPosBegin pos_begin, TPosEnd pos_end)
 {
     return typename Infix<T>::Type(t, pos_begin, pos_end);
@@ -634,28 +643,28 @@ infix(Segment<T, TSpec> const & t,
 //////////////////////////////////////////////////////////////////////////////
 
 template <typename T, typename TPosBegin, typename TSize>
-SEQAN_HOST_DEVICE inline typename Infix<T>::Type
+inline typename Infix<T>::Type
 infixWithLength(T && t, TPosBegin pos_begin, TSize length)
 {
     return infix(t, pos_begin, pos_begin + length);
 }
 
 template <typename T, typename TPosBegin, typename TSize>
-SEQAN_HOST_DEVICE inline typename Infix<T *>::Type
+inline typename Infix<T *>::Type
 infixWithLength(T * t, TPosBegin pos_begin, TSize length)
 {
     return infix(*t, pos_begin, pos_begin + length);
 }
 
 template <typename T, typename TSpec, typename TPosBegin, typename TSize>
-SEQAN_HOST_DEVICE inline typename Infix<Segment<T, TSpec> >::Type
+inline typename Infix<Segment<T, TSpec> >::Type
 infixWithLength(Segment<T, TSpec> & t, TPosBegin pos_begin, TSize length)
 {
     return infix(host(t), beginPosition(t) + pos_begin, beginPosition(t) + pos_begin + length);
 }
 
 template <typename T, typename TSpec, typename TPosBegin, typename TSize>
-SEQAN_HOST_DEVICE inline typename Infix<Segment<T, TSpec> const>::Type
+inline typename Infix<Segment<T, TSpec> const>::Type
 infixWithLength(Segment<T, TSpec> const & t, TPosBegin pos_begin, TSize length)
 {
     return infix(host(t), beginPosition(t) + pos_begin, beginPosition(t) + pos_begin + length);
diff --git a/include/seqan/sequence/segment_prefix.h b/include/seqan/sequence/segment_prefix.h
index 8bd5b46..a762ea3 100644
--- a/include/seqan/sequence/segment_prefix.h
+++ b/include/seqan/sequence/segment_prefix.h
@@ -158,14 +158,14 @@ public:
 // }
 
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Parameter_<THost_>::Type
+inline typename Parameter_<THost_>::Type
 host(Segment<THost_, PrefixSegment> & me)
 {
     return _toParameter<THost_>(me.data_host);
 }
 
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Parameter_<THost_>::Type
+inline typename Parameter_<THost_>::Type
 host(Segment<THost_, PrefixSegment> const & me)
 {
     return _toParameter<THost_>(me.data_host);
@@ -190,7 +190,7 @@ setHost(Segment<THost_ const, PrefixSegment> & me, typename Parameter_<THost_>::
 //____________________________________________________________________________
 
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Iterator<Segment<THost_, PrefixSegment>, Standard>::Type
+inline typename Iterator<Segment<THost_, PrefixSegment>, Standard>::Type
 begin(Segment<THost_, PrefixSegment> & me,
     Standard)
 {
@@ -199,7 +199,7 @@ begin(Segment<THost_, PrefixSegment> & me,
     return begin(tmpHost, Standard());
 }
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Iterator<Segment<THost_, PrefixSegment> const, Standard>::Type
+inline typename Iterator<Segment<THost_, PrefixSegment> const, Standard>::Type
 begin(Segment<THost_, PrefixSegment> const & me,
     Standard)
 {
@@ -210,13 +210,13 @@ begin(Segment<THost_, PrefixSegment> const & me,
 //____________________________________________________________________________
 
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Position<Segment<THost_, PrefixSegment> const>::Type
+inline typename Position<Segment<THost_, PrefixSegment> const>::Type
 beginPosition(Segment<THost_, PrefixSegment> const & /*me*/)
 {
     return 0;
 }
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Position<Segment<THost_, PrefixSegment> >::Type
+inline typename Position<Segment<THost_, PrefixSegment> >::Type
 beginPosition(Segment<THost_, PrefixSegment> & /*me*/)
 {
     return 0;
@@ -233,14 +233,14 @@ setBegin(Segment<THost_, PrefixSegment> &, TIterator)
 //____________________________________________________________________________
 
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Iterator<Segment<THost_, PrefixSegment>, Standard>::Type
+inline typename Iterator<Segment<THost_, PrefixSegment>, Standard>::Type
 end(Segment<THost_, PrefixSegment> & me,
     Standard)
 {
     return begin(host(me), Standard()) + me.data_end_position;
 }
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Iterator<Segment<THost_, PrefixSegment> const, Standard>::Type
+inline typename Iterator<Segment<THost_, PrefixSegment> const, Standard>::Type
 end(Segment<THost_, PrefixSegment> const & me,
     Standard)
 {
@@ -286,13 +286,13 @@ _setLength(
 //____________________________________________________________________________
 
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Position<Segment<THost_, PrefixSegment> >::Type
+inline typename Position<Segment<THost_, PrefixSegment> >::Type
 endPosition(Segment<THost_, PrefixSegment> & me)
 {
     return me.data_end_position;
 }
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Position<Segment<THost_, PrefixSegment> const>::Type
+inline typename Position<Segment<THost_, PrefixSegment> const>::Type
 endPosition(Segment<THost_, PrefixSegment> const & me)
 {
     return me.data_end_position;
@@ -333,6 +333,14 @@ template <typename THost>
 struct Prefix<THost &>:
     Prefix<THost> {};
 
+// ----------------------------------------------------------------------------
+// Metafunction PrefixOnValue
+// ----------------------------------------------------------------------------
+
+template <typename T>
+struct PrefixOnValue :
+    Prefix<T>{};
+
 //////////////////////////////////////////////////////////////////////////////
 
 template <typename THost, typename TPosition>
diff --git a/include/seqan/sequence/segment_suffix.h b/include/seqan/sequence/segment_suffix.h
index b9cffac..7cbbe79 100644
--- a/include/seqan/sequence/segment_suffix.h
+++ b/include/seqan/sequence/segment_suffix.h
@@ -76,7 +76,7 @@ public:
 
 public:
 
-    SEQAN_HOST_DEVICE
+   
     Segment():
         data_host(),
         data_begin_position(0)
@@ -120,7 +120,7 @@ public:
     {
     }
 
-    SEQAN_HOST_DEVICE
+   
     ~ Segment()
     {
     }
@@ -173,14 +173,14 @@ public:
 //////////////////////////////////////////////////////////////////////////////
 
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Parameter_<THost_>::Type
+inline typename Parameter_<THost_>::Type
 host(Segment<THost_, SuffixSegment> & me)
 {
     return _toParameter<THost_>(me.data_host);
 }
 
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Parameter_<THost_>::Type
+inline typename Parameter_<THost_>::Type
 host(Segment<THost_, SuffixSegment> const & me)
 {
     return _toParameter<THost_>(me.data_host);
@@ -205,14 +205,14 @@ setHost(Segment<THost_ const, SuffixSegment> & me, typename Parameter_<THost_>::
 //____________________________________________________________________________
 
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Iterator<Segment<THost_, SuffixSegment>, Standard>::Type
+inline typename Iterator<Segment<THost_, SuffixSegment>, Standard>::Type
 begin(Segment<THost_, SuffixSegment> & me,
     Standard)
 {
     return begin(host(me), Standard()) + me.data_begin_position;
 }
 template <typename THost_>
-SEQAN_HOST_DEVICE inline typename Iterator<Segment<THost_, SuffixSegment> const, Standard>::Type
+inline typename Iterator<Segment<THost_, SuffixSegment> const, Standard>::Type
 begin(Segment<THost_, SuffixSegment> const & me,
     Standard)
 {
@@ -341,6 +341,14 @@ template <typename THost>
 struct Suffix<THost &>:
     Suffix<THost> {};
 
+// ----------------------------------------------------------------------------
+// Metafunction SuffixOnValue
+// ----------------------------------------------------------------------------
+
+template <typename T>
+struct SuffixOnValue :
+    Suffix<T>{};
+
 //////////////////////////////////////////////////////////////////////////////
 
 template <typename THost, typename TPosition>
diff --git a/include/seqan/sequence/sequence_forwards.h b/include/seqan/sequence/sequence_forwards.h
index b9e67d8..ac0cebd 100644
--- a/include/seqan/sequence/sequence_forwards.h
+++ b/include/seqan/sequence/sequence_forwards.h
@@ -86,30 +86,30 @@ typedef Tag<TagGenerous_> Generous;
 typedef Tag<TagInsist_> Insist;
 typedef Tag<TagLimit_> Limit;
 typedef Tag<TagInsist_> Tight;
-template <typename T> SEQAN_HOST_DEVICE inline typename Iterator<T, Standard>::Type _beginDefault(T & me, Standard);
-template <typename T> SEQAN_HOST_DEVICE inline typename Iterator<T const, Standard>::Type _beginDefault(T const & me, Standard);
-template <typename T> SEQAN_HOST_DEVICE inline typename Iterator<T, Rooted>::Type _beginDefault(T & me, Rooted);
-template <typename T> SEQAN_HOST_DEVICE inline typename Iterator<T const, Rooted>::Type _beginDefault(T const & me, Rooted);
+template <typename T> inline typename Iterator<T, Standard>::Type _beginDefault(T & me, Standard);
+template <typename T> inline typename Iterator<T const, Standard>::Type _beginDefault(T const & me, Standard);
+template <typename T> inline typename Iterator<T, Rooted>::Type _beginDefault(T & me, Rooted);
+template <typename T> inline typename Iterator<T const, Rooted>::Type _beginDefault(T const & me, Rooted);
 template <typename T, typename TSize> inline TSize _computeSizeForCapacity(T const & , TSize capacity);
-template <typename T> SEQAN_HOST_DEVICE inline typename Iterator<T, Standard>::Type _endDefault(T & me, Standard);
-template <typename T> SEQAN_HOST_DEVICE inline typename Iterator<T const, Standard>::Type _endDefault(T const & me, Standard);
-template <typename T> SEQAN_HOST_DEVICE inline typename Iterator<T, Rooted>::Type _endDefault(T & me, Rooted);
-template <typename T> SEQAN_HOST_DEVICE inline typename Iterator<T const, Rooted>::Type _endDefault(T const & me, Rooted);
+template <typename T> inline typename Iterator<T, Standard>::Type _endDefault(T & me, Standard);
+template <typename T> inline typename Iterator<T const, Standard>::Type _endDefault(T const & me, Standard);
+template <typename T> inline typename Iterator<T, Rooted>::Type _endDefault(T & me, Rooted);
+template <typename T> inline typename Iterator<T const, Rooted>::Type _endDefault(T const & me, Rooted);
 template <typename TContainer> inline SEQAN_FUNC_ENABLE_IF(Is<StlContainerConcept<typename RemoveReference<TContainer>::Type> >, void) assign(TContainer && me, typename RemoveReference<TContainer>::Type source);
 template <typename TContainer, typename TSource> inline SEQAN_FUNC_ENABLE_IF(And<Not<IsSameType<typename RemoveReference<TContainer>::Type, TSource> >, Is<StlContainerConcept<typename RemoveReference<TContainer>::Type> > >, void) assign(TContainer && me, TSource const & source);
 template <typename TContainer, typename TSource> inline SEQAN_FUNC_ENABLE_IF(Is<StlContainerConcept<typename RemoveReference<TContainer>::Type> >, void) assign(TContainer && me, TSource const & source, typename Size<TSource>::Type limit);
 template<typename TTarget, typename TSource> inline SEQAN_FUNC_DISABLE_IF(Is<StlContainerConcept<typename RemoveReference<TTarget>::Type> >, void) assign(TTarget && target, TSource && source, typename Size<TTarget>::Type const limit);
-template <typename T> SEQAN_HOST_DEVICE inline typename Iterator<T, typename DefaultGetIteratorSpec<T>::Type>::Type begin(T & me);
-template <typename T> SEQAN_HOST_DEVICE inline typename Iterator<T const, typename DefaultGetIteratorSpec<T>::Type>::Type begin(T const & me);
+template <typename T> inline typename Iterator<T, typename DefaultGetIteratorSpec<T>::Type>::Type begin(T & me);
+template <typename T> inline typename Iterator<T const, typename DefaultGetIteratorSpec<T>::Type>::Type begin(T const & me);
 template <typename T, typename TSpec> inline SEQAN_FUNC_DISABLE_IF(Is<StlContainerConcept<typename RemoveReference<T>::Type> >, typename Iterator<T, Tag<TSpec> const>::Type) begin(T & me, Tag<TSpec> const tag_);
 template <typename T, typename TSpec> inline SEQAN_FUNC_DISABLE_IF(Is<StlContainerConcept<typename RemoveReference<T>::Type> >, typename Iterator<T const, Tag<TSpec> const>::Type) begin(T const & me, Tag<TSpec> const tag_);
 template <typename T> inline typename Position<T>::Type beginPosition(T &);
 template <typename T> inline typename Position<T>::Type beginPosition(T const &);
 template <typename T, typename TSize> inline TSize computeGenerousCapacity(T const & , TSize capacity);
-template <typename T> SEQAN_HOST_DEVICE inline typename Iterator<T, typename DefaultGetIteratorSpec<T>::Type>::Type end(T & me);
-template <typename T> SEQAN_HOST_DEVICE inline typename Iterator<T const, typename DefaultGetIteratorSpec<T>::Type>::Type end(T const & me);
-template <typename T, typename TSpec> SEQAN_HOST_DEVICE inline typename Iterator<T, Tag<TSpec> const>::Type end(T & me, Tag<TSpec> const tag_);
-template <typename T, typename TSpec> SEQAN_HOST_DEVICE inline typename Iterator<T const, Tag<TSpec> const>::Type end(T const & me, Tag<TSpec> const tag_);
+template <typename T> inline typename Iterator<T, typename DefaultGetIteratorSpec<T>::Type>::Type end(T & me);
+template <typename T> inline typename Iterator<T const, typename DefaultGetIteratorSpec<T>::Type>::Type end(T const & me);
+template <typename T, typename TSpec> inline typename Iterator<T, Tag<TSpec> const>::Type end(T & me, Tag<TSpec> const tag_);
+template <typename T, typename TSpec> inline typename Iterator<T const, Tag<TSpec> const>::Type end(T const & me, Tag<TSpec> const tag_);
 template <typename T> inline typename Position<T>::Type endPosition(T & me);
 template <typename T> inline typename Position<T>::Type endPosition(T const & me);
 template <typename T> inline SEQAN_FUNC_DISABLE_IF(Is<StlContainerConcept<typename RemoveReference<T>::Type> >, void const *) getObjectId(T const & me);
@@ -164,7 +164,7 @@ template <typename TValue> inline bool atEnd(TValue * pos);
 template <typename TValue> inline bool atEnd(TValue const * pos, TValue const * );
 template <typename T> inline typename Iterator<T *, typename DefaultGetIteratorSpec<T>::Type>::Type begin(T * me);
 template <typename TValue> inline typename Iterator<TValue *, Standard>::Type begin(TValue * me, Standard);
-template <typename TValue> SEQAN_HOST_DEVICE inline typename Iterator<TValue const *, Standard>::Type begin(TValue const * me, Standard);
+template <typename TValue> inline typename Iterator<TValue const *, Standard>::Type begin(TValue const * me, Standard);
 template <typename TValue, typename TSpec> inline typename Iterator<TValue *, Tag<TSpec> const>::Type begin(TValue * me, Tag<TSpec> const);
 template <typename TValue, typename TSpec> inline typename Iterator<TValue const *, Tag<TSpec> const>::Type begin(TValue const * me, Tag<TSpec> const);
 template <typename TValue> inline void clear(TValue * me);
@@ -191,56 +191,6 @@ template <typename TValue, typename TSize, typename TExpand> inline size_t resiz
 template <typename TValue, typename TPos> inline TValue & value(TValue * me, TPos pos);
 template <typename TValue, typename TPos> inline TValue const & value(TValue const * me, TPos pos);
 
-// --------------------------------------------------------------------------
-// Forwards For thrust::device_vector
-// --------------------------------------------------------------------------
-
-#ifdef PLATFORM_CUDA
-template <typename TChar,  typename TAlloc> inline void const * getObjectId(thrust::device_vector<TChar, TAlloc> const & me);
-template <typename TChar,  typename TAlloc> inline typename Iterator<thrust::device_vector<TChar, TAlloc>, Standard>::Type begin(thrust::device_vector<TChar, TAlloc> & me, Standard);
-template <typename TChar,  typename TAlloc> inline typename Iterator<thrust::device_vector<TChar, TAlloc> const, Standard>::Type begin(thrust::device_vector<TChar, TAlloc> const & me, Standard);
-template <typename TChar, typename TAlloc> inline typename Iterator<thrust::device_vector<TChar, TAlloc>, Standard>::Type end(thrust::device_vector<TChar, TAlloc> & me, Standard);
-template <typename TChar,  typename TAlloc> inline typename Iterator<thrust::device_vector<TChar, TAlloc> const, Standard>::Type end(thrust::device_vector<TChar, TAlloc> const & me, Standard);
-template <typename TChar,  typename TAlloc, typename TPos> inline typename GetValue<thrust::device_vector<TChar, TAlloc> >::Type value(thrust::device_vector<TChar, TAlloc> & me, TPos pos);
-template <typename TChar,  typename TAlloc, typename TPos> inline typename GetValue<thrust::device_vector<TChar, TAlloc> const>::Type value(thrust::device_vector<TChar, TAlloc> const & me, TPos pos);
-template <typename TChar, typename TAlloc> inline typename Size<thrust::device_vector<TChar, TAlloc> >::Type length(thrust::device_vector<TChar, TAlloc> const & me);
-template <typename TChar, typename TAlloc> inline typename Size<thrust::device_vector<TChar, TAlloc> >::Type capacity(thrust::device_vector<TChar, TAlloc> const & me);
-template <typename TChar, typename TAlloc> inline bool empty(thrust::device_vector<TChar, TAlloc> const & me);
-template <typename TChar,  typename TAlloc> inline void clear(thrust::device_vector<TChar, TAlloc> & me);
-template <typename TChar, typename TAlloc> inline typename Reference<thrust::device_vector<TChar, TAlloc> >::Type back(thrust::device_vector<TChar, TAlloc> & list);
-template <typename TChar, typename TAlloc> inline typename Reference<thrust::device_vector<TChar, TAlloc> const>::Type back(thrust::device_vector<TChar, TAlloc> const & list);
-template <typename TChar,  typename TAlloc, typename TSource> inline void assign(thrust::device_vector<TChar, TAlloc> & target, TSource & source);
-template <typename TChar,  typename TAlloc, typename TSource> inline void assign(thrust::device_vector<TChar, TAlloc> & target, TSource const & source);
-template <typename TChar,  typename TAlloc, typename TSource, typename TSize> inline void assign(thrust::device_vector<TChar, TAlloc> & target, TSource & source, TSize limit);
-template <typename TChar,  typename TAlloc, typename TSource, typename TSize>
-inline void assign(thrust::device_vector<TChar, TAlloc> & target, TSource const & source, TSize limit);
-template <typename TChar,  typename TAlloc, typename TSource> inline void assign(thrust::device_vector<TChar, TAlloc> & target, TSource & source, Generous);
-template <typename TChar, typename TAlloc, typename TSource> inline void assign(thrust::device_vector<TChar, TAlloc> & target, TSource const & source, Generous);
-template <typename TChar,  typename TAlloc, typename TSource> inline void assign_std_vector_Generous_impl(thrust::device_vector<TChar, TAlloc> & target, TSource & source, typename Size<thrust::device_vector<TChar, TAlloc> >::Type limit);
-template <typename TChar,  typename TAlloc, typename TSource> inline void assign(thrust::device_vector<TChar, TAlloc> & target, TSource & source, typename Size<thrust::device_vector<TChar, TAlloc> >::Type limit, Generous);
-template <typename TChar,  typename TAlloc, typename TSource> inline void assign(thrust::device_vector<TChar, TAlloc> & target, TSource const & source, typename Size<thrust::device_vector<TChar, TAlloc> >::Type limit, Generous);
-template <typename TChar, typename TAlloc, typename TSource> inline void assign(thrust::device_vector<TChar, TAlloc> & target, TSource & source, Limit);
-template <typename TChar, typename TAlloc, typename TSource> inline void assign(thrust::device_vector<TChar, TAlloc> & target, TSource const & source, Limit);
-template <typename TChar, typename TAlloc, typename TSource> inline void assign(thrust::device_vector<TChar, TAlloc> & target, TSource & source, typename Size<thrust::device_vector<TChar, TAlloc> >::Type limit, Limit);
-template <typename TChar, typename TAlloc, typename TSource> inline void assign(thrust::device_vector<TChar, TAlloc> & target, TSource const & source, typename Size<thrust::device_vector<TChar, TAlloc> >::Type limit, Limit);
-template <typename TChar, typename TAlloc, typename TSource> inline void append(thrust::device_vector<TChar, TAlloc> & target, TSource const & source, Generous);
-template <typename TChar,  typename TAlloc, typename TSource> inline void append(thrust::device_vector<TChar, TAlloc> & target, TSource const & source, typename Size<thrust::device_vector<TChar, TAlloc> >::Type limit, Generous);
-template <typename TChar, typename TAlloc, typename TSource> inline void append(thrust::device_vector<TChar, TAlloc> & target, TSource const & source, Limit);
-template <typename TChar, typename TAlloc, typename TSource> inline void append(thrust::device_vector<TChar, TAlloc> & target, TSource const & source, typename Size<thrust::device_vector<TChar, TAlloc> >::Type limit, Limit);
-template <typename TChar, typename TAlloc, typename TValue, typename TTag> inline void appendValue(thrust::device_vector<TChar, TAlloc> & me, TValue const & _value, TTag);
-template <typename TChar, typename TAlloc, typename TValue> inline void appendValue(thrust::device_vector<TChar, TAlloc> & me, TValue const & _value, Limit);
-template <typename TChar,  typename TAlloc, typename TSource> inline void replace(thrust::device_vector<TChar, TAlloc> & target, typename Position<thrust::device_vector<TChar, TAlloc> >::Type pos_begin, typename Position<thrust::device_vector<TChar, TAlloc> >::Type pos_end, TSource const & source, Generous);
-template <typename TChar, typename TAlloc, typename TSource> inline void replace(thrust::device_vector<TChar, TAlloc> & target, typename Position<thrust::device_vector<TChar, TAlloc> >::Type pos_begin, typename Position<thrust::device_vector<TChar, TAlloc> >::Type pos_end, TSource const & source, typename Size<thrust::device_vector<TChar, TAlloc> >::Type limit, Generous);
-template <typename TChar,  typename TAlloc, typename TSource> inline void replace(thrust::device_vector<TChar, TAlloc> & target, typename Position<thrust::device_vector<TChar, TAlloc> >::Type pos_begin, typename Position<thrust::device_vector<TChar, TAlloc> >::Type pos_end, TSource const & source, Limit);
-template <typename TChar, typename TAlloc, typename TSource> inline void replace(thrust::device_vector<TChar, TAlloc> & target, typename Position<thrust::device_vector<TChar, TAlloc> >::Type pos_begin, typename Position<thrust::device_vector<TChar, TAlloc> >::Type pos_end, TSource const & source, typename Size<thrust::device_vector<TChar, TAlloc> >::Type limit, Limit);
-template<typename TChar, typename TCharTraits, typename TAlloc, typename TSource, typename TExpand> inline void replace(thrust::device_vector<TChar, TAlloc> & target, typename Iterator<thrust::device_vector<TChar, TAlloc>, Rooted>::Type pos_begin, typename Iterator<thrust::device_vector<TChar, TAlloc>, Rooted>::Type pos_end, TSource & source, Tag<TExpand> const tag);
-template <typename TChar,  typename TAlloc, typename TSize, typename TExpand> inline typename Size<thrust::device_vector<TChar, TAlloc> >::Type reserve(thrust::device_vector<TChar, TAlloc> & seq, TSize new_capacity, Tag<TExpand> const & tag);
-template <typename TChar, typename TAlloc, typename TSize> inline typename Size<thrust::device_vector<TChar, TAlloc> >::Type reserve(thrust::device_vector<TChar, TAlloc> & seq, TSize new_capacity, Insist const &);
-template <typename TChar,  typename TAlloc, typename TSize> inline typename Size<thrust::device_vector<TChar, TAlloc> >::Type reserve(thrust::device_vector<TChar, TAlloc> & seq, TSize new_capacity, Limit const &);
-template <typename TChar,  typename TAlloc, typename TSize, typename TExpand> inline typename Size<thrust::device_vector<TChar, TAlloc> >::Type resize(thrust::device_vector<TChar, TAlloc> & me, TSize new_length, Tag<TExpand> const &);
-template <typename TChar, typename TAlloc, typename TSize, typename TExpand> inline typename Size<thrust::device_vector<TChar, TAlloc> >::Type fill(thrust::device_vector<TChar, TAlloc> & me, TSize new_length, TChar const & val, Tag<TExpand> const &);
-#endif
-
 }  // namespace seqan
 
 #endif  // #if !defined(_MSC_VER)
diff --git a/include/seqan/sequence/sequence_interface.h b/include/seqan/sequence/sequence_interface.h
index 10be026..02e11c7 100644
--- a/include/seqan/sequence/sequence_interface.h
+++ b/include/seqan/sequence/sequence_interface.h
@@ -318,7 +318,7 @@ shareResources(T1 const & obj1,
 //* ???Anti Default Sequences
 // TODO(holtgrew): Evil -- each value is a container of length 1.
 template <typename T>
-SEQAN_HOST_DEVICE inline typename Iterator<T, Standard>::Type
+inline typename Iterator<T, Standard>::Type
 _beginDefault(T & me,
                Standard)
 {
@@ -326,7 +326,7 @@ _beginDefault(T & me,
 }
 // TODO(holtgrew): Evil -- each value is a container of length 1.
 template <typename T>
-SEQAN_HOST_DEVICE inline typename Iterator<T const, Standard>::Type
+inline typename Iterator<T const, Standard>::Type
 _beginDefault(T const & me,
                Standard)
 {
@@ -335,7 +335,7 @@ _beginDefault(T const & me,
 //*/
 
 template <typename T>
-SEQAN_HOST_DEVICE inline typename Iterator<T, Rooted>::Type
+inline typename Iterator<T, Rooted>::Type
 _beginDefault(T & me,
                Rooted)
 {
@@ -343,7 +343,7 @@ _beginDefault(T & me,
     return TIterator(me, begin(me, Standard()));
 }
 template <typename T>
-SEQAN_HOST_DEVICE inline typename Iterator<T const, Rooted>::Type
+inline typename Iterator<T const, Rooted>::Type
 _beginDefault(T const & me,
                Rooted)
 {
@@ -356,14 +356,14 @@ _beginDefault(T const & me,
 // --------------------------------------------------------------------------
 
 template <typename T>
-SEQAN_HOST_DEVICE inline typename Iterator<T, typename DefaultGetIteratorSpec<T>::Type>::Type
+inline typename Iterator<T, typename DefaultGetIteratorSpec<T>::Type>::Type
 begin(T & me)
 {
     return begin(me, typename DefaultGetIteratorSpec<T>::Type()) ;
 }
 
 template <typename T>
-SEQAN_HOST_DEVICE inline typename Iterator<T const, typename DefaultGetIteratorSpec<T>::Type>::Type
+inline typename Iterator<T const, typename DefaultGetIteratorSpec<T>::Type>::Type
 begin(T const & me)
 {
     return begin(me, typename DefaultGetIteratorSpec<T>::Type()) ;
@@ -373,7 +373,7 @@ begin(T const & me)
 //implemented in string_pointer.h
 // template <typename TValue,
 //           typename DisableIf<Is<StlContainerConcept<typename RemoveReference<T>::Type> >, int>::Type>
-// SEQAN_HOST_DEVICE inline typename Iterator<TValue const *, Standard>::Type
+// inline typename Iterator<TValue const *, Standard>::Type
 // begin(TValue const * me,
 //       Standard);
 
@@ -454,14 +454,14 @@ beginPosition(T const &)
 
 //* ???Anti Default Sequences
 template <typename T>
-SEQAN_HOST_DEVICE inline typename Iterator<T, Standard>::Type
+inline typename Iterator<T, Standard>::Type
 _endDefault(T & me,
              Standard)
 {
     return (& me) + 1;
 }
 template <typename T>
-SEQAN_HOST_DEVICE inline typename Iterator<T const, Standard>::Type
+inline typename Iterator<T const, Standard>::Type
 _endDefault(T const & me,
              Standard)
 {
@@ -470,7 +470,7 @@ _endDefault(T const & me,
 //*/
 
 template <typename T>
-SEQAN_HOST_DEVICE inline typename Iterator<T, Rooted>::Type
+inline typename Iterator<T, Rooted>::Type
 _endDefault(T & me,
              Rooted)
 {
@@ -478,7 +478,7 @@ _endDefault(T & me,
     return TIterator(me, end(me, Standard()));
 }
 template <typename T>
-SEQAN_HOST_DEVICE inline typename Iterator<T const, Rooted>::Type
+inline typename Iterator<T const, Rooted>::Type
 _endDefault(T const & me,
              Rooted)
 {
@@ -491,21 +491,21 @@ _endDefault(T const & me,
 // --------------------------------------------------------------------------
 
 template <typename T>
-SEQAN_HOST_DEVICE inline typename Iterator<T, typename DefaultGetIteratorSpec<T>::Type>::Type
+inline typename Iterator<T, typename DefaultGetIteratorSpec<T>::Type>::Type
 end(T & me)
 {
     return end(me, typename DefaultGetIteratorSpec<T>::Type()) ;
 }
 
 template <typename T>
-SEQAN_HOST_DEVICE inline typename Iterator<T const, typename DefaultGetIteratorSpec<T>::Type>::Type
+inline typename Iterator<T const, typename DefaultGetIteratorSpec<T>::Type>::Type
 end(T const & me)
 {
     return end(me, typename DefaultGetIteratorSpec<T>::Type()) ;
 }
 
 template <typename T, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Iterator<T, Tag<TSpec> const>::Type
+inline typename Iterator<T, Tag<TSpec> const>::Type
 end(T & me,
     Tag<TSpec> const tag_)
 {
@@ -513,7 +513,7 @@ end(T & me,
 }
 
 template <typename T, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Iterator<T const, Tag<TSpec> const>::Type
+inline typename Iterator<T const, Tag<TSpec> const>::Type
 end(T const & me,
     Tag<TSpec> const tag_)
 {
@@ -771,7 +771,7 @@ length(T const & /*me*/)
  */
 
 template <typename T>
-inline SEQAN_HOST_DEVICE typename Size<T const>::Type
+inline typename Size<T const>::Type
 capacity(T const & me)
 {
     return length(me);
diff --git a/include/seqan/sequence/string_alloc.h b/include/seqan/sequence/string_alloc.h
index 0011d28..3f485ec 100644
--- a/include/seqan/sequence/string_alloc.h
+++ b/include/seqan/sequence/string_alloc.h
@@ -191,14 +191,14 @@ public:
     // ----------------------------------------------------------------------
 
     template <typename TPos>
-    SEQAN_HOST_DEVICE inline typename Reference<String>::Type
+    inline typename Reference<String>::Type
     operator[] (TPos pos)
     {
         return value(*this, pos);
     }
 
     template <typename TPos>
-    SEQAN_HOST_DEVICE inline typename Reference<String const>::Type
+    inline typename Reference<String const>::Type
     operator[] (TPos pos) const
     {
         return value(*this, pos);
@@ -264,14 +264,14 @@ swap(String<TValue, Alloc<TSpec> > & a,
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Iterator<String<TValue, Alloc<TSpec> >, Standard>::Type
+inline typename Iterator<String<TValue, Alloc<TSpec> >, Standard>::Type
 begin(String<TValue, Alloc<TSpec> > & me,
       Standard)
 {
     return me.data_begin;
 }
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Iterator<String<TValue, Alloc<TSpec> > const, Standard>::Type
+inline typename Iterator<String<TValue, Alloc<TSpec> > const, Standard>::Type
 begin(String<TValue, Alloc<TSpec> > const & me,
       Standard)
 {
@@ -283,14 +283,14 @@ begin(String<TValue, Alloc<TSpec> > const & me,
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Iterator<String<TValue, Alloc<TSpec> >, Standard>::Type
+inline typename Iterator<String<TValue, Alloc<TSpec> >, Standard>::Type
 end(String<TValue, Alloc<TSpec> > & me,
     Standard const &)
 {
     return me.data_end;
 }
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Iterator<String<TValue, Alloc<TSpec> > const, Standard>::Type
+inline typename Iterator<String<TValue, Alloc<TSpec> > const, Standard>::Type
 end(String<TValue, Alloc<TSpec> > const & me,
     Standard const & )
 {
@@ -353,9 +353,11 @@ inline typename Value<String<TValue, Alloc<TSpec> > >::Type *
 _allocateStorage(String<TValue, Alloc<TSpec> > & me,
                  TSize new_capacity)
 {
+    typedef typename If<IsSameType<TSpec, OverAligned>, TagAllocateAlignedMalloc, TagAllocateStorage>::Type AllocTag;
+
     typename Size<String<TValue, Alloc<TSpec> > >::Type size = _computeSizeForCapacity(me, new_capacity);
     typename Value<String<TValue, Alloc<TSpec> > >::Type * _returnValue = me.data_begin;
-    allocate(me, me.data_begin, size, TagAllocateStorage());
+    allocate(me, me.data_begin, size, AllocTag());
     me.data_capacity = new_capacity;
     return _returnValue;
 }
@@ -370,8 +372,10 @@ _deallocateStorage(String<TValue, Alloc<TSpec> > & me,
                    TPtr * ptr,
                    TSize capacity)
 {
+    typedef typename If<IsSameType<TSpec, OverAligned>, TagAllocateAlignedMalloc, TagAllocateStorage>::Type AllocTag;
+
     typename Size<String<TValue, Alloc<TSpec> > >::Type size = _computeSizeForCapacity(me, capacity);
-    deallocate(me, ptr, size, TagAllocateStorage());
+    deallocate(me, ptr, size, AllocTag());
 }
 
 // ----------------------------------------------------------------------------
diff --git a/include/seqan/sequence/string_array.h b/include/seqan/sequence/string_array.h
index 406f7a8..0399e65 100644
--- a/include/seqan/sequence/string_array.h
+++ b/include/seqan/sequence/string_array.h
@@ -178,6 +178,16 @@ struct IsContiguous<String<TValue, Array<CAPACITY> > >
     enum { VALUE = true };
 };
 
+// ----------------------------------------------------------------------------
+// Metafunction LENGTH
+// ----------------------------------------------------------------------------
+
+template <typename TValue, size_t CAPACITY>
+struct LENGTH<String<TValue, Array<CAPACITY> > >
+{
+    enum { VALUE = CAPACITY };
+};
+
 // ============================================================================
 // Functions
 // ============================================================================
diff --git a/include/seqan/sequence/string_base.h b/include/seqan/sequence/string_base.h
index 46717fd..3b10a6f 100644
--- a/include/seqan/sequence/string_base.h
+++ b/include/seqan/sequence/string_base.h
@@ -48,6 +48,13 @@ namespace seqan {
 // Tags, Classes, Enums
 // ============================================================================
 
+// NOTE(rrahn): Special alloc overload for over-aligned data, e.g., simd vector types.
+// We need this, since the standard new/delete operator are not guarenteed
+// to support alignment higher than sizeof(void *), which causes seg faults when holding
+// simd vector types in a string.
+struct OverAligned_;
+using OverAligned = Tag<OverAligned_>;
+
 template <typename TSpec = void>
 struct Alloc {};
 
@@ -336,6 +343,16 @@ struct StringSpec<String<TValue, TSpec> >
 };
 
 // ----------------------------------------------------------------------------
+// Metafunction StringSpecForValue_
+// ----------------------------------------------------------------------------
+
+template <typename TValue>
+struct StringSpecForValue_
+{
+    typedef typename If<Is<SimdVectorConcept<TValue> >, Alloc<OverAligned>, Alloc<> >::Type Type;
+};
+
+// ----------------------------------------------------------------------------
 // Metafunction Chunk
 // ----------------------------------------------------------------------------
 
@@ -421,7 +438,7 @@ shareResources(TValue const & obj1,
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec, typename TPos>
-SEQAN_HOST_DEVICE inline typename Reference< String<TValue, TSpec> >::Type
+inline typename Reference< String<TValue, TSpec> >::Type
 value(String<TValue, TSpec> & me,
       TPos const & pos)
 {
@@ -433,7 +450,7 @@ value(String<TValue, TSpec> & me,
 }
 
 template <typename TValue, typename TSpec, typename TPos>
-SEQAN_HOST_DEVICE inline typename Reference< String<TValue, TSpec> const >::Type
+inline typename Reference< String<TValue, TSpec> const >::Type
 value(String<TValue, TSpec> const & me,
       TPos const & pos)
 {
@@ -449,7 +466,7 @@ value(String<TValue, TSpec> const & me,
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Size< String<TValue, TSpec> const>::Type
+inline typename Size< String<TValue, TSpec> const>::Type
 length(String<TValue, TSpec> const & me)
 {
     return end(me, Standard()) - begin(me, Standard());
@@ -460,7 +477,7 @@ length(String<TValue, TSpec> const & me)
 // ----------------------------------------------------------------------------
 
 template <typename TValue, typename TSpec>
-SEQAN_HOST_DEVICE inline bool
+inline bool
 empty(String<TValue, TSpec> const & me)
 {
     return end(me, Standard()) == begin(me, Standard());
diff --git a/include/seqan/sequence/string_cstyle.h b/include/seqan/sequence/string_cstyle.h
index c2e4192..9b1e9ae 100644
--- a/include/seqan/sequence/string_cstyle.h
+++ b/include/seqan/sequence/string_cstyle.h
@@ -112,14 +112,6 @@ clear(String<TValue, CStyle> & me);
 struct CStyle_;
 typedef Tag<CStyle_> CStyle;
 
-#ifdef PLATFORM_WINDOWS_VS
-#pragma warning( push )
-// Disable warning C4521 locally (multiple copy constructors).
-#pragma warning( disable: 4521 )
-// Disable warning C4522 locally (multiple assignment operators).
-#pragma warning( disable: 4522 )
-#endif  // PLATFORM_WINDOWS_VS
-
 template <typename TValue>
 class String <TValue, CStyle >
 {
@@ -220,11 +212,6 @@ public:
 template <typename TValue>
 TValue String<TValue, CStyle >::EMPTY_STRING = TValue();
 
-#ifdef PLATFORM_WINDOWS_VS
-// Reset warning state to previous one for C4521, C4522.
-#pragma warning( pop )
-#endif  // PLATFORM_WINDOWS_VS
-
 // ============================================================================
 // Metafunctions
 // ============================================================================
diff --git a/include/seqan/sequence/string_packed.h b/include/seqan/sequence/string_packed.h
index 51d05bd..ba0af1f 100644
--- a/include/seqan/sequence/string_packed.h
+++ b/include/seqan/sequence/string_packed.h
@@ -383,22 +383,6 @@ struct Host<String<TValue, Packed<THostspec> > >
     typedef String<TInternalValue, THostspec> Type;
 };
 
-
-#ifdef PLATFORM_CUDA
-template <typename TValue, typename TSpec>
-struct Host<String<TValue, Packed<Device<TSpec> > > >
-{
-    typedef typename PackedHostValue_<String<TValue, Packed<Device<TSpec> > > >::Type TInternalValue;
-    typedef thrust::device_vector<TInternalValue> Type;
-};
-
-template <typename TValue, typename TSpec>
-struct PackedHostValue_<String<TValue, Packed<Device<TSpec> > > >
-{
-    typedef Tuple<TValue, 32 / BitsPerValue<TValue>::VALUE, BitPacked<> > Type;
-};
-#endif
-
 template <typename TValue, typename THostspec>
 struct Host<String<TValue, Packed<THostspec> > const>
 {
diff --git a/include/seqan/sequence/string_set_base.h b/include/seqan/sequence/string_set_base.h
index 06aeeeb..508ac3b 100644
--- a/include/seqan/sequence/string_set_base.h
+++ b/include/seqan/sequence/string_set_base.h
@@ -300,41 +300,39 @@ struct Size< StringSet< TString, TSpec > >
 // Default Size<T const> redirects to non-const.
 
 // --------------------------------------------------------------------------
-// Metafunction Prefix
+// Metafunction PrefixOnValue
 // --------------------------------------------------------------------------
-// TODO(holtgrew): Do Prefix, Suffix, Infix make sense if defined in this way for all StringSet classes?
-// TODO(holtgrew): However, if this works nicely then it shows that implementing segments as Strings would not be advantageous since they now work for arbitrary sequential-access containers.
 
 template <typename TString, typename TSpec>
-struct Prefix< StringSet< TString, TSpec > >
+struct PrefixOnValue< StringSet< TString, TSpec > >
     : Prefix<TString > {};
 
 template <typename TString, typename TSpec>
-struct Prefix<StringSet< TString, TSpec > const>
+struct PrefixOnValue<StringSet< TString, TSpec > const>
     : Prefix<TString const > {};
 
 // --------------------------------------------------------------------------
-// Metafunction Suffix
+// Metafunction SuffixOnValue
 // --------------------------------------------------------------------------
 
 template <typename TString, typename TSpec>
-struct Suffix<StringSet< TString, TSpec> >
+struct SuffixOnValue<StringSet< TString, TSpec> >
     : Suffix<TString> {};
 
 template <typename TString, typename TSpec>
-struct Suffix<StringSet< TString, TSpec> const>
+struct SuffixOnValue<StringSet< TString, TSpec> const>
     : Suffix<TString const> {};
 
 // --------------------------------------------------------------------------
-// Metafunction Infix
+// Metafunction InfixOnValue
 // --------------------------------------------------------------------------
 
 template <typename TString, typename TSpec>
-struct Infix<StringSet< TString, TSpec> >
+struct InfixOnValue<StringSet< TString, TSpec> >
     : Infix<TString> {};
 
 template <typename TString, typename TSpec>
-struct Infix<StringSet< TString, TSpec > const>
+struct InfixOnValue<StringSet< TString, TSpec > const>
     : Infix< TString const > {};
 
 // --------------------------------------------------------------------------
@@ -413,7 +411,7 @@ stringSetLimits(StringSet<TString, TSpec> const & stringSet)
 
 // TODO(holtgrew): Auto-sequences should go away!
 template <typename TPosition>
-SEQAN_HOST_DEVICE inline TPosition
+inline TPosition
 getSeqNo(TPosition const &, Nothing const &)
 {
     return 0;
@@ -421,7 +419,7 @@ getSeqNo(TPosition const &, Nothing const &)
 
 // TODO(holtgrew): Auto-sequences should go away!
 template <typename TPosition>
-SEQAN_HOST_DEVICE inline TPosition
+inline TPosition
 getSeqNo(TPosition const &)
 {
     return 0;
@@ -429,14 +427,14 @@ getSeqNo(TPosition const &)
 
 // n sequences (position type is Pair)
 template <typename T1, typename T2, typename TPack, typename TLimitsString>
-SEQAN_HOST_DEVICE inline T1 getSeqNo(Pair<T1, T2, TPack> const & pos, TLimitsString const &)
+inline T1 getSeqNo(Pair<T1, T2, TPack> const & pos, TLimitsString const &)
 {
     return getValueI1(pos);
 }
 
 // n sequences (position type is Pair)
 template <typename T1, typename T2, typename TPack>
-SEQAN_HOST_DEVICE inline T1 getSeqNo(Pair<T1, T2, TPack> const & pos)
+inline T1 getSeqNo(Pair<T1, T2, TPack> const & pos)
 {
     return getValueI1(pos);
 }
@@ -458,7 +456,7 @@ inline TPos getSeqNo(TPos const & pos, TLimitsString const & limits)
 
 // TODO(holtgrew): Auto-sequences should go away!
 template <typename TPosition>
-SEQAN_HOST_DEVICE inline TPosition
+inline TPosition
 getSeqOffset(TPosition const & pos, Nothing const &)
 {
     return pos;
@@ -466,7 +464,7 @@ getSeqOffset(TPosition const & pos, Nothing const &)
 
 // TODO(holtgrew): Auto-sequences should go away!
 template <typename TPosition>
-SEQAN_HOST_DEVICE inline TPosition
+inline TPosition
 getSeqOffset(TPosition const & pos)
 {
     return pos;
@@ -474,13 +472,13 @@ getSeqOffset(TPosition const & pos)
 
 // n sequences (position type is Pair)
 template <typename T1, typename T2, typename TPack, typename TLimitsString>
-SEQAN_HOST_DEVICE inline T2 getSeqOffset(Pair<T1, T2, TPack> const & pos, TLimitsString const &) {
+inline T2 getSeqOffset(Pair<T1, T2, TPack> const & pos, TLimitsString const &) {
     return getValueI2(pos);
 }
 
 // n sequences (position type is Pair)
 template <typename T1, typename T2, typename TPack>
-SEQAN_HOST_DEVICE inline T2 getSeqOffset(Pair<T1, T2, TPack> const & pos) {
+inline T2 getSeqOffset(Pair<T1, T2, TPack> const & pos) {
     return getValueI2(pos);
 }
 
@@ -598,11 +596,12 @@ inline void posLocalize(TResult & result, Pair<T1, T2, TPack> const & pos, Strin
 }
 
 // --------------------------------------------------------------------------
-// Function prefix()
+// Function prefix(); For local string set position.
 // --------------------------------------------------------------------------
 
 template < typename TString, typename TSpec, typename TPosition >
-inline typename Prefix<TString>::Type
+inline SEQAN_FUNC_DISABLE_IF(Is<IntegerConcept<TPosition> >,
+                             typename PrefixOnValue<StringSet< TString, TSpec > >::Type)
 prefix(StringSet< TString, TSpec > & me, TPosition const & pos)
 {
     typedef StringSet<TString, TSpec>               TStringSet;
@@ -616,7 +615,8 @@ prefix(StringSet< TString, TSpec > & me, TPosition const & pos)
 }
 
 template < typename TString, typename TSpec, typename TPosition >
-inline typename Prefix<TString const>::Type
+inline SEQAN_FUNC_DISABLE_IF(Is<IntegerConcept<TPosition> >,
+                             typename PrefixOnValue<StringSet< TString, TSpec > const>::Type)
 prefix(StringSet< TString, TSpec > const & me, TPosition const & pos)
 {
     typedef StringSet<TString, TSpec>               TStringSet;
@@ -630,11 +630,12 @@ prefix(StringSet< TString, TSpec > const & me, TPosition const & pos)
 }
 
 // --------------------------------------------------------------------------
-// Function suffix()
+// Function suffix(); For local string set position.
 // --------------------------------------------------------------------------
 
 template < typename TString, typename TSpec, typename TPosition >
-inline typename Suffix<TString>::Type
+inline SEQAN_FUNC_DISABLE_IF(Is<IntegerConcept<TPosition> >,
+                             typename SuffixOnValue<StringSet< TString, TSpec > >::Type)
 suffix(StringSet< TString, TSpec > & me, TPosition const & pos)
 {
     typedef StringSet<TString, TSpec>               TStringSet;
@@ -648,7 +649,8 @@ suffix(StringSet< TString, TSpec > & me, TPosition const & pos)
 }
 
 template < typename TString, typename TSpec, typename TPosition >
-inline typename Suffix<TString const>::Type
+inline SEQAN_FUNC_DISABLE_IF(Is<IntegerConcept<TPosition> >,
+                             typename SuffixOnValue<StringSet< TString, TSpec > const>::Type)
 suffix(StringSet< TString, TSpec > const & me, TPosition const & pos)
 {
     typedef StringSet<TString, TSpec>               TStringSet;
@@ -662,12 +664,13 @@ suffix(StringSet< TString, TSpec > const & me, TPosition const & pos)
 }
 
 // --------------------------------------------------------------------------
-// Function infixWithLength()
+// Function infixWithLength(); For local string set position.
 // --------------------------------------------------------------------------
 
 template < typename TString, typename TSpec, typename TPosition, typename TSize >
-inline typename Infix<TString>::Type
-infixWithLength(StringSet< TString, TSpec > & me, TPosition const & pos, TSize length)
+inline SEQAN_FUNC_DISABLE_IF(Is<IntegerConcept<TPosition> >,
+                             typename InfixOnValue<StringSet< TString, TSpec > >::Type)
+infixWithLength(StringSet< TString, TSpec > & me, TPosition const & pos, TSize const length)
 {
     typedef StringSet<TString, TSpec>               TStringSet;
     typedef typename Size<TStringSet>::Type         TSetSize;
@@ -680,8 +683,9 @@ infixWithLength(StringSet< TString, TSpec > & me, TPosition const & pos, TSize l
 }
 
 template < typename TString, typename TSpec, typename TPosition, typename TSize >
-inline typename Infix<TString const>::Type
-infixWithLength(StringSet< TString, TSpec > const & me, TPosition const & pos, TSize length)
+inline SEQAN_FUNC_DISABLE_IF(Is<IntegerConcept<TPosition> >,
+                             typename InfixOnValue<StringSet< TString, TSpec > const>::Type)
+infixWithLength(StringSet< TString, TSpec > const & me, TPosition const & pos, TSize const length)
 {
     typedef StringSet<TString, TSpec>               TStringSet;
     typedef typename Size<TStringSet>::Type         TSetSize;
@@ -694,12 +698,13 @@ infixWithLength(StringSet< TString, TSpec > const & me, TPosition const & pos, T
 }
 
 // --------------------------------------------------------------------------
-// Function infix()
+// Function infix(); For local string set position.
 // --------------------------------------------------------------------------
 
-template < typename TString, typename TSpec, typename TPosBegin, typename TPosEnd >
-inline typename Infix<TString>::Type
-infix(StringSet< TString, TSpec > & me, TPosBegin const & posBegin, TPosEnd const & posEnd)
+template < typename TString, typename TSpec, typename TPosBeg, typename TPosEnd>
+inline SEQAN_FUNC_DISABLE_IF(Is<IntegerConcept<TPosBeg> >,
+                             typename InfixOnValue<StringSet< TString, TSpec > >::Type)
+infix(StringSet<TString, TSpec > & me, TPosBeg const & posBegin, TPosEnd const & posEnd)
 {
     typedef StringSet<TString, TSpec>               TStringSet;
     typedef typename Size<TStringSet>::Type         TSetSize;
@@ -712,9 +717,10 @@ infix(StringSet< TString, TSpec > & me, TPosBegin const & posBegin, TPosEnd cons
     return infix(me[getSeqNo(localPosBegin)], getSeqOffset(localPosBegin), getSeqOffset(localPosEnd));
 }
 
-template < typename TString, typename TSpec, typename TPosBegin, typename TPosEnd >
-inline typename Infix<TString const>::Type
-infix(StringSet< TString, TSpec > const & me, TPosBegin const & posBegin, TPosEnd const & posEnd)
+template < typename TString, typename TSpec, typename TPosBeg, typename TPosEnd>
+inline SEQAN_FUNC_DISABLE_IF(Is<IntegerConcept<TPosBeg> >,
+                             typename InfixOnValue<StringSet< TString, TSpec > const>::Type)
+infix(StringSet<TString, TSpec > const & me, TPosBeg const & posBegin, TPosEnd const & posEnd)
 {
     typedef StringSet<TString, TSpec>               TStringSet;
     typedef typename Size<TStringSet>::Type         TSetSize;
@@ -884,12 +890,12 @@ posNext(Pair<T1, T2, TPack> const & pos) {
  */
 
 template <typename TPos, typename TDelta>
-SEQAN_HOST_DEVICE inline TPos posAdd(TPos pos, TDelta delta) {
+inline TPos posAdd(TPos pos, TDelta delta) {
     return pos + delta;
 }
 
 template <typename T1, typename T2, typename TPack, typename TDelta>
-SEQAN_HOST_DEVICE inline Pair<T1, T2, TPack>
+inline Pair<T1, T2, TPack>
 posAdd(Pair<T1, T2, TPack> const & pos, TDelta delta) {
     return Pair<T1, T2, TPack>(getValueI1(pos), getValueI2(pos) + delta);
 }
@@ -1049,21 +1055,21 @@ countSequences(StringSet<TString, TSpec> const & stringSet) {
 // --------------------------------------------------------------------------
 
 template <typename TSeqNo, typename TString>
-SEQAN_HOST_DEVICE inline typename GetSequenceByNo<TString>::Type
+inline typename GetSequenceByNo<TString>::Type
 getSequenceByNo(TSeqNo /*seqNo*/, TString & string)
 {
     return string;
 }
 
 template <typename TSeqNo, typename TString, typename TSpec>
-SEQAN_HOST_DEVICE inline typename GetSequenceByNo< StringSet<TString, TSpec> >::Type
+inline typename GetSequenceByNo< StringSet<TString, TSpec> >::Type
 getSequenceByNo(TSeqNo seqNo, StringSet<TString, TSpec> & stringSet)
 {
     return stringSet[seqNo];
 }
 
 template <typename TSeqNo, typename TString, typename TSpec>
-SEQAN_HOST_DEVICE inline typename GetSequenceByNo< StringSet<TString, TSpec> const>::Type
+inline typename GetSequenceByNo< StringSet<TString, TSpec> const>::Type
 getSequenceByNo(TSeqNo seqNo, StringSet<TString, TSpec> const & stringSet)
 {
     return stringSet[seqNo];
@@ -1074,7 +1080,7 @@ getSequenceByNo(TSeqNo seqNo, StringSet<TString, TSpec> const & stringSet)
 // --------------------------------------------------------------------------
 
 template <typename TSeqNo, typename TText>
-SEQAN_HOST_DEVICE inline typename Size< typename GetSequenceByNo<TText const>::Type>::Type
+inline typename Size< typename GetSequenceByNo<TText const>::Type>::Type
 sequenceLength(TSeqNo seqNo, TText const & text)
 {
     return length(getSequenceByNo(seqNo, text));
@@ -1579,7 +1585,7 @@ assignValueById(StringSet<TString, TSpec1>& dest,
 
 // TODO(holtgrew): Why default concat() for any class?
 template <typename TString>
-SEQAN_HOST_DEVICE inline typename Concatenator<TString>::Type &
+inline typename Concatenator<TString>::Type &
 concat(TString & string)
 {
     return string;
@@ -1587,7 +1593,7 @@ concat(TString & string)
 
 // TODO(holtgrew): Why default concat() for any class?
 template <typename TString>
-SEQAN_HOST_DEVICE inline typename Concatenator<TString const>::Type &
+inline typename Concatenator<TString const>::Type &
 concat(TString const & string)
 {
     return string;
diff --git a/include/seqan/sequence/string_set_concat_direct.h b/include/seqan/sequence/string_set_concat_direct.h
index ebc0d57..83285af 100644
--- a/include/seqan/sequence/string_set_concat_direct.h
+++ b/include/seqan/sequence/string_set_concat_direct.h
@@ -128,14 +128,14 @@ public:
     // ----------------------------------------------------------------------
 
     template <typename TPos>
-    SEQAN_HOST_DEVICE inline typename Reference<StringSet>::Type
+    inline typename Reference<StringSet>::Type
     operator[](TPos pos)
     {
         return value(*this, pos);
     }
 
     template <typename TPos>
-    SEQAN_HOST_DEVICE inline typename Reference<StringSet const>::Type
+    inline typename Reference<StringSet const>::Type
     operator[](TPos pos) const
     {
         return value(*this, pos);
@@ -192,13 +192,13 @@ struct GetValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > const >:
 template <typename TString, typename TSpec >
 struct GetValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > >
 {
-    typedef typename Infix<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type const Type;
+    typedef typename InfixOnValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type const Type;
 };
 
 template <typename TString, typename TSpec >
 struct GetValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > const>
 {
-    typedef typename Infix<StringSet<TString, Owner<ConcatDirect<TSpec> > > const>::Type const Type;
+    typedef typename InfixOnValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > const>::Type const Type;
 };
 
 // --------------------------------------------------------------------------
@@ -214,39 +214,40 @@ struct Reference<StringSet<TString, Owner<ConcatDirect<TSpec> > > const>
     : Infix<typename Concatenator<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type const> {};
 
 // --------------------------------------------------------------------------
-// Metafunction Prefix
+// Metafunction PrefixOnValue
 // --------------------------------------------------------------------------
 
+// TODO(rrahn): Why does a prefix of the StringSet is an Infix of the concatenated string set.
 template <typename TString, typename TSpec >
-struct Prefix<StringSet<TString, Owner<ConcatDirect<TSpec> > > >
+struct PrefixOnValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > >
     : Infix<typename Concatenator<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type> {};
 
 template <typename TString, typename TSpec >
-struct Prefix<StringSet<TString, Owner<ConcatDirect<TSpec> > > const>
+struct PrefixOnValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > const>
     : Infix<typename Concatenator<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type const> {};
 
 // --------------------------------------------------------------------------
-// Metafunction Suffix
+// Metafunction SuffixOnValue
 // --------------------------------------------------------------------------
 
 template <typename TString, typename TSpec>
-struct Suffix<StringSet<TString, Owner<ConcatDirect<TSpec> > > >
+struct SuffixOnValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > >
     : Infix<typename Concatenator<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type> {};
 
 template <typename TString, typename TSpec>
-struct Suffix<StringSet<TString, Owner<ConcatDirect<TSpec> > > const>
+struct SuffixOnValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > const>
     : Infix<typename Concatenator<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type const> {};
 
 // --------------------------------------------------------------------------
-// Metafunction Infix
+// Metafunction InfixOnValue
 // --------------------------------------------------------------------------
 
 template <typename TString, typename TSpec >
-struct Infix<StringSet<TString, Owner<ConcatDirect<TSpec> > > >
+struct InfixOnValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > >
     : Infix<typename Concatenator<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type> {};
 
 template <typename TString, typename TSpec >
-struct Infix<StringSet<TString, Owner<ConcatDirect<TSpec> > > const >
+struct InfixOnValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > const >
     : Infix<typename Concatenator<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type const> {};
 
 // ============================================================================
@@ -530,7 +531,7 @@ inline void clear(StringSet<TString, Owner<ConcatDirect<TSpec> > > & me)
 // --------------------------------------------------------------------------
 
 template <typename TString, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Size<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type
+inline typename Size<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type
 length(StringSet<TString, Owner<ConcatDirect<TSpec> > > const & me)
 {
     return length(me.limits) - 1;
@@ -567,73 +568,81 @@ reserve(StringSet<TString, Owner<ConcatDirect<TSpec> > > & me,
 }
 
 // --------------------------------------------------------------------------
-// Function prefix()
+// Function prefix(); For local string set position
 // --------------------------------------------------------------------------
 
 template <typename TString, typename TSpec, typename TPosition >
-inline typename Prefix<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type
+inline SEQAN_FUNC_DISABLE_IF(Is<IntegerConcept<TPosition> >,
+                             typename PrefixOnValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type)
 prefix(StringSet<TString, Owner<ConcatDirect<TSpec> > > & me, TPosition pos)
 {
     return infix(me.concat, stringSetLimits(me)[getSeqNo(pos, stringSetLimits(me))], posGlobalize(pos, stringSetLimits(me)));
 }
 
 template <typename TString, typename TSpec, typename TPosition >
-inline typename Prefix<StringSet<TString, Owner<ConcatDirect<TSpec> > > const>::Type
+inline SEQAN_FUNC_DISABLE_IF(Is<IntegerConcept<TPosition> >,
+                             typename PrefixOnValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > const>::Type)
 prefix(StringSet<TString, Owner<ConcatDirect<TSpec> > > const & me, TPosition pos)
 {
     return infix(me.concat, stringSetLimits(me)[getSeqNo(pos, stringSetLimits(me))], posGlobalize(pos, stringSetLimits(me)));
 }
 
 // --------------------------------------------------------------------------
-// Function suffix()
+// Function suffix(); For local string set position
 // --------------------------------------------------------------------------
 
 template <typename TString, typename TSpec, typename TPosition >
-inline typename Suffix<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type
+inline SEQAN_FUNC_DISABLE_IF(Is<IntegerConcept<TPosition> >,
+                             typename SuffixOnValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type)
 suffix(StringSet<TString, Owner<ConcatDirect<TSpec> > > & me, TPosition pos)
 {
     return infix(me.concat, posGlobalize(pos, stringSetLimits(me)), stringSetLimits(me)[getSeqNo(pos, stringSetLimits(me)) + 1]);
 }
 
 template <typename TString, typename TSpec, typename TPosition >
-inline typename Suffix<StringSet<TString, Owner<ConcatDirect<TSpec> > > const>::Type
+inline SEQAN_FUNC_DISABLE_IF(Is<IntegerConcept<TPosition> >,
+                             typename SuffixOnValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > const>::Type)
 suffix(StringSet<TString, Owner<ConcatDirect<TSpec> > > const & me, TPosition pos)
 {
     return infix(me.concat, posGlobalize(pos, stringSetLimits(me)), stringSetLimits(me)[getSeqNo(pos, stringSetLimits(me)) + 1]);
 }
 
 // --------------------------------------------------------------------------
-// Function infix()
+// Function infix(); For local string set position
 // --------------------------------------------------------------------------
 
 template <typename TString, typename TSpec, typename TPosBegin, typename TPosEnd >
-inline typename Infix<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type
-infix(StringSet<TString, Owner<ConcatDirect<TSpec> > > & me, TPosBegin posBegin, TPosEnd posEnd)
+inline SEQAN_FUNC_DISABLE_IF(Is<IntegerConcept<TPosBegin> >,
+                             typename InfixOnValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type)
+infix(StringSet<TString, Owner<ConcatDirect<TSpec> > > & me, TPosBegin const & posBegin, TPosEnd const & posEnd)
 {
     return infix(me.concat, posGlobalize(posBegin, stringSetLimits(me)), posGlobalize(posEnd, stringSetLimits(me)));
 }
 
 template <typename TString, typename TSpec, typename TPosBegin, typename TPosEnd >
-inline typename Infix<StringSet<TString, Owner<ConcatDirect<TSpec> > > const>::Type
-infix(StringSet<TString, Owner<ConcatDirect<TSpec> > > const & me, TPosBegin posBegin, TPosEnd posEnd)
+inline SEQAN_FUNC_DISABLE_IF(Is<IntegerConcept<TPosBegin> >,
+                             typename InfixOnValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > const>::Type)
+infix(StringSet<TString, Owner<ConcatDirect<TSpec> > > const & me, TPosBegin const & posBegin, TPosEnd const & posEnd)
 {
     return infix(me.concat, posGlobalize(posBegin, stringSetLimits(me)), posGlobalize(posEnd, stringSetLimits(me)));
 }
 
 // --------------------------------------------------------------------------
-// Function infixWithLength()
+// Function infix(); For local string set position
 // --------------------------------------------------------------------------
 
 template <typename TString, typename TSpec, typename TPosition, typename TSize >
-inline typename Infix<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type
-infixWithLength(StringSet<TString, Owner<ConcatDirect<TSpec> > > & me, TPosition pos, TSize length)
+inline SEQAN_FUNC_DISABLE_IF(Is<IntegerConcept<TPosition> >,
+                             typename InfixOnValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type)
+infixWithLength(StringSet<TString, Owner<ConcatDirect<TSpec> > > & me, TPosition const & pos, TSize const length)
 {
     return infixWithLength(me.concat, posGlobalize(pos, stringSetLimits(me)), length);
 }
 
 template <typename TString, typename TSpec, typename TPosition, typename TSize >
-inline typename Infix<StringSet<TString, Owner<ConcatDirect<TSpec> > > const>::Type
-infixWithLength(StringSet<TString, Owner<ConcatDirect<TSpec> > > const & me, TPosition pos, TSize length)
+inline SEQAN_FUNC_DISABLE_IF(Is<IntegerConcept<TPosition> >,
+                             typename InfixOnValue<StringSet<TString, Owner<ConcatDirect<TSpec> > > const>::Type)
+infixWithLength(StringSet<TString, Owner<ConcatDirect<TSpec> > > const & me, TPosition const & pos, TSize const length)
 {
     return infixWithLength(me.concat, posGlobalize(pos, stringSetLimits(me)), length);
 }
@@ -643,14 +652,14 @@ infixWithLength(StringSet<TString, Owner<ConcatDirect<TSpec> > > const & me, TPo
 // --------------------------------------------------------------------------
 
 template <typename TString, typename TSpec, typename TPos >
-SEQAN_HOST_DEVICE inline typename Value<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type
+inline typename Value<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type
 value(StringSet<TString, Owner<ConcatDirect<TSpec> > > & me, TPos pos)
 {
     return infix(me.concat, me.limits[pos], me.limits[pos + 1]);
 }
 
 template <typename TString, typename TSpec, typename TPos >
-SEQAN_HOST_DEVICE inline typename Value<StringSet<TString, Owner<ConcatDirect<TSpec> > > const>::Type
+inline typename Value<StringSet<TString, Owner<ConcatDirect<TSpec> > > const>::Type
 value(StringSet<TString, Owner<ConcatDirect<TSpec> > > const & me, TPos pos)
 {
     return infix(me.concat, me.limits[pos], me.limits[pos + 1]);
@@ -686,62 +695,6 @@ void swap(StringSet<TString, Owner<ConcatDirect<TSpec> > > & lhs,
     swap(lhs.concat, rhs.concat);
 }
 
-// ============================================================================
-// Device Functions
-// ============================================================================
-// NOTE(esiragusa): All functions are equivalent to the originals - overloaded to remove SEQAN_HOST_DEVICE :(
-
-#ifdef PLATFORM_CUDA
-
-// --------------------------------------------------------------------------
-// Function value()
-// --------------------------------------------------------------------------
-
-template <typename TValue, typename TAlloc, typename TSpec, typename TPos >
-inline typename Value<StringSet<thrust::device_vector<TValue, TAlloc>, Owner<ConcatDirect<TSpec> > > >::Type
-value(StringSet<thrust::device_vector<TValue, TAlloc>, Owner<ConcatDirect<TSpec> > > & me, TPos pos)
-{
-    return infix(me.concat, me.limits[pos], me.limits[pos + 1]);
-}
-
-template <typename TValue, typename TAlloc, typename TSpec, typename TPos >
-inline typename Value<StringSet<thrust::device_vector<TValue, TAlloc>, Owner<ConcatDirect<TSpec> > > const>::Type
-value(StringSet<thrust::device_vector<TValue, TAlloc>, Owner<ConcatDirect<TSpec> > > const & me, TPos pos)
-{
-    return infix(me.concat, me.limits[pos], me.limits[pos + 1]);
-}
-
-// --------------------------------------------------------------------------
-// Function length()
-// --------------------------------------------------------------------------
-
-template <typename TValue, typename TAlloc, typename TSpec>
-inline typename Size<StringSet<thrust::device_vector<TValue, TAlloc>, Owner<ConcatDirect<TSpec> > > >::Type
-length(StringSet<thrust::device_vector<TValue, TAlloc>, Owner<ConcatDirect<TSpec> > > const & me)
-{
-    return length(me.limits) - 1;
-}
-
-// --------------------------------------------------------------------------
-// Function back()
-// --------------------------------------------------------------------------
-
-template <typename TValue, typename TAlloc, typename TSpec>
-inline typename Reference<StringSet<thrust::device_vector<TValue, TAlloc>, Owner<ConcatDirect<TSpec> > > const>::Type
-back(StringSet<thrust::device_vector<TValue, TAlloc>, Owner<ConcatDirect<TSpec> > > const & me)
-{
-    return value(me, length(me) - 1);
-}
-
-template <typename TValue, typename TAlloc, typename TSpec>
-inline typename Reference<StringSet<thrust::device_vector<TValue, TAlloc>, Owner<ConcatDirect<TSpec> > > >::Type
-back(StringSet<thrust::device_vector<TValue, TAlloc>, Owner<ConcatDirect<TSpec> > > & me)
-{
-    return value(me, length(me) - 1);
-}
-
-#endif // PLATFORM_CUDA
-
 }  // namespace seqan
 
 #endif  // #ifndef SEQAN_SEQUENCE_STRING_SET_CONCAT_DIRECT_H_
diff --git a/include/seqan/sequence/string_set_device.h b/include/seqan/sequence/string_set_device.h
deleted file mode 100644
index 1a02615..0000000
--- a/include/seqan/sequence/string_set_device.h
+++ /dev/null
@@ -1,76 +0,0 @@
-// ==========================================================================
-//                 SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2013 NVIDIA Corporation
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of NVIDIA Corporation nor the names of
-//       its contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-// Author: Enrico Siragusa <enrico.siragusa at fu-berlin.de>
-// ==========================================================================
-
-#ifndef SEQAN_STRING_SET_DEVICE_H
-#define SEQAN_STRING_SET_DEVICE_H
-
-namespace seqan {
-
-// ============================================================================
-// Metafunctions
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// Metafunction Device                                              [StringSet]
-// ----------------------------------------------------------------------------
-
-template <typename TString, typename TSpec>
-struct Device<StringSet<TString, TSpec> >
-{
-    typedef StringSet<typename Device<TString>::Type, TSpec>    Type;
-};
-
-// ----------------------------------------------------------------------------
-// Metafunction IsDevice                                     [Device StringSet]
-// ----------------------------------------------------------------------------
-
-template <typename TValue, typename TAlloc, typename TSpec>
-struct IsDevice<StringSet<thrust::device_vector<TValue, TAlloc>, TSpec> > : public True {};
-
-// ----------------------------------------------------------------------------
-// Metafunction StringSetLimits                              [Device StringSet]
-// ----------------------------------------------------------------------------
-
-template <typename TValue, typename TAlloc, typename TSpec>
-struct StringSetLimits<StringSet<thrust::device_vector<TValue, TAlloc>, TSpec> >
-{
-    typedef thrust::device_vector<TValue, TAlloc>   TString_;
-    typedef typename Size<TString_>::Type           TSize_;
-    typedef thrust::device_vector<TSize_>           Type;
-};
-
-
-}  // namespace seqan
-
-#endif  // #ifndef SEQAN_STRING_SET_DEVICE_H
diff --git a/include/seqan/sequence/string_set_segment.h b/include/seqan/sequence/string_set_segment.h
index ad6475f..eb4169d 100644
--- a/include/seqan/sequence/string_set_segment.h
+++ b/include/seqan/sequence/string_set_segment.h
@@ -90,14 +90,14 @@ public:
     // ----------------------------------------------------------------------
 
     template <typename TPos>
-    SEQAN_HOST_DEVICE inline typename Reference<StringSet>::Type
+    inline typename Reference<StringSet>::Type
     operator[](TPos pos)
     {
         return value(*this, pos);
     }
 
     template <typename TPos>
-    SEQAN_HOST_DEVICE inline typename Reference<StringSet const>::Type
+    inline typename Reference<StringSet const>::Type
     operator[](TPos pos) const
     {
         return value(*this, pos);
@@ -157,11 +157,11 @@ struct Host<StringSet<THost, Segment<TSpec> > const> :
 
 template <typename THost, typename TSpec>
 struct Value<StringSet<THost, Segment<TSpec> > >
-    : Infix<THost> {};
+    : InfixOnValue<THost> {};
 
 template <typename THost, typename TSpec>
 struct Value<StringSet<THost, Segment<TSpec> > const>
-    : Infix<THost const> {};
+    : InfixOnValue<THost const> {};
 
 // --------------------------------------------------------------------------
 // Metafunction GetValue
@@ -170,13 +170,13 @@ struct Value<StringSet<THost, Segment<TSpec> > const>
 template <typename THost, typename TSpec>
 struct GetValue<StringSet<THost, Segment<TSpec> > >
 {
-    typedef typename Infix<THost>::Type const Type;
+    typedef typename InfixOnValue<THost>::Type const Type;
 };
 
 template <typename THost, typename TSpec>
 struct GetValue<StringSet<THost, Segment<TSpec> > const>
 {
-    typedef typename Infix<THost const>::Type const Type;
+    typedef typename InfixOnValue<THost const>::Type const Type;
 };
 
 // --------------------------------------------------------------------------
@@ -185,47 +185,47 @@ struct GetValue<StringSet<THost, Segment<TSpec> > const>
 
 template <typename THost, typename TSpec>
 struct Reference<StringSet<THost, Segment<TSpec> > >
-    : Infix<THost> {};
+    : InfixOnValue<THost> {};
 
 template <typename THost, typename TSpec>
 struct Reference<StringSet<THost, Segment<TSpec> > const>
-    : Infix<THost const> {};
+    : InfixOnValue<THost const> {};
 
 // --------------------------------------------------------------------------
 // Metafunction Prefix
 // --------------------------------------------------------------------------
 
 template <typename THost, typename TSpec>
-struct Prefix<StringSet<THost, Segment<TSpec> > >
-    : Infix<THost> {};
+struct PrefixOnValue<StringSet<THost, Segment<TSpec> > >
+    : InfixOnValue<THost> {};
 
 template <typename THost, typename TSpec>
-struct Prefix<StringSet<THost, Segment<TSpec> > const>
-    : Infix<THost const> {};
+struct PrefixOnValue<StringSet<THost, Segment<TSpec> > const>
+    : InfixOnValue<THost const> {};
 
 // --------------------------------------------------------------------------
 // Metafunction Suffix
 // --------------------------------------------------------------------------
 
 template <typename THost, typename TSpec>
-struct Suffix<StringSet<THost, Segment<TSpec> > >
-    : Infix<THost> {};
+struct SuffixOnValue<StringSet<THost, Segment<TSpec> > >
+    : InfixOnValue<THost> {};
 
 template <typename THost, typename TSpec>
-struct Suffix<StringSet<THost, Segment<TSpec> > const>
-    : Infix<THost const> {};
+struct SuffixOnValue<StringSet<THost, Segment<TSpec> > const>
+    : InfixOnValue<THost const> {};
 
 // --------------------------------------------------------------------------
 // Metafunction Infix
 // --------------------------------------------------------------------------
 
 template <typename THost, typename TSpec>
-struct Infix<StringSet<THost, Segment<TSpec> > >
-    : Infix<THost> {};
+struct InfixOnValue<StringSet<THost, Segment<TSpec> > >
+    : InfixOnValue<THost> {};
 
 template <typename THost, typename TSpec>
-struct Infix<StringSet<THost, Segment<TSpec> > const >
-    : Infix<THost const> {};
+struct InfixOnValue<StringSet<THost, Segment<TSpec> > const >
+    : InfixOnValue<THost const> {};
 
 // ============================================================================
 // Functions
@@ -236,7 +236,7 @@ struct Infix<StringSet<THost, Segment<TSpec> > const >
 // ----------------------------------------------------------------------------
 
 template <typename THost, typename TSpec, typename TThreading>
-SEQAN_HOST_DEVICE void
+void
 _refreshStringSetLimits(StringSet<THost, Segment<TSpec> > & me, Tag<TThreading> const & tag)
 {
     partialSum(me.limits, tag);
@@ -244,7 +244,7 @@ _refreshStringSetLimits(StringSet<THost, Segment<TSpec> > & me, Tag<TThreading>
 }
 
 template <typename THost, typename TSpec>
-SEQAN_HOST_DEVICE void
+void
 _refreshStringSetLimits(StringSet<THost, Segment<TSpec> > & me)
 {
     _refreshStringSetLimits(me, Serial());
@@ -273,14 +273,14 @@ stringSetPositions(StringSet<THost, Segment<TSpec> > const & me)
 // ----------------------------------------------------------------------------
 
 template <typename THost, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Parameter_<THost>::Type
+inline typename Parameter_<THost>::Type
 host(StringSet<THost, Segment<TSpec> > & me)
 {
     return _toParameter<THost>(me.data_host);
 }
 
 template <typename THost, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Parameter_<THost>::Type
+inline typename Parameter_<THost>::Type
 host(StringSet<THost, Segment<TSpec> > const & me)
 {
     return _toParameter<THost>(me.data_host);
@@ -374,7 +374,7 @@ inline void appendValue(StringSet<THost, Segment<TSpec> > & /* me */,
 // --------------------------------------------------------------------------
 
 template <typename THost, typename TSpec, typename TPos, typename TInfixPos, typename TSize>
-SEQAN_HOST_DEVICE inline void
+inline void
 assignInfixWithLength(StringSet<THost, Segment<TSpec> > & me,
                       TPos pos, TInfixPos infixPos, TSize len)
 {
@@ -391,7 +391,7 @@ assignInfixWithLength(StringSet<THost, Segment<TSpec> > & me,
 // --------------------------------------------------------------------------
 
 template <typename THost, typename TSpec, typename TPos, typename TSize, typename TExpand>
-SEQAN_HOST_DEVICE inline void
+inline void
 appendInfixWithLength(StringSet<THost, Segment<TSpec> > & me,
                       TPos pos, TSize length, Tag<TExpand> tag)
 {
@@ -404,7 +404,7 @@ appendInfixWithLength(StringSet<THost, Segment<TSpec> > & me,
 // --------------------------------------------------------------------------
 
 template <typename THost, typename TSpec, typename TPos, typename TExpand>
-SEQAN_HOST_DEVICE inline void
+inline void
 appendInfix(StringSet<THost, Segment<TSpec> > & me,
             TPos posBegin, TPos posEnd, Tag<TExpand> tag)
 {
@@ -433,7 +433,7 @@ inline void clear(StringSet<THost, Segment<TSpec> > & me)
 // --------------------------------------------------------------------------
 
 template <typename THost, typename TSpec>
-SEQAN_HOST_DEVICE inline typename Size<StringSet<THost, Segment<TSpec> > >::Type
+inline typename Size<StringSet<THost, Segment<TSpec> > >::Type
 length(StringSet<THost, Segment<TSpec> > const & me)
 {
     return length(me.limits) - 1;
@@ -474,7 +474,7 @@ reserve(StringSet<THost, Segment<TSpec> > & me,
 // --------------------------------------------------------------------------
 
 template <typename THost, typename TSpec, typename TPos >
-SEQAN_HOST_DEVICE inline typename Infix<THost>::Type
+inline typename InfixOnValue<THost>::Type
 value(StringSet<THost, Segment<TSpec> > & me, TPos pos)
 {
     SEQAN_ASSERT_NOT(empty(me));
@@ -482,7 +482,7 @@ value(StringSet<THost, Segment<TSpec> > & me, TPos pos)
 }
 
 template <typename THost, typename TSpec, typename TPos >
-SEQAN_HOST_DEVICE inline typename Infix<THost const>::Type
+inline typename InfixOnValue<THost const>::Type
 value(StringSet<THost, Segment<TSpec> > const & me, TPos pos)
 {
     SEQAN_ASSERT_NOT(empty(me));
diff --git a/include/seqan/store/store_annotation.h b/include/seqan/store/store_annotation.h
index 0d0b4a7..85b6946 100644
--- a/include/seqan/store/store_annotation.h
+++ b/include/seqan/store/store_annotation.h
@@ -186,7 +186,7 @@ struct AnnotationTree {};
  * the functions @link RootedRandomAccessIteratorConcept#goBegin @endlink, @link InputIteratorConcept#goNext @endlink,
  * and @link RootedIteratorConcept#atEnd @endlink.
  *
- * Preorder means that the iterator visits the node befor it visits its children.
+ * Preorder means that the iterator visits the node before it visits its children.
  *
  * To obtain the type of the AnnotationTreeIterator for a FragmentStore specializiation <tt>TFragmentStore</tt>, you can
  * use the metafunction @link ContainerConcept#Iterator Iterator @endlink as follows:
diff --git a/include/seqan/stream/file_stream.h b/include/seqan/stream/file_stream.h
index ca30be0..acc21ae 100644
--- a/include/seqan/stream/file_stream.h
+++ b/include/seqan/stream/file_stream.h
@@ -60,7 +60,7 @@ template <typename TValue, typename TSpec>
 inline void
 free(Buffer<TValue, TSpec> & me)
 {
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     VirtualFree(me.begin, 0, MEM_RELEASE);
 #else
     ::free(me.begin);
@@ -84,7 +84,7 @@ reserve(Buffer<TValue, TSpec> & me, TSize newCapacity)
         return;
 
     free(me);
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     me.begin = me.end = (TValue *) VirtualAlloc(NULL, newCapacity * sizeof(TValue), MEM_COMMIT, PAGE_READWRITE);
 #else
     me.begin = me.end = (TValue *) valloc(newCapacity * sizeof(TValue));
@@ -326,7 +326,7 @@ _readFilePage(FilePageTable<TValue, TDirection, TSpec> &pager, File<TFileSpec> &
     reserve(page.raw, page.size);
 
     // do nothing in output-only mode or when there is nothing to read
-    if (IsSameType<TDirection, Output>::VALUE || page.filePos >= pager.fileSize)
+    if (IsSameType<TDirection, Output>::VALUE || page.filePos >= static_cast<decltype(page.filePos)>(pager.fileSize))
     {
         // no valid data read and we return immediately
         resize(page.raw, 0);
@@ -346,7 +346,7 @@ _readFilePage(FilePageTable<TValue, TDirection, TSpec> &pager, File<TFileSpec> &
     return false;   // false = reading in process
 }
 
-#ifndef PLATFORM_WINDOWS
+#ifndef STDLIB_VS
 template <typename TValue, typename TDirection, typename TSpec, typename TFileSpec, typename TPageFrame>
 inline bool
 _readFilePage(FilePageTable<TValue, TDirection, TSpec> &, FileMapping<TFileSpec> & file, TPageFrame & page)
@@ -442,7 +442,7 @@ _writeFilePage(FilePageTable<TValue, TDirection, TSpec> & pager, File<TFileSpec>
     return false;   // false = writing in process
 }
 
-#ifndef PLATFORM_WINDOWS
+#ifndef STDLIB_VS
 template <typename TValue, typename TDirection, typename TSpec, typename TFileSpec, typename TPageFrame>
 inline bool
 _writeFilePage(FilePageTable<TValue, TDirection, TSpec> & pager, FileMapping<TFileSpec> & file, TPageFrame & page)
@@ -864,7 +864,7 @@ struct FileStreamBuffer :
             readPage = NULL;
         }
 
-        if (pager.fileSize <= readPagePos)
+        if (static_cast<decltype(readPagePos)>(pager.fileSize) <= readPagePos)
             return false;
 
         Pair<int64_t, unsigned> ol = _getPageOffsetAndLength(pager.table, readPagePos);
@@ -987,7 +987,7 @@ struct FileStreamBuffer :
     {
         if (readPage != NULL)
         {
-            if (readPage->filePos <= pos && pos < readPage->filePos + readPage->size)
+            if (readPage->filePos <= pos && pos < readPage->filePos + static_cast<decltype(pos)>(readPage->size))
             {
                 this->setg(readPage->data.begin, readPage->data.begin + (pos - readPage->filePos), readPage->data.end);
                 return pos;
@@ -1017,7 +1017,7 @@ struct FileStreamBuffer :
     {
         if (writePage != NULL)
         {
-            if (writePage->filePos <= pos && pos < writePage->filePos + writePage->size)
+            if (writePage->filePos <= pos && pos < writePage->filePos + static_cast<decltype(pos)>(writePage->size))
             {
                 this->setg(writePage->data.begin, writePage->data.begin + (pos - writePage->filePos), writePage->data.end);
                 return pos;
diff --git a/include/seqan/stream/formatted_file.h b/include/seqan/stream/formatted_file.h
index 1e8bb5f..f798266 100644
--- a/include/seqan/stream/formatted_file.h
+++ b/include/seqan/stream/formatted_file.h
@@ -609,10 +609,11 @@ _checkThatStreamOutputFormatIsSet(FormattedFile<TFileFormat, Output, TSpec> cons
  * @fn FormattedFile#open
  * @brief Open a FormattedFile.
  *
- * @signature bool open(file, fileName);
+ * @signature bool open(file, fileName, mode);
  *
  * @param[in,out] file The FormattedFile to open.
  * @param[in]     fileName The name of the file open.
+ * @param[in]     mode The open mode: @link FileOpenMode @endlink.
  * @return bool <tt>true</tt> in the case of success, <tt>false</tt> otherwise.
  */
 
diff --git a/include/seqan/stream/iostream_bgzf.h b/include/seqan/stream/iostream_bgzf.h
index 2ce0719..4a7347e 100644
--- a/include/seqan/stream/iostream_bgzf.h
+++ b/include/seqan/stream/iostream_bgzf.h
@@ -142,7 +142,8 @@ public:
     };
 
     // array of worker threads
-    Thread<CompressionThread>   *threads;
+    using TFuture = decltype(std::async(CompressionThread{nullptr, CompressionContext<BgzfFile>{}, static_cast<size_t>(0)}));
+    std::vector<TFuture>         threads;
 
     basic_bgzf_streambuf(ostream_reference ostream_,
                          size_t numThreads = 16,
@@ -168,12 +169,9 @@ public:
             SEQAN_ASSERT(success);
         }
 
-        threads = new Thread<CompressionThread>[numThreads];
-        for (unsigned i = 0; i < numThreads; ++i)
+        for (size_t i = 0; i < numThreads; ++i)
         {
-            threads[i].worker.streamBuf = this;
-            threads[i].worker.threadNum = i;
-            run(threads[i]);
+            threads.push_back(std::async(std::launch::async, CompressionThread{this, CompressionContext<BgzfFile>{}, i}));
         }
 
         currentJobAvail = popFront(currentJobId, idleQueue);
@@ -191,10 +189,6 @@ public:
 
         unlockWriting(jobQueue);
         unlockReading(idleQueue);
-
-        for (unsigned i = 0; i < numThreads; ++i)
-            waitFor(threads[i]);
-        delete[] threads;
     }
 
     bool compressBuffer(size_t size)
@@ -310,13 +304,12 @@ public:
     struct Serializer
     {
         istream_reference   istream;
-        Mutex               lock;
+        std::mutex          lock;
         IOError             *error;
         off_type            fileOfs;
 
         Serializer(istream_reference istream) :
             istream(istream),
-            lock(false),
             error(NULL),
             fileOfs(0u)
         {}
@@ -333,31 +326,34 @@ public:
     {
         typedef std::vector<byte_type, byte_allocator_type> TInputBuffer;
 
-        TInputBuffer    inputBuffer;
-        TBuffer         buffer;
-        off_type        fileOfs;
-        int             size;
-        unsigned        compressedSize;
+        TInputBuffer            inputBuffer;
+        TBuffer                 buffer;
+        off_type                fileOfs;
+        int                     size;
+        unsigned                compressedSize;
 
-        CriticalSection cs;
-        Condition       readyEvent;
-        bool            ready;
+        std::mutex              cs;
+        std::condition_variable readyEvent;
+        bool                    ready;
 
         DecompressionJob() :
             inputBuffer(BGZF_MAX_BLOCK_SIZE, 0),
             buffer(MAX_PUTBACK + BGZF_MAX_BLOCK_SIZE / sizeof(char_type), 0),
             fileOfs(),
             size(0),
-            readyEvent(cs),
+            cs(),
+            readyEvent(),
             ready(true)
         {}
 
+        // TODO(rrahn): Do we need a copy constructor for the decompression job.
         DecompressionJob(DecompressionJob const &other) :
             inputBuffer(other.inputBuffer),
             buffer(other.buffer),
             fileOfs(other.fileOfs),
             size(other.size),
-            readyEvent(cs),
+            cs(),
+            readyEvent(),
             ready(other.ready)
         {}
     };
@@ -395,16 +391,13 @@ public:
                 // the caller defers the task of waiting to the decompression threads
                 if (!job.ready)
                 {
-                    ScopedLock<CriticalSection> lock(job.cs);
-                    if (!job.ready)
-                    {
-                        waitFor(job.readyEvent);
-                        job.ready = true;
-                    }
+                    std::unique_lock<std::mutex> lock(job.cs);
+                    job.readyEvent.wait(lock, [&job]{return job.ready;});
+                    SEQAN_ASSERT_EQ(job.ready, true);
                 }
 
                 {
-                    ScopedLock<Mutex> scopedLock(streamBuf->serializer.lock);
+                    std::lock_guard<std::mutex> scopedLock(streamBuf->serializer.lock);
 
                     if (streamBuf->serializer.error != NULL)
                         return;
@@ -469,11 +462,11 @@ public:
                     {
                         // signal that job is ready
                         {
-                            ScopedLock<CriticalSection> lock(job.cs);
+                            std::unique_lock<std::mutex> lock(job.cs);
                             job.ready = true;
-                            signal(job.readyEvent);
                         }
-                        return;
+                        job.readyEvent.notify_all();
+                        return;  // Terminate this thread.
                     }
                 }
 
@@ -486,18 +479,19 @@ public:
 
                     // signal that job is ready
                     {
-                        ScopedLock<CriticalSection> lock(job.cs);
+                        std::unique_lock<std::mutex> lock(job.cs);
                         job.ready = true;
-                        signal(job.readyEvent);
                     }
+                    job.readyEvent.notify_all();
                 }
             }
         }
     };
 
     // array of worker threads
-    Thread<DecompressionThread> *threads;
-    TBuffer                     putbackBuffer;
+    using TFuture = decltype(std::async(DecompressionThread{nullptr, CompressionContext<BgzfFile>{}}));
+    std::vector<TFuture> threads;
+    TBuffer              putbackBuffer;
 
     basic_unbgzf_streambuf(istream_reference istream_,
                            size_t numThreads = 16,
@@ -524,11 +518,9 @@ public:
             SEQAN_ASSERT(success);
         }
 
-        threads = new Thread<DecompressionThread>[numThreads];
         for (unsigned i = 0; i < numThreads; ++i)
         {
-            threads[i].worker.streamBuf = this;
-            run(threads[i]);
+            threads.push_back(std::async(std::launch::async, DecompressionThread{this, CompressionContext<BgzfFile>{}}));
         }
     }
 
@@ -536,10 +528,6 @@ public:
     {
         unlockWriting(todoQueue);
         unlockReading(runningQueue);
-
-        for (unsigned i = 0; i < numThreads; ++i)
-            waitFor(threads[i]);
-        delete[] threads;
     }
 
     int_type underflow()
@@ -585,9 +573,8 @@ public:
 
             // wait for the end of decompression
             {
-                ScopedLock<CriticalSection> lock(job.cs);
-                if (!job.ready)
-                    waitFor(job.readyEvent);
+                std::unique_lock<std::mutex> lock(job.cs);
+                job.readyEvent.wait(lock, [&job]{return job.ready;});
             }
 
             size_t size = (job.size != -1)? job.size : 0;
@@ -656,7 +643,7 @@ public:
 
                 // ok, different block
                 {
-                    ScopedLock<Mutex> scopedLock(serializer.lock);
+                    std::lock_guard<std::mutex> scopedLock(serializer.lock);
 
                     // remove all running jobs and put them in the idle queue unless we
                     // find our seek target
@@ -705,10 +692,10 @@ public:
                 {
                     // wait for the end of decompression
                     DecompressionJob &job = jobs[currentJobId];
+
                     {
-                        ScopedLock<CriticalSection> lock(job.cs);
-                        if (!job.ready)
-                            waitFor(job.readyEvent);
+                        std::unique_lock<std::mutex> lock(job.cs);
+                        job.readyEvent.wait(lock, [&job]{return job.ready;});
                     }
 
                     SEQAN_ASSERT_EQ(job.fileOfs, (off_type)destFileOfs);
diff --git a/include/seqan/stream/stream_base.h b/include/seqan/stream/stream_base.h
index 89ee5b2..f5bbfbb 100644
--- a/include/seqan/stream/stream_base.h
+++ b/include/seqan/stream/stream_base.h
@@ -172,7 +172,7 @@ char const * FileExtensions<BZ2File, T>::VALUE[1] =
 inline bool
 _isPipe(const char * fileName)
 {
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     struct _stat buf;
     if (_stat(fileName, &buf) == 0)
         if ((buf.st_mode & _S_IFMT) == _S_IFCHR)
diff --git a/include/seqan/system.h b/include/seqan/system.h
index a5b1522..9d261d6 100644
--- a/include/seqan/system.h
+++ b/include/seqan/system.h
@@ -30,11 +30,11 @@
 //
 // ==========================================================================
 
-#include <seqan/file.h>
-
 #ifndef SEQAN_HEADER_SYSTEM_H
 #define SEQAN_HEADER_SYSTEM_H
 
+#include <seqan/file.h>
+
 //____________________________________________________________________________
 // prerequisites
 
@@ -43,18 +43,19 @@
 #include <string>
 #include <iostream>
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 
 #include <windows.h>
 
-#else //#ifdef PLATFORM_WINDOWS
+#else //#ifdef STDLIB_VS
 
 #include <cstdlib>
 #include <climits>
-#include <pthread.h>
 #include <errno.h>
 #include <semaphore.h>
+#if SEQAN_ASYNC_IO
 #include <aio.h>
+#endif
 #include <sys/mman.h>
 
 #ifndef O_LARGEFILE
@@ -65,28 +66,26 @@
 #define O_DIRECT 0
 #endif
 
-#endif //#ifdef PLATFORM_WINDOWS
+#endif //#ifdef STDLIB_VS
 
 #include <seqan/system/system_forwards.h>
-#ifndef PLATFORM_WINDOWS
+#ifndef STDLIB_VS
 #include <seqan/system/file_forwards.h>
-#endif  // #ifndef PLATFORM_WINDOWS
+#endif  // #ifndef STDLIB_VS
 
 //____________________________________________________________________________
 // multi-threading
 
 #include <seqan/system/system_base.h>
-#include <seqan/system/system_mutex.h>
-#include <seqan/system/system_event.h>
-#include <seqan/system/system_critical_section.h>
-#include <seqan/system/system_condition.h>
-#include <seqan/system/system_thread.h>
 
 //____________________________________________________________________________
 // synchronous and asynchronous files
 
 #include <seqan/system/file_sync.h>
+#if SEQAN_ASYNC_IO
+#include <seqan/system/system_event_win.h>
 #include <seqan/system/file_async.h>
+#endif
 #include <seqan/system/file_directory.h>
 
 #endif //#ifndef SEQAN_HEADER_...
diff --git a/include/seqan/system/file_async.h b/include/seqan/system/file_async.h
index d36b74c..6bb1b11 100644
--- a/include/seqan/system/file_async.h
+++ b/include/seqan/system/file_async.h
@@ -60,241 +60,274 @@ namespace seqan
 {
 
 
-    template <typename TSpec /* = void */>
-    struct Async {};
+template <typename TSpec /* = void */>
+struct Async {};
 
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 
-    template <typename TSpec>
-    class File<Async<TSpec> >
-    {
+template <typename TSpec>
+class File<Async<TSpec> >
+{
 //IOREV _windows_
-    public:
-
-        typedef LONGLONG    FilePtr;
-        typedef ULONGLONG   SizeType;
-        typedef DWORD       SizeType_;
-        typedef HANDLE      Handle;
-
-        Handle              handle, handleAsync;
-        bool                noBuffering;
-
-        File():
-            handle(INVALID_HANDLE_VALUE) {}
-
-        File(void *): // to be compatible with the FILE*(NULL) constructor
-            handle(INVALID_HANDLE_VALUE) {}
-
-        bool open(char const *fileName, int openMode = DefaultOpenMode<File>::VALUE) {
-            SEQAN_PROADD(SEQAN_PROOPENFILES, 1);
-            noBuffering = (getExtraFlags(openMode | OPEN_ASYNC) & (FILE_FLAG_NO_BUFFERING | FILE_FLAG_OVERLAPPED)) != 0;
-            handleAsync = CreateFileA(fileName,
-                                getFileAccess(openMode | OPEN_ASYNC),
-                                FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
-                                NULL,
-                                getCreationFlags(openMode | OPEN_ASYNC),
-                                getExtraFlags(openMode | OPEN_ASYNC),
-                                NULL);
-
-            if (handleAsync == INVALID_HANDLE_VALUE) {
-                if (!(openMode & OPEN_QUIET))
-                    std::cerr << "Open failed on file " << fileName << ". (ErrNo=" << GetLastError() << ")" << std::endl;
-                return false;
-            }
+public:
+
+    typedef LONGLONG    FilePtr;
+    typedef ULONGLONG   SizeType;
+    typedef DWORD       SizeType_;
+    typedef HANDLE      Handle;
+
+    Handle              handle, handleAsync;
+    bool                noBuffering;
+
+    File() :
+        handle(INVALID_HANDLE_VALUE),
+        handleAsync(INVALID_HANDLE_VALUE) {}
+
+    File(void *) :    // to be compatible with the FILE*(NULL) constructor
+        handle(INVALID_HANDLE_VALUE),
+        handleAsync(INVALID_HANDLE_VALUE) {}
+
+    virtual ~File()
+    {
+        close();
+    }
+
+    bool open(char const * fileName, int openMode = DefaultOpenMode<File>::VALUE)
+    {
+        SEQAN_PROADD(SEQAN_PROOPENFILES, 1);
+        noBuffering = (getExtraFlags(openMode | OPEN_ASYNC) & (FILE_FLAG_NO_BUFFERING | FILE_FLAG_OVERLAPPED)) != 0;
+        handleAsync = CreateFileA(fileName,
+                                  getFileAccess(openMode | OPEN_ASYNC),
+                                  FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
+                                  NULL,
+                                  getCreationFlags(openMode | OPEN_ASYNC),
+                                  getExtraFlags(openMode | OPEN_ASYNC),
+                                  NULL);
+
+        if (handleAsync == INVALID_HANDLE_VALUE)
+        {
+            if (!(openMode & OPEN_QUIET))
+                std::cerr << "Open failed on file " << fileName << ". (ErrNo=" << GetLastError() << ")" << std::endl;
+            return false;
+        }
             #ifdef SEQAN_VERBOSE
-                if (!(openMode & OPEN_QUIET))
-                    std::cerr << "file opened asynchronously " << fileName << " handle " << std::hex << handleAsync << std::dec << std::endl;
+        if (!(openMode & OPEN_QUIET))
+            std::cerr << "file opened asynchronously " << fileName << " handle " << std::hex << handleAsync << std::dec << std::endl;
             #endif
 
-            if (noBuffering) {
-                handle = CreateFileA(fileName,                // in this case io must be sector aligned
-                                getFileAccess(openMode),    // so we open a second file, for unaligned access
-                                FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
-                                NULL,
-                                OPEN_EXISTING,
-                                getExtraFlags(openMode & ~OPEN_ASYNC),
-                                NULL);
-                if (handle == INVALID_HANDLE_VALUE) {
-                    if (!(openMode & OPEN_QUIET))
-                        std::cerr << "Open failed on secondary file " << fileName << ". (ErrNo=" << GetLastError() << ")" << std::endl;
-                    return false;
-                }
+        if (noBuffering)
+        {
+            handle = CreateFileA(fileName,                    // in this case io must be sector aligned
+                                 getFileAccess(openMode),   // so we open a second file, for unaligned access
+                                 FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
+                                 NULL,
+                                 OPEN_EXISTING,
+                                 getExtraFlags(openMode & ~OPEN_ASYNC),
+                                 NULL);
+            if (handle == INVALID_HANDLE_VALUE)
+            {
+                if (!(openMode & OPEN_QUIET))
+                    std::cerr << "Open failed on secondary file " << fileName << ". (ErrNo=" << GetLastError() << ")" << std::endl;
+                return false;
+            }
                 #ifdef SEQAN_VERBOSE
-                    if (!(openMode & OPEN_QUIET))
-                        std::cerr << "async file opened  " << fileName << " handle " << std::hex << handle << std::dec << std::endl;
+            if (!(openMode & OPEN_QUIET))
+                std::cerr << "async file opened  " << fileName << " handle " << std::hex << handle << std::dec << std::endl;
                 #endif
-            } else
-                handle = handleAsync;
-
-            return true;
         }
+        else
+            handle = handleAsync;
+
+        return true;
+    }
 
-        bool openTemp(int openMode = DefaultOpenTempMode<File>::VALUE) {
-            char szTempName[MAX_PATH];
+    bool openTemp(int openMode = DefaultOpenTempMode<File>::VALUE)
+    {
+        char szTempName[MAX_PATH];
 #ifdef SEQAN_DEFAULT_TMPDIR
-            static const char szTempPath[MAX_PATH] = SEQAN_DEFAULT_TMPDIR;
+        static const char szTempPath[MAX_PATH] = SEQAN_DEFAULT_TMPDIR;
 #else
-            char szTempPath[MAX_PATH];
-            if (!GetTempPathA(MAX_PATH, szTempPath)) {
-                if (!(openMode & OPEN_QUIET))
-                    std::cerr << "Couldn't get a temporary path name. (ErrNo=" << GetLastError() << ")" << std::endl;
-                return false;
-            }
+        char szTempPath[MAX_PATH];
+        if (!GetTempPathA(MAX_PATH, szTempPath))
+        {
+            if (!(openMode & OPEN_QUIET))
+                std::cerr << "Couldn't get a temporary path name. (ErrNo=" << GetLastError() << ")" << std::endl;
+            return false;
+        }
 #endif
-            if (!GetTempFileNameA(szTempPath, "GNDX", 0, szTempName)) {
-                if (!(openMode & OPEN_QUIET))
-                    std::cerr << "Couldn't get a temporary file name. (ErrNo=" << GetLastError() << ")" << std::endl;
-                return false;
-            }
-            return open(szTempName, openMode | OPEN_TEMPORARY);
+        if (!GetTempFileNameA(szTempPath, "GNDX", 0, szTempName))
+        {
+            if (!(openMode & OPEN_QUIET))
+                std::cerr << "Couldn't get a temporary file name. (ErrNo=" << GetLastError() << ")" << std::endl;
+            return false;
         }
+        return open(szTempName, openMode | OPEN_TEMPORARY);
+    }
 
-        inline bool close() {
-            BOOL result = TRUE;
+    inline bool close()
+    {
+        BOOL result = TRUE;
             #ifdef SEQAN_VERBOSE
-                std::cerr << "files closed handles " << std::hex << handleAsync << " and " << handle << std::dec << std::endl;
+        std::cerr << "files closed handles " << std::hex << handleAsync << " and " << handle << std::dec << std::endl;
             #endif
-            if (handle != handleAsync)
-                result &= CloseHandle(handleAsync);
-            result &= CloseHandle(handle);
-            handleAsync = INVALID_HANDLE_VALUE;
-            handle = INVALID_HANDLE_VALUE;
-            SEQAN_PROSUB(SEQAN_PROOPENFILES, 1);
-            return result != FALSE;
-        }
+        if (handle != handleAsync)
+            result &= CloseHandle(handleAsync);
+        result &= CloseHandle(handle);
+        handleAsync = INVALID_HANDLE_VALUE;
+        handle = INVALID_HANDLE_VALUE;
+        SEQAN_PROSUB(SEQAN_PROOPENFILES, 1);
+        return result != FALSE;
+    }
 
-        inline DWORD read(void *memPtr, SizeType_ count) const {
-            SEQAN_PROADD(SEQAN_PROIO, (count + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
-            SEQAN_PROTIMESTART(tw);
-            DWORD _transferedBytes;
-            ReadFile(handle, memPtr, count, &_transferedBytes, NULL);
-            SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
-            return _transferedBytes;
-        }
+    inline DWORD read(void * memPtr, SizeType_ count) const
+    {
+        SEQAN_PROADD(SEQAN_PROIO, (count + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
+        SEQAN_PROTIMESTART(tw);
+        DWORD _transferedBytes;
+        ReadFile(handle, memPtr, count, &_transferedBytes, NULL);
+        SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
+        return _transferedBytes;
+    }
 
-        inline DWORD write(void const *memPtr, SizeType_ count) const {
-            SEQAN_PROADD(SEQAN_PROIO, (count + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
-            SEQAN_PROTIMESTART(tw);
-            DWORD _transferedBytes;
-            WriteFile(handle, memPtr, count, &_transferedBytes, NULL);
-            SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
-            return _transferedBytes;
-        }
+    inline DWORD write(void const * memPtr, SizeType_ count) const
+    {
+        SEQAN_PROADD(SEQAN_PROIO, (count + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
+        SEQAN_PROTIMESTART(tw);
+        DWORD _transferedBytes;
+        WriteFile(handle, memPtr, count, &_transferedBytes, NULL);
+        SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
+        return _transferedBytes;
+    }
 
-        inline FilePtr seek(FilePtr _pos, DWORD origin = FILE_BEGIN) {
+    inline FilePtr seek(FilePtr _pos, DWORD origin = FILE_BEGIN)
+    {
 //          LARGE_INTEGER li = _pos;
 //            return SetFilePointer(handleAsync, li.LowPart, &li.HighPart, MoveMethod);
-            LARGE_INTEGER new_pos, pos;
-            pos.QuadPart = _pos;
-            SetFilePointerEx(handle, pos, &new_pos, origin);
+        LARGE_INTEGER new_pos, pos;
+        pos.QuadPart = _pos;
+        SetFilePointerEx(handle, pos, &new_pos, origin);
 //            position = new_pos.QuadPart;
-            return new_pos.QuadPart;
-        }
+        return new_pos.QuadPart;
+    }
 
-        inline FilePtr tell() {
-            return seek(0, FILE_CURRENT);
-        }
+    inline FilePtr tell()
+    {
+        return seek(0, FILE_CURRENT);
+    }
 
-        inline FilePtr size() const {
-            LARGE_INTEGER result;
-            DWORD dwError, high;
-            result.LowPart = GetFileSize(handle, &high);
-            result.HighPart = high;
-            if (result.LowPart == INVALID_FILE_SIZE && (dwError = GetLastError()) != NO_ERROR) {
-                std::cerr << "Couldn't get file size. (ErrNo=" << dwError << ")" << std::endl;
-                return 0;
-            }
-            return result.QuadPart;
+    inline FilePtr size() const
+    {
+        LARGE_INTEGER result;
+        DWORD dwError, high;
+        result.LowPart = GetFileSize(handle, &high);
+        result.HighPart = high;
+        if (result.LowPart == INVALID_FILE_SIZE && (dwError = GetLastError()) != NO_ERROR)
+        {
+            std::cerr << "Couldn't get file size. (ErrNo=" << dwError << ")" << std::endl;
+            return 0;
         }
+        return result.QuadPart;
+    }
 
-        inline bool setEof() const {
-            return SetEndOfFile(handle) != FALSE;
-        }
+    inline bool setEof() const
+    {
+        return SetEndOfFile(handle) != FALSE;
+    }
 
-        inline static DWORD error() {
-            return GetLastError();
-        }
+    inline static DWORD error()
+    {
+        return GetLastError();
+    }
 
-        operator bool () const {
-            return (handle != INVALID_HANDLE_VALUE) && (handleAsync != INVALID_HANDLE_VALUE);
-        }
+    operator bool() const {
+        return (handle != INVALID_HANDLE_VALUE) && (handleAsync != INVALID_HANDLE_VALUE);
+    }
 
-    protected:
-
-        DWORD getFileAccess(int openMode) {
-            switch (openMode & OPEN_MASK) {
-                case OPEN_RDONLY:
-                    return GENERIC_READ;
-                case OPEN_WRONLY:
-                    return GENERIC_WRITE;
-                case OPEN_RDWR:
-                    return GENERIC_READ | GENERIC_WRITE;
-                default:
-                    return 0;
-            }
+protected:
+
+    DWORD getFileAccess(int openMode)
+    {
+        switch (openMode & OPEN_MASK)
+        {
+        case OPEN_RDONLY:
+            return GENERIC_READ;
+
+        case OPEN_WRONLY:
+            return GENERIC_WRITE;
+
+        case OPEN_RDWR:
+            return GENERIC_READ | GENERIC_WRITE;
+
+        default:
+            return 0;
         }
+    }
 
-        DWORD getCreationFlags(int openMode) {
-            if (openMode & OPEN_CREATE)
-                if (openMode & OPEN_APPEND)
-                    return OPEN_ALWAYS;
-                else
-                    return CREATE_ALWAYS;
+    DWORD getCreationFlags(int openMode)
+    {
+        if (openMode & OPEN_CREATE)
+            if (openMode & OPEN_APPEND)
+                return OPEN_ALWAYS;
             else
-                return OPEN_EXISTING;
-        }
+                return CREATE_ALWAYS;
+        else
+            return OPEN_EXISTING;
+    }
 
-        DWORD getExtraFlags(int openMode) {
-            DWORD extra = FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS;// | FILE_FLAG_WRITE_THROUGH;
-            if (openMode & OPEN_ASYNC) {
-                extra |= FILE_FLAG_OVERLAPPED;
+    DWORD getExtraFlags(int openMode)
+    {
+        DWORD extra = FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS;    // | FILE_FLAG_WRITE_THROUGH;
+        if (openMode & OPEN_ASYNC)
+        {
+            extra |= FILE_FLAG_OVERLAPPED;
                 #ifdef SEQAN_DIRECTIO
-                    extra |= FILE_FLAG_NO_BUFFERING;
+            extra |= FILE_FLAG_NO_BUFFERING;
                 #endif
-            }
-            if (openMode & OPEN_TEMPORARY)  extra |= FILE_FLAG_DELETE_ON_CLOSE;
-            return extra;
         }
+        if (openMode & OPEN_TEMPORARY)  extra |= FILE_FLAG_DELETE_ON_CLOSE;
+        return extra;
+    }
 
-    };
+};
 
 
-    //////////////////////////////////////////////////////////////////////////////
-    // (SeqAn adaption)
-    //////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+// (SeqAn adaption)
+//////////////////////////////////////////////////////////////////////////////
 
-    struct aiocb_win32
-    {
-        OVERLAPPED  overlapped;
-        Event       xmitDone;
+struct aiocb_win32
+{
+    OVERLAPPED  overlapped;
+    Event       xmitDone;
 
-        aiocb_win32()
-        {}
+    aiocb_win32()
+    {}
 
-        aiocb_win32(aiocb_win32 & other, Move) :
-            overlapped(other.overlapped),
-            xmitDone(other.xmitDone, Move())
-        {}
+    aiocb_win32(aiocb_win32 & other, Move) :
+        overlapped(other.overlapped),
+        xmitDone(other.xmitDone, Move())
+    {}
 
-        aiocb_win32(aiocb_win32 && other) :
-            overlapped(other.overlapped),
-            xmitDone(other.xmitDone, Move())
-        {}
+    aiocb_win32(aiocb_win32 && other) :
+        overlapped(other.overlapped),
+        xmitDone(other.xmitDone, Move())
+    {}
 
-    private:
-        aiocb_win32(aiocb_win32 const &)
-        {}
-    };
+private:
+    aiocb_win32(aiocb_win32 const &)
+    {}
+};
 
-    template <>
-    struct HasMoveConstructor<aiocb_win32> : True {};
+template <>
+struct HasMoveConstructor<aiocb_win32>:
+    True {};
 
-    template <typename TSpec>
-    struct AsyncRequest<File<Async<TSpec> > >
-    {
-        typedef aiocb_win32 Type;
-    };
+template <typename TSpec>
+struct AsyncRequest<File<Async<TSpec> > >
+{
+    typedef aiocb_win32 Type;
+};
 /*
     template <typename TSpec>
     struct aEvent<File<Async<TSpec> > >
@@ -322,152 +355,165 @@ namespace seqan
     };*/
 
 
-    template <typename TSpec>
-    inline typename Size<File<Async<TSpec> > >::Type length(File<Async<TSpec> > &me) {
-        return me.size();
-    }
+template <typename TSpec>
+inline typename Size<File<Async<TSpec> > >::Type length(File<Async<TSpec> > & me)
+{
+    return me.size();
+}
 
-    template <typename TSpec>
-    inline bool setEof(File<Async<TSpec> > &me) {
-        return me.setEof();
-    }
+template <typename TSpec>
+inline bool setEof(File<Async<TSpec> > & me)
+{
+    return me.setEof();
+}
 
-    template <typename TSpec>
-    inline unsigned sectorSize(File<Async<TSpec> > const &) {
-        DWORD SpC, nofC, tnoC, aligning;
-        if (GetDiskFreeSpace(NULL, &SpC, &aligning, &nofC, &tnoC) == 0)  {
-            std::cerr << "Error " << GetLastError() << " while querying cluster size" << std::endl;
-            return 4096;
-        }
-        return aligning;
+template <typename TSpec>
+inline unsigned sectorSize(File<Async<TSpec> > const &)
+{
+    DWORD SpC, nofC, tnoC, aligning;
+    if (GetDiskFreeSpace(NULL, &SpC, &aligning, &nofC, &tnoC) == 0)
+    {
+        std::cerr << "Error " << GetLastError() << " while querying cluster size" << std::endl;
+        return 4096;
     }
+    return aligning;
+}
 
-
-    template < typename TSpec, typename TValue, typename TSize, typename TPos >
-    inline bool asyncReadAt(File<Async<TSpec> > & me, TValue *memPtr, TSize const count, TPos const fileOfs,
-        aiocb_win32 &request)
-    {
-        SEQAN_PROTIMESTART(tw);
-        LARGE_INTEGER ofs;
-        ofs.QuadPart = fileOfs;
-        ofs.QuadPart *= sizeof(TValue);
-        request.overlapped.Offset = ofs.LowPart;
-        request.overlapped.OffsetHigh = ofs.HighPart;
-        if (!request.xmitDone) open(request.xmitDone);
-        request.overlapped.hEvent = request.xmitDone.hEvent;
-        if (ReadFile(
+template <typename TSpec, typename TValue, typename TSize, typename TPos>
+inline bool asyncReadAt(File<Async<TSpec> > & me, TValue * memPtr, TSize const count, TPos const fileOfs,
+                        aiocb_win32 & request)
+{
+    SEQAN_PROTIMESTART(tw);
+    LARGE_INTEGER ofs;
+    ofs.QuadPart = fileOfs;
+    ofs.QuadPart *= sizeof(TValue);
+    request.overlapped.Offset = ofs.LowPart;
+    request.overlapped.OffsetHigh = ofs.HighPart;
+    if (!request.xmitDone)
+        open(request.xmitDone);
+    request.overlapped.hEvent = request.xmitDone.hEvent;
+    if (ReadFile(
             me.handleAsync,
             memPtr,
             count * sizeof(TValue),
             &ofs.LowPart,
             &request.overlapped) || (me.error() == ERROR_IO_PENDING))
-        {
-            SEQAN_PROADD(SEQAN_PROIO, (sizeof(TValue) * count + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
-            SEQAN_PROADD(SEQAN_PROIWAIT, SEQAN_PROTIMEDIFF(tw));
-            return true;
-        }
-        if (me.error() == ERROR_NO_SYSTEM_RESOURCES) {  // read synchronoulsy instead
+    {
+        SEQAN_PROADD(SEQAN_PROIO, (sizeof(TValue) * count + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
+        SEQAN_PROADD(SEQAN_PROIWAIT, SEQAN_PROTIMEDIFF(tw));
+        return true;
+    }
+    if (me.error() == ERROR_NO_SYSTEM_RESOURCES)        // read synchronoulsy instead
+    {
             #if SEQAN_ENABLE_DEBUG || SEQAN_ENABLE_TESTING
-                std::cerr << "Warning: Falling back to sync. read. :( " << std::endl;
+        std::cerr << "Warning: Falling back to sync. read. :( " << std::endl;
             #endif
-            signal(request.xmitDone);
-            return readAt(me, memPtr, count, fileOfs);
-        }
-        return false;
+        signal(request.xmitDone);
+        return readAt(me, memPtr, count, fileOfs);
     }
+    return false;
+}
 
-    template < typename TSpec, typename TValue, typename TSize, typename TPos >
-    inline bool asyncWriteAt(File<Async<TSpec> > & me, TValue const *memPtr, TSize const count, TPos const fileOfs,
-        aiocb_win32 &request)
-    {
-        SEQAN_PROTIMESTART(tw);
-        LARGE_INTEGER ofs;
-        ofs.QuadPart = fileOfs;
-        ofs.QuadPart *= sizeof(TValue);
-        request.overlapped.Offset = ofs.LowPart;
-        request.overlapped.OffsetHigh = ofs.HighPart;
-        if (!request.xmitDone) open(request.xmitDone);
-        request.overlapped.hEvent = request.xmitDone.hEvent;
-        if (WriteFile(
+template <typename TSpec, typename TValue, typename TSize, typename TPos>
+inline bool asyncWriteAt(File<Async<TSpec> > & me, TValue const * memPtr, TSize const count, TPos const fileOfs,
+                         aiocb_win32 & request)
+{
+    SEQAN_PROTIMESTART(tw);
+    LARGE_INTEGER ofs;
+    ofs.QuadPart = fileOfs;
+    ofs.QuadPart *= sizeof(TValue);
+    request.overlapped.Offset = ofs.LowPart;
+    request.overlapped.OffsetHigh = ofs.HighPart;
+    if (!request.xmitDone)
+        open(request.xmitDone);
+    request.overlapped.hEvent = request.xmitDone.hEvent;
+    if (WriteFile(
             me.handleAsync,
             memPtr,
             count * sizeof(TValue),
             &ofs.LowPart,
             &request.overlapped) || (me.error() == ERROR_IO_PENDING))
-        {
-            SEQAN_PROADD(SEQAN_PROIO, (sizeof(TValue) * count + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
-            SEQAN_PROADD(SEQAN_PROIWAIT, SEQAN_PROTIMEDIFF(tw));
-            return true;
-        }
-        if (me.error() == ERROR_NO_SYSTEM_RESOURCES) {  // write synchronoulsy instead
+    {
+        SEQAN_PROADD(SEQAN_PROIO, (sizeof(TValue) * count + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
+        SEQAN_PROADD(SEQAN_PROIWAIT, SEQAN_PROTIMEDIFF(tw));
+        return true;
+    }
+    if (me.error() == ERROR_NO_SYSTEM_RESOURCES)        // write synchronoulsy instead
+    {
             #if SEQAN_ENABLE_DEBUG || SEQAN_ENABLE_TESTING
-                std::cerr << "Warning: Falling back to sync. write. :( " << std::endl;
+        std::cerr << "Warning: Falling back to sync. write. :( " << std::endl;
             #endif
-            signal(request.xmitDone);
-            return writeAt(me, memPtr, count, fileOfs);
-        }
-        return false;
+        signal(request.xmitDone);
+        return writeAt(me, memPtr, count, fileOfs);
     }
+    return false;
+}
 
-    //////////////////////////////////////////////////////////////////////
-    // queue specific functions
+//////////////////////////////////////////////////////////////////////
+// queue specific functions
 
-    inline bool waitFor(aiocb_win32 &request) {
+inline bool waitFor(aiocb_win32 & request)
+{
 //IOREV _doc_
-        SEQAN_PROTIMESTART(tw);
-        bool inProgress;
-        bool waitResult = waitFor(request.xmitDone, 60000, inProgress);
-        if (inProgress)
-            std::cerr << "waitFor timeout" << std::endl;
-        SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
-        return waitResult;
-    }
+    SEQAN_PROTIMESTART(tw);
+    bool inProgress;
+    bool waitResult = waitFor(request.xmitDone, 60000, inProgress);
+    if (inProgress)
+        std::cerr << "waitFor timeout" << std::endl;
+    SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
+    return waitResult;
+}
 
-    template < typename TTime >
-    inline bool waitFor(aiocb_win32 &request, TTime timeoutMilliSec, bool &inProgress) {
+template <typename TTime>
+inline bool waitFor(aiocb_win32 & request, TTime timeoutMilliSec, bool & inProgress)
+{
 //IOREV _doc_
-        SEQAN_PROTIMESTART(tw);
-        bool waitResult = waitFor(request.xmitDone, timeoutMilliSec, inProgress);
-        SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
-        return waitResult;
-    }
+    SEQAN_PROTIMESTART(tw);
+    bool waitResult = waitFor(request.xmitDone, timeoutMilliSec, inProgress);
+    SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
+    return waitResult;
+}
 
-    template < typename TSize >
-    inline int waitForAny(aiocb_win32 const * const contexts[], TSize count, DWORD timeoutMilliSec = Event::Infinite) {
+template <typename TSize>
+inline int waitForAny(aiocb_win32 const * const contexts[], TSize count, DWORD timeoutMilliSec = Event::Infinite)
+{
 //IOREV _nodoc_
-        Event::Handle *handles = new Event::Handle[count];
-        for(TSize i = 0; i < count; ++i)
-            handles[i] = contexts[i]->xmitDone.hEvent;
-
-        SEQAN_PROTIMESTART(tw);
-        DWORD result = WaitForMultipleObjects(count, handles, false, timeoutMilliSec);
-        SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
-        delete[] handles;
-        if (/*result >= WAIT_OBJECT_0 && */result < WAIT_OBJECT_0 + count)
-            return result - WAIT_OBJECT_0;
-        return -1;
-    }
+    Event::Handle * handles = new Event::Handle[count];
+    for (TSize i = 0; i < count; ++i)
+        handles[i] = contexts[i]->xmitDone.hEvent;
+
+    SEQAN_PROTIMESTART(tw);
+    DWORD result = WaitForMultipleObjects(count, handles, false, timeoutMilliSec);
+    SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
+    delete[] handles;
+    if (/*result >= WAIT_OBJECT_0 && */ result < WAIT_OBJECT_0 + count)
+        return result - WAIT_OBJECT_0;
+
+    return -1;
+}
 
-    template <typename TSpec>
-    inline bool cancel(File<Async<TSpec> > & me, aiocb_win32 const &request) {
+template <typename TSpec>
+inline bool cancel(File<Async<TSpec> > & me, aiocb_win32 const & request)
+{
 //IOREV _doc_
-        return CancelIo(me.handleAsync);
-    }
+    return CancelIo(me.handleAsync);
+}
 
-    template <typename TSpec>
-    inline bool flush(File<Async<TSpec> > & me) {
+template <typename TSpec>
+inline bool flush(File<Async<TSpec> > & me)
+{
 //IOREV _doc_
-        if (me.handle != me.handleAsync)    // in case of equality no direct access was done -> no flush needed
-            return FlushFileBuffers(me.handle) != 0;
-        else
-            return true;
-    }
+    if (me.handle != me.handleAsync)        // in case of equality no direct access was done -> no flush needed
+        return FlushFileBuffers(me.handle) != 0;
+    else
+        return true;
+}
 
-    template < typename TSpec, typename AsyncRequest >
-    inline void release(File<Async<TSpec> > & me, AsyncRequest & request) {
+template <typename TSpec, typename AsyncRequest>
+inline void release(File<Async<TSpec> > & me, AsyncRequest & request)
+{
 //IOREV _nodoc_
-    }
-
+}
 
 /*
     //////////////////////////////////////////////////////////////////////
@@ -628,125 +674,134 @@ namespace seqan
     }
 */
 
-    //////////////////////////////////////////////////////////////////////////////
-    // page aligned allocate for direct file io
+//////////////////////////////////////////////////////////////////////////////
+// page aligned allocate for direct file io
 
-    struct TagAllocateAligned_;    //< allocate page aligned memory for direct i/o access
-    typedef Tag<TagAllocateAligned_> const TagAllocateAligned;
+struct TagAllocateAligned_;        //< allocate page aligned memory for direct i/o access
+typedef Tag<TagAllocateAligned_> const TagAllocateAligned;
 
-    template <typename T, typename TValue, typename TSize>
-    inline void
-    allocate(T const &,
-             TValue * & data,
-             TSize count,
-             TagAllocateAligned const)
-    {
+template <typename T, typename TValue, typename TSize>
+inline void
+allocate(T const &,
+         TValue * & data,
+         TSize count,
+         TagAllocateAligned const)
+{
 //IOREV _doc_
-        data = (TValue *) VirtualAlloc(NULL, count * sizeof(TValue), MEM_COMMIT, PAGE_READWRITE);
-        if (data)
-            SEQAN_PROADD(SEQAN_PROMEMORY, count * sizeof(TValue));
-        else
-            std::cerr << "AlignAllocator: Could not allocate memory of size " << std::hex << count * sizeof(TValue) << std::dec << ". (ErrNo=" << GetLastError() << ")" << std::endl;
-    }
+    data = (TValue *) VirtualAlloc(NULL, count * sizeof(TValue), MEM_COMMIT, PAGE_READWRITE);
+    if (data)
+        SEQAN_PROADD(SEQAN_PROMEMORY, count * sizeof(TValue));
+    else
+        std::cerr << "AlignAllocator: Could not allocate memory of size " << std::hex << count * sizeof(TValue) << std::dec << ". (ErrNo=" << GetLastError() << ")" << std::endl;
+}
 
-    //////////////////////////////////////////////////////////////////////////////
-    // page aligned deallocate for direct file io
+//////////////////////////////////////////////////////////////////////////////
+// page aligned deallocate for direct file io
 
-    template <typename T, typename TValue, typename TSize>
-    inline void
-    deallocate( T const &,
-                TValue * data,
-                TSize count,
-                TagAllocateAligned const)
-    {
+template <typename T, typename TValue, typename TSize>
+inline void
+deallocate(T const &,
+           TValue * data,
+           TSize count,
+           TagAllocateAligned const)
+{
 //IOREV _doc_
-        if (data) {
-            VirtualFree(data, 0, MEM_RELEASE);
-            if (count)    // .. to use count if SEQAN_PROFILE is not defined
-                SEQAN_PROSUB(SEQAN_PROMEMORY, count * sizeof(TValue));
-        }
+    if (data)
+    {
+        VirtualFree(data, 0, MEM_RELEASE);
+        if (count)        // .. to use count if SEQAN_PROFILE is not defined
+            SEQAN_PROSUB(SEQAN_PROMEMORY, count * sizeof(TValue));
     }
+}
 
-#else
+#else  //  #if STDLIB_VS
 
 
-    template <typename TSpec>
-    class File<Async<TSpec> > : public File<Sync<TSpec> >
-    {
+template <typename TSpec>
+class File<Async<TSpec> >:
+    public File<Sync<TSpec> >
+{
 //IOREV _nodoc_ members are not well documented
-    public:
+public:
 
-        typedef File<Sync<TSpec> >  Base;
+    typedef File<Sync<TSpec> >  Base;
 
-        typedef off_t            FilePtr;
-        typedef off_t           SizeType;   // type of file size
-        typedef size_t          SizeType_;  // type of transfer size (for read or write)
-        typedef int                Handle;
+    typedef off_t           FilePtr;
+    typedef off_t           SizeType;       // type of file size
+    typedef size_t          SizeType_;      // type of transfer size (for read or write)
+    typedef int             Handle;
 
-        Handle handleAsync;
-        using Base::handle;
+    Handle handleAsync;
+    using Base::handle;
 
-        File(void * = NULL):     // to be compatible with the FILE*(NULL) constructor
-            handleAsync(-1) {}
+    File(void * = NULL) :        // to be compatible with the FILE*(NULL) constructor
+        handleAsync(-1) {}
 
-        virtual ~File() {}
+    virtual ~File()
+    {
+        // this->close(); will already be called in the base class
+    }
 
-        bool open(char const *fileName, int openMode = DefaultOpenMode<File>::VALUE) {
-            handle = ::open(fileName, Base::_getOFlag(openMode & ~OPEN_ASYNC), S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
-            if (handle == -1)
-            {
-                handleAsync = handle;
-                if (!(openMode & OPEN_QUIET))
-                    std::cerr << "Open failed on file " << fileName << ": \"" << ::strerror(errno) << '"' << std::endl;
-                return false;
-            }
+    bool open(char const * fileName, int openMode = DefaultOpenMode<File>::VALUE)
+    {
+        handle = ::open(fileName, Base::_getOFlag(openMode & ~OPEN_ASYNC), S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
+        if (handle == -1)
+        {
+            handleAsync = handle;
+            if (!(openMode & OPEN_QUIET))
+                std::cerr << "Open failed on file " << fileName << ": \"" << ::strerror(errno) << '"' << std::endl;
+            return false;
+        }
 
-            if (Base::_getOFlag(openMode | OPEN_ASYNC) & O_DIRECT)
+        if (Base::_getOFlag(openMode | OPEN_ASYNC) & O_DIRECT)
+        {
+            handleAsync = ::open(fileName, Base::_getOFlag(openMode | (OPEN_ASYNC & ~OPEN_CREATE)), S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
+            if (handleAsync == -1 || errno == EINVAL)          // fall back to cached access
             {
-                handleAsync = ::open(fileName, Base::_getOFlag(openMode | (OPEN_ASYNC & ~OPEN_CREATE)), S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
-                if (handleAsync == -1 || errno == EINVAL) {    // fall back to cached access
                     #if SEQAN_ENABLE_DEBUG || SEQAN_ENABLE_TESTING
-                        if (!(openMode & OPEN_QUIET))
-                            std::cerr << "Warning: Direct access openening failed. \"" << ::strerror(errno) << '"' << std::endl;
+                if (!(openMode & OPEN_QUIET))
+                    std::cerr << "Warning: Direct access openening failed. \"" << ::strerror(errno) << '"' << std::endl;
                     #endif
-                    handleAsync = handle;
-                }
+                handleAsync = handle;
+            }
                 #if SEQAN_ENABLE_DEBUG || SEQAN_ENABLE_TESTING
-                    else
-                        if (!(openMode & OPEN_QUIET))
-                            std::cerr << "Direct access successfully initiated" << std::endl;
+            else if (!(openMode & OPEN_QUIET))
+                std::cerr << "Direct access successfully initiated" << std::endl;
                 #endif
-            } else
-                handleAsync = handle;
+        }
+        else
+            handleAsync = handle;
 
-            if (sizeof(FilePtr) < 8 && !(openMode & OPEN_QUIET))
-                // To remove this warning, you have to options:
-                // 1. include the following line before including anything in your application
-                //    #define _FILE_OFFSET_BITS 64
-                // 2. include <seqan/platform.h> or <seqan/sequence.h> before any other include
-                std::cerr << "WARNING: FilePtr is not 64bit wide" << std::endl;
+        if (sizeof(FilePtr) < 8 && !(openMode & OPEN_QUIET))
+            // To remove this warning, you have to options:
+            // 1. include the following line before including anything in your application
+            //    #define _FILE_OFFSET_BITS 64
+            // 2. include <seqan/platform.h> or <seqan/sequence.h> before any other include
+            std::cerr << "WARNING: FilePtr is not 64bit wide" << std::endl;
 
 
-            SEQAN_PROADD(SEQAN_PROOPENFILES, 1);
-            return true;
-        }
+        SEQAN_PROADD(SEQAN_PROOPENFILES, 1);
+        return true;
+    }
 
-        bool close() {
-            bool result = true;
-            if (handleAsync != handle && handleAsync != -1)
-                result &= (::close(handleAsync) == 0);
-            result &= (::close(handle) == 0);
-            handleAsync = -1;
-            handle = -1;
-            SEQAN_PROSUB(SEQAN_PROOPENFILES, 1);
-            return result;
-        }
-    };
+    bool close()
+    {
+        bool result = true;
+        if (handleAsync != handle && handleAsync != -1)
+            result &= (::close(handleAsync) == 0);
+        result &= (::close(handle) == 0);
+        handleAsync = -1;
+        handle = -1;
+        SEQAN_PROSUB(SEQAN_PROOPENFILES, 1);
+        return result;
+    }
+
+};
 
 
-    //////////////////////////////////////////////////////////////////////////////
-    // (SeqAn adaption)
-    //////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+// (SeqAn adaption)
+//////////////////////////////////////////////////////////////////////////////
 /*
     template <typename TSpec>
     struct aQueue<File<Async<TSpec> > >
@@ -755,34 +810,36 @@ namespace seqan
     };
 */
 
-    struct AiocbWrapper : public aiocb
-    {
-        AiocbWrapper()
-        {}
+struct AiocbWrapper :
+    public aiocb
+{
+    AiocbWrapper()
+    {}
 
-        AiocbWrapper(AiocbWrapper & other, Move) :
-            aiocb(other)
-        {}
+    AiocbWrapper(AiocbWrapper & other, Move) :
+        aiocb(other)
+    {}
 
-        AiocbWrapper(AiocbWrapper && other) :
-            aiocb(other)
-        {}
+    AiocbWrapper(AiocbWrapper && other) :
+        aiocb(other)
+    {}
 
-    private:
-        AiocbWrapper(AiocbWrapper const &)
-        {}
-    };
+private:
+    AiocbWrapper(AiocbWrapper const &)
+    {}
+};
 
-    template <>
-    struct HasMoveConstructor<AiocbWrapper> : True {};
+template <>
+struct HasMoveConstructor<AiocbWrapper>:
+    True {};
 
 
-    template <typename TSpec>
-    struct AsyncRequest<File<Async<TSpec> > >
-    {
+template <typename TSpec>
+struct AsyncRequest<File<Async<TSpec> > >
+{
 //IOREV _doc_
-        typedef AiocbWrapper Type;
-    };
+    typedef AiocbWrapper Type;
+};
 /*
     template <typename TSpec>
     struct aEvent<File<Async<TSpec> > >
@@ -791,267 +848,283 @@ namespace seqan
     };
 */
 
-    //////////////////////////////////////////////////////////////////////
-    // event based read/write
+//////////////////////////////////////////////////////////////////////
+// event based read/write
 
 //    enum { AsyncIOSignal_ = SIGIO };
 
-    inline void printRequest(AiocbWrapper &request, const char *_hint)
-    {
+inline void printRequest(AiocbWrapper & request, const char * _hint)
+{
 //IOREV _nodoc_ _notinlined_
-        std::cerr << std::hex;
-        if (_hint)
-            std::cerr << _hint << std::endl;
-        std::cerr << "fildes:  " << request.aio_fildes << std::endl;
-        std::cerr << "buffer:  " << (unsigned long)request.aio_buf << std::endl;
-        std::cerr << "offset:  " << request.aio_offset<< std::endl;
-        std::cerr << "nbytes:  " << request.aio_nbytes << std::endl;
-        std::cerr << "event:   " << request.aio_sigevent.sigev_notify << std::endl;
-        std::cerr << "Raddr:   " << &request << std::endl;
-        std::cerr << std::dec;
-    }
+    std::cerr << std::hex;
+    if (_hint)
+        std::cerr << _hint << std::endl;
+    std::cerr << "fildes:  " << request.aio_fildes << std::endl;
+    std::cerr << "buffer:  " << (unsigned long)request.aio_buf << std::endl;
+    std::cerr << "offset:  " << request.aio_offset << std::endl;
+    std::cerr << "nbytes:  " << request.aio_nbytes << std::endl;
+    std::cerr << "event:   " << request.aio_sigevent.sigev_notify << std::endl;
+    std::cerr << "Raddr:   " << &request << std::endl;
+    std::cerr << std::dec;
+}
 
-    inline void printRequest(AiocbWrapper &request)
-    {
-        printRequest(request, NULL);
-    }
+inline void printRequest(AiocbWrapper & request)
+{
+    printRequest(request, NULL);
+}
 
-    template < typename TSpec, typename TValue, typename TSize, typename TPos >
-    bool asyncReadAt(File<Async<TSpec> > & me, TValue *memPtr, TSize const count, TPos const fileOfs,
-        AiocbWrapper &request)
-    {
+template <typename TSpec, typename TValue, typename TSize, typename TPos>
+bool asyncReadAt(File<Async<TSpec> > & me, TValue * memPtr, TSize const count, TPos const fileOfs,
+                 AiocbWrapper & request)
+{
 //IOREV _doc_ _notinlined_
-        SEQAN_PROTIMESTART(tw);
-        memset(&request, 0, sizeof(aiocb));
-        request.aio_fildes = me.handleAsync;
-        request.aio_buf = memPtr;
-        request.aio_offset = fileOfs;
-        request.aio_offset *= sizeof(TValue);
-        request.aio_nbytes = count * sizeof(TValue);
-        request.aio_sigevent.sigev_notify = SIGEV_NONE;
+    SEQAN_PROTIMESTART(tw);
+    memset(&request, 0, sizeof(aiocb));
+    request.aio_fildes = me.handleAsync;
+    request.aio_buf = memPtr;
+    request.aio_offset = fileOfs;
+    request.aio_offset *= sizeof(TValue);
+    request.aio_nbytes = count * sizeof(TValue);
+    request.aio_sigevent.sigev_notify = SIGEV_NONE;
 /*      request.aio_sigevent.sigev_notify = SIGEV_SIGNAL;
         request.aio_sigevent.sigev_signo = AsyncIOSignal_;
         request.aio_sigevent.sigev_value.sival_ptr = &request;
         #ifdef SEQAN_VVERBOSE
             printRequest(request, "aio_read():");
         #endif
-*/      if (request.aio_nbytes == 0) return true;
-        SEQAN_PROADD(SEQAN_PROIO, (request.aio_nbytes + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
-        int result = aio_read(&request);
-        SEQAN_PROADD(SEQAN_PROIWAIT, SEQAN_PROTIMEDIFF(tw));
-        if (result != 0)
+*/  if (request.aio_nbytes == 0)
+        return true;
+
+    SEQAN_PROADD(SEQAN_PROIO, (request.aio_nbytes + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
+    int result = aio_read(&request);
+    SEQAN_PROADD(SEQAN_PROIWAIT, SEQAN_PROTIMEDIFF(tw));
+    if (result != 0)
+    {
+        request.aio_nbytes = 0;
+        if (errno == EAGAIN)        // read synchronoulsy instead
         {
-            request.aio_nbytes = 0;
-            if (errno == EAGAIN) {  // read synchronoulsy instead
 #if SEQAN_ENABLE_DEBUG || SEQAN_ENABLE_TESTING
-                std::cerr << "Warning: Falling back to sync. read. :( " << std::endl;
+            std::cerr << "Warning: Falling back to sync. read. :( " << std::endl;
 #endif
-                bool success = readAt(me, memPtr, count, fileOfs);
-                if (!success)
-                    SEQAN_FAIL(
-                        "readAt(%d, %d, %d, %d) failed: \"%s\"",
-                        me.handle, (size_t)memPtr, count, fileOfs, strerror(errno));
-                return success;
-            }
+            bool success = readAt(me, memPtr, count, fileOfs);
+            if (!success)
+                SEQAN_FAIL(
+                    "readAt(%d, %d, %d, %d) failed: \"%s\"",
+                    me.handle, (size_t)memPtr, count, fileOfs, strerror(errno));
+            return success;
+        }
 #if SEQAN_ENABLE_DEBUG
-            else
-                std::cerr << "aio_read failed (asyncReadAt). \"" << ::strerror(errno) << '"' << std::endl;
+        else
+            std::cerr << "aio_read failed (asyncReadAt). \"" << ::strerror(errno) << '"' << std::endl;
 #endif
-        }
-        return result == 0;
     }
+    return result == 0;
+}
 
-    template < typename TSpec, typename TValue, typename TSize, typename TPos >
-    bool asyncWriteAt(File<Async<TSpec> > & me, const TValue *memPtr, TSize const count, TPos const fileOfs,
-        AiocbWrapper &request)
-    {
+template <typename TSpec, typename TValue, typename TSize, typename TPos>
+bool asyncWriteAt(File<Async<TSpec> > & me, const TValue * memPtr, TSize const count, TPos const fileOfs,
+                  AiocbWrapper & request)
+{
 //IOREV _doc_ _notinlined_
-        SEQAN_PROTIMESTART(tw);
-        memset(&request, 0, sizeof(aiocb));
-        request.aio_fildes = me.handleAsync;
-        request.aio_buf = const_cast<TValue*>(memPtr);
-        request.aio_offset = fileOfs;
-        request.aio_offset *= sizeof(TValue);
-        request.aio_nbytes = count * sizeof(TValue);
-        request.aio_sigevent.sigev_notify = SIGEV_NONE;
+    SEQAN_PROTIMESTART(tw);
+    memset(&request, 0, sizeof(aiocb));
+    request.aio_fildes = me.handleAsync;
+    request.aio_buf = const_cast<TValue *>(memPtr);
+    request.aio_offset = fileOfs;
+    request.aio_offset *= sizeof(TValue);
+    request.aio_nbytes = count * sizeof(TValue);
+    request.aio_sigevent.sigev_notify = SIGEV_NONE;
 /*      request.aio_sigevent.sigev_notify = SIGEV_SIGNAL;
         request.aio_sigevent.sigev_signo = AsyncIOSignal_;
         request.aio_sigevent.sigev_value.sival_ptr = &request;
         #ifdef SEQAN_VVERBOSE
             printRequest(request, "aio_write():");
         #endif
-*/      if (request.aio_nbytes == 0) return true;
-        SEQAN_PROADD(SEQAN_PROIO, (request.aio_nbytes + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
-        int result = aio_write(&request);
-        SEQAN_PROADD(SEQAN_PROIWAIT, SEQAN_PROTIMEDIFF(tw));
-        if (result != 0)
+*/  if (request.aio_nbytes == 0)
+        return true;
+
+    SEQAN_PROADD(SEQAN_PROIO, (request.aio_nbytes + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
+    int result = aio_write(&request);
+    SEQAN_PROADD(SEQAN_PROIWAIT, SEQAN_PROTIMEDIFF(tw));
+    if (result != 0)
+    {
+        request.aio_nbytes = 0;
+        int errorNo = errno;
+        if (errorNo == EAGAIN)      // write synchronoulsy instead
         {
-            request.aio_nbytes = 0;
-            int errorNo = errno;
-            if (errorNo == EAGAIN)  // write synchronoulsy instead
-            {
 #if SEQAN_ENABLE_DEBUG || SEQAN_ENABLE_TESTING
-                std::cerr << "Warning: Falling back to sync. write. :( " << std::endl;
+            std::cerr << "Warning: Falling back to sync. write. :( " << std::endl;
 #endif
-                bool success = writeAt(me, memPtr, count, fileOfs);
-                if (!success)
-                    SEQAN_FAIL(
-                        "writeAt(%d, %d, %d, %d) failed: \"%s\"",
-                        me.handle, (size_t)memPtr, count, fileOfs, strerror(errno));
-                return success;
-            }
+            bool success = writeAt(me, memPtr, count, fileOfs);
+            if (!success)
+                SEQAN_FAIL(
+                    "writeAt(%d, %d, %d, %d) failed: \"%s\"",
+                    me.handle, (size_t)memPtr, count, fileOfs, strerror(errno));
+            return success;
+        }
 #if SEQAN_ENABLE_DEBUG
-            else
-            {
-                std::cerr << "aio_write failed (asyncWriteAt): \"" << ::strerror(errno) << '"' << std::endl;
-            }
-#endif
+        else
+        {
+            std::cerr << "aio_write failed (asyncWriteAt): \"" << ::strerror(errno) << '"' << std::endl;
         }
-        return result == 0;
+#endif
     }
+    return result == 0;
+}
 
-    template <typename TSpec>
-    inline bool flush(File<Async<TSpec> > & me) {
+template <typename TSpec>
+inline bool flush(File<Async<TSpec> > & me)
+{
 //IOREV _doc_
         #if _POSIX_SYNCHRONIZED_IO > 0
-            return me.handle == me.handleAsync || fdatasync(me.handle) == 0;
+    return me.handle == me.handleAsync || fdatasync(me.handle) == 0;
+
         #else
-            return me.handle == me.handleAsync || fsync(me.handle) == 0;
+    return me.handle == me.handleAsync || fsync(me.handle) == 0;
+
         #endif
-    }
+}
 
-    //////////////////////////////////////////////////////////////////////
-    // queue specific functions
+//////////////////////////////////////////////////////////////////////
+// queue specific functions
 
-    inline bool waitFor(AiocbWrapper &request)
-    {
+inline bool waitFor(AiocbWrapper & request)
+{
 //IOREV _doc_
 /*        #ifdef SEQAN_VVERBOSE
             printRequest(request, "aio_suspend():");
         #endif
 */
-        if (request.aio_nbytes == 0) return true;
-        aiocb * cblist = &request;
-        SEQAN_PROTIMESTART(tw);
-        int result = aio_suspend(&cblist, 1, NULL);
-        ssize_t nbytes = aio_return(&request);
-        SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
+    if (request.aio_nbytes == 0)
+        return true;
+
+    aiocb * cblist = &request;
+    SEQAN_PROTIMESTART(tw);
+    int result = aio_suspend(&cblist, 1, NULL);
+    ssize_t nbytes = aio_return(&request);
+    SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
 
 //#if SEQAN_ENABLE_DEBUG
-        if (result != 0 || nbytes != (ssize_t)request.aio_nbytes)
+    if (result != 0 || nbytes != (ssize_t)request.aio_nbytes)
+    {
+        int errorNo = aio_error(&request);
+        if (errorNo != EINPROGRESS)
         {
-            int errorNo = aio_error(&request);
-            if (errorNo != EINPROGRESS)
-            {
-                if (errorNo != ECANCELED)
-                    errorNo = errno;
-                std::cerr << "Asynchronous I/O operation failed (waitFor): \"" << ::strerror(errorNo) << '"' << std::endl;
-                printRequest(request);
-            }
+            if (errorNo != ECANCELED)
+                errorNo = errno;
+            std::cerr << "Asynchronous I/O operation failed (waitFor): \"" << ::strerror(errorNo) << '"' << std::endl;
+            printRequest(request);
         }
+    }
 //#endif
 
-        return (result == 0) && (nbytes == (ssize_t)request.aio_nbytes);
-    }
+    return (result == 0) && (nbytes == (ssize_t)request.aio_nbytes);
+}
 
-    inline bool waitFor(AiocbWrapper &request, long timeoutMilliSec, bool &inProgress)
-    {
+inline bool waitFor(AiocbWrapper & request, long timeoutMilliSec, bool & inProgress)
+{
 //IOREV _doc_
 /*        #ifdef SEQAN_VVERBOSE
             printRequest(request, "aio_suspend_timeout():");
         #endif
 */
-        if (request.aio_nbytes == 0)
-        {
-            inProgress = false;
-            return true;
-        }
+    if (request.aio_nbytes == 0)
+    {
+        inProgress = false;
+        return true;
+    }
 
-        int result;
-        if (timeoutMilliSec != 0)
-        {
-            aiocb * cblist = &request;
-            timespec ts;
-            ts.tv_sec = timeoutMilliSec / 1000;
-            ts.tv_nsec = (timeoutMilliSec % 1000) * 1000;
-            SEQAN_PROTIMESTART(tw);
-            result = aio_suspend(&cblist, 1, &ts);
-            (void)result;  // never used
-            SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
-        }
+    int result;
+    if (timeoutMilliSec != 0)
+    {
+        aiocb * cblist = &request;
+        timespec ts;
+        ts.tv_sec = timeoutMilliSec / 1000;
+        ts.tv_nsec = (timeoutMilliSec % 1000) * 1000;
+        SEQAN_PROTIMESTART(tw);
+        result = aio_suspend(&cblist, 1, &ts);
+        (void)result;      // never used
+        SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
+    }
 
-        result = aio_error(&request);
-        inProgress = (result == EINPROGRESS);
-        ssize_t nbytes;
+    result = aio_error(&request);
+    inProgress = (result == EINPROGRESS);
+    ssize_t nbytes;
 
-        if (inProgress)
-            result = 0;
-        else
-        {
-            nbytes = aio_return(&request);
-            result = (nbytes != (ssize_t)request.aio_nbytes);
-        }
+    if (inProgress)
+        result = 0;
+    else
+    {
+        nbytes = aio_return(&request);
+        result = (nbytes != (ssize_t)request.aio_nbytes);
+    }
 
         #if SEQAN_ENABLE_DEBUG
-            if (result != 0)
-            {
-                int errorNo = aio_error(&request);
-                if (errorNo != EINPROGRESS)
-                {
-                    if (errorNo != ECANCELED)
-                        errorNo = errno;
-                    std::cerr << "Asynchronous I/O operation failed (waitFor with timeOut=" << timeoutMilliSec << "ms): \"" << ::strerror(errorNo) << '"' << std::endl;
-                    printRequest(request);
-                }
-            }
-        #endif
-        return result == 0;
+    if (result != 0)
+    {
+        int errorNo = aio_error(&request);
+        if (errorNo != EINPROGRESS)
+        {
+            if (errorNo != ECANCELED)
+                errorNo = errno;
+            std::cerr << "Asynchronous I/O operation failed (waitFor with timeOut=" << timeoutMilliSec << "ms): \"" << ::strerror(errorNo) << '"' << std::endl;
+            printRequest(request);
+        }
     }
+        #endif
+    return result == 0;
+}
 
-    template < typename TSize >
-    inline TSize waitForAny(AiocbWrapper const * const contexts[], TSize count) {
+template <typename TSize>
+inline TSize waitForAny(AiocbWrapper const * const contexts[], TSize count)
+{
 //IOREV _nodoc_
-        SEQAN_PROTIMESTART(tw);
-        bool result = aio_suspend(contexts, count, NULL);
-        SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
-        return result == 0;
-    }
+    SEQAN_PROTIMESTART(tw);
+    bool result = aio_suspend(contexts, count, NULL);
+    SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
+    return result == 0;
+}
 
-    template < typename TSize >
-    inline TSize waitForAny(AiocbWrapper const * const contexts[], TSize count, long timeoutMilliSec) {
+template <typename TSize>
+inline TSize waitForAny(AiocbWrapper const * const contexts[], TSize count, long timeoutMilliSec)
+{
 //IOREV _nodoc_
-        timespec ts;
-        ts.tv_sec = timeoutMilliSec / 1000;
-        ts.tv_nsec = (timeoutMilliSec % 1000) * 1000;
-        SEQAN_PROTIMESTART(tw);
-        bool result = aio_suspend(contexts, count, &ts);
-        SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
-        return result == 0;
-    }
+    timespec ts;
+    ts.tv_sec = timeoutMilliSec / 1000;
+    ts.tv_nsec = (timeoutMilliSec % 1000) * 1000;
+    SEQAN_PROTIMESTART(tw);
+    bool result = aio_suspend(contexts, count, &ts);
+    SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
+    return result == 0;
+}
 
-    template <typename TSpec>
-    inline bool cancel(File<Async<TSpec> > & me, AiocbWrapper &request) {
+template <typename TSpec>
+inline bool cancel(File<Async<TSpec> > & me, AiocbWrapper & request)
+{
 //IOREV _doc_
 /*        #ifdef SEQAN_VVERBOSE
             printRequest(request, "aio_cancel():");
         #endif
-*/      return aio_cancel(me.handleAsync, &request) == 0;
-    }
+*/  return aio_cancel(me.handleAsync, &request) == 0;
+}
 
-    inline int error(AiocbWrapper const & request) {
+inline int error(AiocbWrapper const & request)
+{
 //IOREV _nodoc_
-        return aio_error(&request);
-    }
+    return aio_error(&request);
+}
 
-    inline int _returnValue(AiocbWrapper & request) {
+inline int _returnValue(AiocbWrapper & request)
+{
 //IOREV _nodoc_
-        return aio_return(&request);
-    }
+    return aio_return(&request);
+}
 
-    template <typename TSpec>
-    inline void release(File<Async<TSpec> > & /*me*/, AiocbWrapper const & /*request*/) {
+template <typename TSpec>
+inline void release(File<Async<TSpec> > & /*me*/, AiocbWrapper const & /*request*/)
+{
 //IOREV _nodoc_
-    }
+}
 
 /*
     typedef void (*sighandler_t)(int);
@@ -1076,112 +1149,111 @@ namespace seqan
     }
 */
 
-    //////////////////////////////////////////////////////////////////////////////
-    // page aligned allocate for direct file io
+//////////////////////////////////////////////////////////////////////////////
+// page aligned allocate for direct file io
 
-    struct TagAllocateAligned_;    //< allocate page aligned memory for direct i/o access
-    typedef Tag<TagAllocateAligned_> const TagAllocateAligned;
+struct TagAllocateAligned_;        //< allocate page aligned memory for direct i/o access
+typedef Tag<TagAllocateAligned_> const TagAllocateAligned;
 
-    template <typename T, typename TValue, typename TSize>
-    inline void
-    allocate(T const & /*me*/,
-             TValue * & data,
-             TSize count,
-             TagAllocateAligned const)
-    {
+template <typename T, typename TValue, typename TSize>
+inline void
+allocate(T const & /*me*/,
+         TValue * & data,
+         TSize count,
+         TagAllocateAligned const)
+{
 //IOREV _doc_
-        data = (TValue *) ::valloc(count * sizeof(TValue));
+    data = (TValue *)::valloc(count * sizeof(TValue));
 #ifdef SEQAN_PROFILE
-        if (data)
-            SEQAN_PROADD(SEQAN_PROMEMORY, count * sizeof(TValue));
-        else
-            std::cerr << "AlignAllocator: Could not allocate memory of size " << std::hex <<
-                count * sizeof(TValue) << " with page alignment. (ErrNo=" << std::dec <<
-                errno << ")" << std::endl;
+    if (data)
+        SEQAN_PROADD(SEQAN_PROMEMORY, count * sizeof(TValue));
+    else
+        std::cerr << "AlignAllocator: Could not allocate memory of size " << std::hex <<
+            count * sizeof(TValue) << " with page alignment. (ErrNo=" << std::dec <<
+            errno << ")" << std::endl;
 #endif
-    }
+}
 
-    //////////////////////////////////////////////////////////////////////////////
-    // page aligned deallocate for direct file io
+//////////////////////////////////////////////////////////////////////////////
+// page aligned deallocate for direct file io
 
-    template <typename T, typename TValue, typename TSize>
-    inline void
-    deallocate( T const & /*me*/,
-                TValue * data,
-                TSize
+template <typename T, typename TValue, typename TSize>
+inline void
+deallocate(T const & /*me*/,
+           TValue * data,
+           TSize
 #ifdef SEQAN_PROFILE
-                    count
+           count
 #endif
-                    ,
-                TagAllocateAligned const)
-    {
+          ,
+           TagAllocateAligned const)
+{
 //IOREV _doc_
 #ifdef SEQAN_PROFILE
-        if (data && count)    // .. to use count if SEQAN_PROFILE is not defined
-            SEQAN_PROSUB(SEQAN_PROMEMORY, count * sizeof(TValue));
+    if (data && count)        // .. to use count if SEQAN_PROFILE is not defined
+        SEQAN_PROSUB(SEQAN_PROMEMORY, count * sizeof(TValue));
 #endif
-        ::free(data);
-    }
+    ::free(data);
+}
 
-    template < typename TSpec, typename TSize >
-    inline void resize(File<Async<TSpec> > &me, TSize new_length) {
+template <typename TSpec, typename TSize>
+inline void resize(File<Async<TSpec> > & me, TSize new_length)
+{
 //IOREV _doc_
-        if (!me.resize(new_length))
-            SEQAN_FAIL(
-                "resize(%d, %d) failed: \"%s\"",
-                me.handle, new_length, strerror(errno));
-    }
-
+    if (!me.resize(new_length))
+        SEQAN_FAIL(
+            "resize(%d, %d) failed: \"%s\"",
+            me.handle, new_length, strerror(errno));
+}
 
-#endif
+#endif  // #ifdef STDLIB_VS
 
-    //////////////////////////////////////////////////////////////////////////////
-    // global functions
+//////////////////////////////////////////////////////////////////////////////
+// global functions
 
-    template <typename TSpec>
-    struct Size< File<Async<TSpec> > >
-    {
+template <typename TSpec>
+struct Size<File<Async<TSpec> > >
+{
 //IOREV
-        typedef typename File<Async<TSpec> >::SizeType Type;
-    };
+    typedef typename File<Async<TSpec> >::SizeType Type;
+};
 
-    template <typename TSpec>
-    struct Position< File<Async<TSpec> > >
-    {
+template <typename TSpec>
+struct Position<File<Async<TSpec> > >
+{
 //IOREV
-        typedef typename File<Async<TSpec> >::FilePtr Type;
-    };
+    typedef typename File<Async<TSpec> >::FilePtr Type;
+};
 
-    template <typename TSpec>
-    struct Difference< File<Async<TSpec> > >
-    {
+template <typename TSpec>
+struct Difference<File<Async<TSpec> > >
+{
 //IOREV
-        typedef typename File<Async<TSpec> >::FilePtr Type;
-    };
+    typedef typename File<Async<TSpec> >::FilePtr Type;
+};
 
 
 
-    template < typename TSpec, typename TValue, typename TSize>
-    inline void
-    allocate( File<Async<TSpec> > const & me,
-              TValue * & data,
-              TSize count)
-    {
+template <typename TSpec, typename TValue, typename TSize>
+inline void
+allocate(File<Async<TSpec> > const & me,
+         TValue * & data,
+         TSize count)
+{
 //IOREV _doc_
-        allocate(me, data, count, TagAllocateAligned());
-    }
+    allocate(me, data, count, TagAllocateAligned());
+}
 
-    template <typename TSpec, typename TValue, typename TSize>
-    inline void
-    deallocate( File<Async<TSpec> > const & me,
-                TValue * data,
-                TSize count)
-    {
+template <typename TSpec, typename TValue, typename TSize>
+inline void
+deallocate(File<Async<TSpec> > const & me,
+           TValue * data,
+           TSize count)
+{
 //IOREV _doc_
-        deallocate(me, data, count, TagAllocateAligned());
-    }
-
+    deallocate(me, data, count, TagAllocateAligned());
+}
 
 }
 
-#endif
+#endif  // SEQAN_HEADER_FILE_ASYNC_H
diff --git a/include/seqan/system/file_directory.h b/include/seqan/system/file_directory.h
index 0cce00a..c3bf295 100644
--- a/include/seqan/system/file_directory.h
+++ b/include/seqan/system/file_directory.h
@@ -37,7 +37,7 @@
 #ifndef SEQAN_HEADER_FILE_DIRECTORY_H
 #define SEQAN_HEADER_FILE_DIRECTORY_H
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 # include <io.h>
 #else
 # include <dirent.h>
@@ -63,7 +63,7 @@
 namespace seqan
 {
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 
     class Directory
     {
diff --git a/include/seqan/system/file_forwards.h b/include/seqan/system/file_forwards.h
index 592d1ff..b9962b6 100644
--- a/include/seqan/system/file_forwards.h
+++ b/include/seqan/system/file_forwards.h
@@ -67,7 +67,7 @@ typedef Tag<TagAllocateAligned_> const TagAllocateAligned;           // "include
 //////////////////////////////////////////////////////////////////////////////
 // FUNCTIONS
 //////////////////////////////////////////////////////////////////////////////
-
+#if SEQAN_ASYNC_IO
 //____________________________________________________________________________
 // allocate
 
@@ -101,16 +101,6 @@ template <typename TSpec, typename TValue, typename TSize> inline void deallocat
 inline int error(AiocbWrapper const &request);           // "include/seqan/file/file_async.h"(246)
 
 //____________________________________________________________________________
-// fileExists
-
-inline bool fileExists(const char *fileName);           // "include/seqan/file/file_sync.h"(189)
-
-//____________________________________________________________________________
-// fileUnlink
-
-inline bool fileUnlink(const char *fileName);           // "include/seqan/file/file_sync.h"(194)
-
-//____________________________________________________________________________
 // flush
 
 template <typename TSpec> inline bool flush(File<Async<TSpec> > & me);           // "include/seqan/file/file_async.h"(182)
@@ -122,11 +112,6 @@ inline void printRequest(AiocbWrapper &request, const char *_hint);           //
 inline void printRequest(AiocbWrapper &request);           // "include/seqan/file/file_async.h"(125)
 
 //____________________________________________________________________________
-// read
-
-template <typename TSpec, typename TValue, typename TSize > inline bool read(File<Sync<TSpec> > & me, TValue *memPtr, TSize const count);           // "include/seqan/file/file_sync.h"(226)
-
-//____________________________________________________________________________
 // release
 
 template <typename TSpec> inline void release(File<Async<TSpec> > & me, AiocbWrapper const &request);           // "include/seqan/file/file_async.h"(255)
@@ -147,12 +132,28 @@ inline bool waitFor(AiocbWrapper &request, long timeoutMilliSec, bool &inProgres
 
 template <typename TSize > inline TSize waitForAny(AiocbWrapper const * const contexts[], TSize count);           // "include/seqan/file/file_async.h"(223)
 template <typename TSize > inline TSize waitForAny(AiocbWrapper const * const contexts[], TSize count, long timeoutMilliSec);           // "include/seqan/file/file_async.h"(231)
+#endif
+
+//____________________________________________________________________________
+// read
+
+template <typename TSpec, typename TValue, typename TSize > inline bool read(File<Sync<TSpec> > & me, TValue *memPtr, TSize const count);           // "include/seqan/file/file_sync.h"(226)
 
 //____________________________________________________________________________
 // write
 
 template <typename TSpec, typename TValue, typename TSize > inline bool write(File<Sync<TSpec> > & me, TValue const *memPtr, TSize const count);           // "include/seqan/file/file_sync.h"(231)
 
+//____________________________________________________________________________
+// fileExists
+
+inline bool fileExists(const char *fileName);           // "include/seqan/file/file_sync.h"(189)
+
+//____________________________________________________________________________
+// fileUnlink
+
+inline bool fileUnlink(const char *fileName);           // "include/seqan/file/file_sync.h"(194)
+
 } //namespace seqan
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/include/seqan/system/file_sync.h b/include/seqan/system/file_sync.h
index 7c8ba1c..39705af 100644
--- a/include/seqan/system/file_sync.h
+++ b/include/seqan/system/file_sync.h
@@ -41,7 +41,7 @@
 #include <sys/stat.h>       //
 #include <cstdio>           // tmpnam(..)
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 # include <io.h>            // read(..) ..
 #else
 # include <cstdlib>
@@ -73,395 +73,422 @@ namespace seqan
 {
 
 
-    template <typename TSpec /* = void */>
-    struct Sync;
+template <typename TSpec /* = void */>
+struct Sync {};
 
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 
-    //////////////////////////////////////////////////////////////////////////////
-    // Windows rtl file access
-    template <typename TSpec>
-    class File<Sync<TSpec> >
-    {
+//////////////////////////////////////////////////////////////////////////////
+// Windows rtl file access
+template <typename TSpec>
+class File<Sync<TSpec> >
+{
 //IOREV _windows_ _nodoc_
-    public:
+public:
 
-        typedef int64_t            FilePtr;
-        typedef int64_t         SizeType;   // type of file size
-        typedef unsigned int    SizeType_;  // type of transfer size (for read or write)
-        typedef int                Handle;
+    typedef int64_t         FilePtr;
+    typedef int64_t         SizeType;       // type of file size
+    typedef unsigned int    SizeType_;      // type of transfer size (for read or write)
+    typedef int             Handle;
 
-        Handle handle;
+    Handle handle;
 
-        File(void * /*dummy*/ = NULL): // to be compatible with the FILE*(NULL) constructor
-            handle(-1) {}
+    File(void * /*dummy*/ = NULL) :    // to be compatible with the FILE*(NULL) constructor
+        handle(-1) {}
+
+    virtual ~File()
+    {
+        close();
+    }
 
     //File(int posixHandle) : handle(posixHandle) {}
 
-        inline int _getOFlag(int openMode) const
+    inline int _getOFlag(int openMode) const
+    {
+        int result;
+        bool canWrite = false;
+
+        switch (openMode & OPEN_MASK)
         {
-            int result;
-            bool canWrite = false;
-
-            switch (openMode & OPEN_MASK) {
-                case OPEN_RDONLY:
-                    result = _O_RDONLY;
-                    break;
-                case OPEN_WRONLY:
-                    canWrite = true;
-                    result = _O_WRONLY;
-                    break;
-                case OPEN_RDWR:
-                default:
-                    canWrite = true;
-                    result = _O_RDWR;
-                    break;
-            }
-
-            if (openMode & OPEN_CREATE)     result |= _O_CREAT;
-            if (canWrite && !(openMode & OPEN_APPEND))    result |= _O_TRUNC;
-            if (openMode & OPEN_TEMPORARY)  result |= _O_TEMPORARY;
-            return result | _O_BINARY;
+        case OPEN_RDONLY:
+            result = _O_RDONLY;
+            break;
+
+        case OPEN_WRONLY:
+            canWrite = true;
+            result = _O_WRONLY;
+            break;
+
+        case OPEN_RDWR:
+        default:
+            canWrite = true;
+            result = _O_RDWR;
+            break;
         }
 
-        bool open(char const *fileName, int openMode = DefaultOpenMode<File>::VALUE)
+        if (openMode & OPEN_CREATE)     result |= _O_CREAT;
+        if (canWrite && !(openMode & OPEN_APPEND))    result |= _O_TRUNC;
+        if (openMode & OPEN_TEMPORARY)  result |= _O_TEMPORARY;
+        return result | _O_BINARY;
+    }
+
+    bool open(char const * fileName, int openMode = DefaultOpenMode<File>::VALUE)
+    {
+        handle = ::_open(fileName, _getOFlag(openMode), _S_IREAD | _S_IWRITE);
+        if (handle == -1)
         {
-            handle = ::_open(fileName, _getOFlag(openMode), _S_IREAD | _S_IWRITE);
-            if (handle == -1) {
-                if (!(openMode & OPEN_QUIET))
-                    std::cerr << "Open failed on file " << fileName << ". (" << ::strerror(errno) << ")" << std::endl;
-                return false;
-            }
-            SEQAN_PROADD(SEQAN_PROOPENFILES, 1);
-            return true;
+            if (!(openMode & OPEN_QUIET))
+                std::cerr << "Open failed on file " << fileName << ". (" << ::strerror(errno) << ")" << std::endl;
+            return false;
         }
+        SEQAN_PROADD(SEQAN_PROOPENFILES, 1);
+        return true;
+    }
 
-        bool openTemp(int openMode = DefaultOpenTempMode<File>::VALUE)
-        {
+    bool openTemp(int openMode = DefaultOpenTempMode<File>::VALUE)
+    {
 #ifdef SEQAN_DEFAULT_TMPDIR
-            char *fileName = _tempnam(SEQAN_DEFAULT_TMPDIR, "SQN");
+        char * fileName = _tempnam(SEQAN_DEFAULT_TMPDIR, "SQN");
 #else  // #ifdef SEQAN_DEFAULT_TMPDIR
-            char *fileName = _tempnam(NULL, "SQN");
+        char * fileName = _tempnam(NULL, "SQN");
 #endif  // #ifdef SEQAN_DEFAULT_TMPDIR
-            if (!fileName) {
-                if (!(openMode & OPEN_QUIET))
-                    std::cerr << "Cannot create a unique temporary filename" << std::endl;
-                return false;
-            }
-            bool result = open(fileName, openMode | OPEN_TEMPORARY);
-            ::free(fileName);
-            return result;
-        }
-
-        inline bool close()
+        if (!fileName)
         {
-            if (_close(handle) != 0)
-                return false;
-            handle = -1;
-            SEQAN_PROSUB(SEQAN_PROOPENFILES, 1);
-            return true;
+            if (!(openMode & OPEN_QUIET))
+                std::cerr << "Cannot create a unique temporary filename" << std::endl;
+            return false;
         }
+        bool result = open(fileName, openMode | OPEN_TEMPORARY);
+        ::free(fileName);
+        return result;
+    }
 
-        inline int read(void *buffer, SizeType_ count) const
-        {
-            SEQAN_PROADD(SEQAN_PROIO, (count + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
-            SEQAN_PROTIMESTART(tw);
-            int result = ::_read(handle, buffer, count);
-            SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
-            return result;
-        }
+    inline bool close()
+    {
+        if (_close(handle) != 0)
+            return false;
 
-        inline int write(void const *buffer, SizeType_ count) const
-        {
-            SEQAN_PROADD(SEQAN_PROIO, (count + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
-            SEQAN_PROTIMESTART(tw);
-            int result = ::_write(handle, buffer, count);
-            SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
-            return result;
-        }
+        handle = -1;
+        SEQAN_PROSUB(SEQAN_PROOPENFILES, 1);
+        return true;
+    }
 
-        inline FilePtr seek(FilePtr pos, int origin = SEEK_SET) const
-        {
-            return _lseeki64(handle, pos, origin);
-        }
+    inline int read(void * buffer, SizeType_ count) const
+    {
+        SEQAN_PROADD(SEQAN_PROIO, (count + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
+        SEQAN_PROTIMESTART(tw);
+        int result = ::_read(handle, buffer, count);
+        SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
+        return result;
+    }
 
-        inline FilePtr tell() const
-        {
-            return _telli64(handle);
-        }
+    inline int write(void const * buffer, SizeType_ count) const
+    {
+        SEQAN_PROADD(SEQAN_PROIO, (count + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
+        SEQAN_PROTIMESTART(tw);
+        int result = ::_write(handle, buffer, count);
+        SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
+        return result;
+    }
 
-        static int error()
-        {
-            return errno;
-        }
+    inline FilePtr seek(FilePtr pos, int origin = SEEK_SET) const
+    {
+        return _lseeki64(handle, pos, origin);
+    }
 
-        operator bool () const
-        {
-            return handle != -1;
-        }
-    };
+    inline FilePtr tell() const
+    {
+        return _telli64(handle);
+    }
 
-    inline bool fileExists(const char *fileName)
+    static int error()
     {
-//IOREV _windows_ _nodoc_
-        struct _stat buf;
-        return _stat(fileName, &buf) == 0;
+        return errno;
     }
 
-    inline bool fileUnlink(const char *fileName)
+    operator bool() const
     {
-//IOREV _windows_ _nodoc_
-        return _unlink(fileName) == 0;
+        return handle != -1;
     }
+};
+
+inline bool fileExists(const char * fileName)
+{
+//IOREV _windows_ _nodoc_
+    struct _stat buf;
+    return _stat(fileName, &buf) == 0;
+}
+
+inline bool fileUnlink(const char * fileName)
+{
+//IOREV _windows_ _nodoc_
+    return _unlink(fileName) == 0;
+}
 
 #else
 
-    //////////////////////////////////////////////////////////////////////////////
-    // Unix file access
-    template <typename TSpec>
-    class File<Sync<TSpec> >
-    {
+//////////////////////////////////////////////////////////////////////////////
+// Unix file access
+template <typename TSpec>
+class File<Sync<TSpec> >
+{
 //IOREV __nodoc_
-    public:
+public:
 
-        typedef off_t            FilePtr;
-        typedef off_t           SizeType;   // type of file size
-        typedef size_t          SizeType_;  // type of transfer size (for read or write)
-        typedef int                Handle;
+    typedef off_t           FilePtr;
+    typedef off_t           SizeType;       // type of file size
+    typedef size_t          SizeType_;      // type of transfer size (for read or write)
+    typedef int             Handle;
 
-        Handle handle;
+    Handle handle;
 
-        File(void * /*dummy*/ = NULL): // to be compatible with the FILE*(NULL) constructor
-            handle(-1) {}
+    File(void * /*dummy*/ = NULL) :    // to be compatible with the FILE*(NULL) constructor
+        handle(-1) {}
 
     ///File(int posixHandle) : handle(posixHandle) {}
 
-        virtual ~File() {}
-
-        inline int _getOFlag(int openMode) const {
-            int result = O_LARGEFILE;
-
-            switch (openMode & OPEN_MASK) {
-                case OPEN_RDONLY:
-                    result |= O_RDONLY;
-                    break;
-                case OPEN_WRONLY:
-                    result |= O_WRONLY;
-                    if (!(openMode & OPEN_APPEND))    result |= O_TRUNC;
-                    break;
-                case OPEN_RDWR:
-                    result |= O_RDWR;
-                    if (!(openMode & OPEN_APPEND))    result |= O_TRUNC;
-                    break;
-            }
-
-            if (openMode & OPEN_CREATE)     result |= O_CREAT;
+    virtual ~File()
+    {
+        this->close();
+    }
+
+    inline int _getOFlag(int openMode) const
+    {
+        int result = O_LARGEFILE;
+
+        switch (openMode & OPEN_MASK)
+        {
+        case OPEN_RDONLY:
+            result |= O_RDONLY;
+            break;
+
+        case OPEN_WRONLY:
+            result |= O_WRONLY;
+            if (!(openMode & OPEN_APPEND))    result |= O_TRUNC;
+            break;
+
+        case OPEN_RDWR:
+            result |= O_RDWR;
+            if (!(openMode & OPEN_APPEND))    result |= O_TRUNC;
+            break;
+        }
+
+        if (openMode & OPEN_CREATE)     result |= O_CREAT;
 //            if (openMode & OPEN_TEMPORARY)  result |= O_TEMPORARY;
         #ifdef SEQAN_DIRECTIO
-            if (openMode & OPEN_ASYNC)        result |= O_DIRECT;
+        if (openMode & OPEN_ASYNC)        result |= O_DIRECT;
         #endif
-            return result;
-        }
+        return result;
+    }
 
-        virtual bool open(char const *fileName, int openMode = DefaultOpenMode<File>::VALUE) {
-            handle = ::open(fileName, _getOFlag(openMode), S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
-            if (handle == -1 && errno == EINVAL) {    // fall back to cached access
+    virtual bool open(char const * fileName, int openMode = DefaultOpenMode<File>::VALUE)
+    {
+        handle = ::open(fileName, _getOFlag(openMode), S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
+        if (handle == -1 && errno == EINVAL)          // fall back to cached access
+        {
                 #ifdef SEQAN_DEBUG_OR_TEST_
-                    if (!(openMode & OPEN_QUIET))
-                        std::cerr << "Warning: Direct access openening failed: " << fileName << "." << std::endl;
+            if (!(openMode & OPEN_QUIET))
+                std::cerr << "Warning: Direct access openening failed: " << fileName << "." << std::endl;
                 #endif
-                  handle = ::open(fileName, _getOFlag(openMode & ~OPEN_ASYNC), S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
-            }
-
-            if (handle == -1) {
-                if (!(openMode & OPEN_QUIET))
-                    std::cerr << "Open failed on file " << fileName << ". (" << ::strerror(errno) << ")" << std::endl;
-                return false;
-            }
-
-            if (sizeof(FilePtr) < 8 && !(openMode & OPEN_QUIET))
-                // To remove this warning, you have to options:
-                // 1. include the following line before including anything in your application
-                //    #define _FILE_OFFSET_BITS 64
-                // 2. include <seqan/platform.h> or <seqan/sequence.h> before any other include
-                std::cerr << "WARNING: FilePtr is not 64bit wide" << std::endl;
-
-            SEQAN_PROADD(SEQAN_PROOPENFILES, 1);
-            return true;
+            handle = ::open(fileName, _getOFlag(openMode & ~OPEN_ASYNC), S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
+        }
+
+        if (handle == -1)
+        {
+            if (!(openMode & OPEN_QUIET))
+                std::cerr << "Open failed on file " << fileName << ". (" << ::strerror(errno) << ")" << std::endl;
+            return false;
         }
 
-        bool openTemp(int openMode = DefaultOpenTempMode<File>::VALUE)
+        if (sizeof(FilePtr) < 8 && !(openMode & OPEN_QUIET))
+            // To remove this warning, you have to options:
+            // 1. include the following line before including anything in your application
+            //    #define _FILE_OFFSET_BITS 64
+            // 2. include <seqan/platform.h> or <seqan/sequence.h> before any other include
+            std::cerr << "WARNING: FilePtr is not 64bit wide" << std::endl;
+
+        SEQAN_PROADD(SEQAN_PROOPENFILES, 1);
+        return true;
+    }
+
+    bool openTemp(int openMode = DefaultOpenTempMode<File>::VALUE)
+    {
+        // Construct the pattern for the temporary file.
+        //
+        // First, try to get the temporary directory from the environment
+        // variables TMPDIR, TMP.
+        std::string tmpDir;
+        if ((getuid() == geteuid()) && (getgid() == getegid()))
         {
-            // Construct the pattern for the temporary file.
-            //
-            // First, try to get the temporary directory from the environment
-            // variables TMPDIR, TMP.
-            std::string tmpDir;
-            if ((getuid() == geteuid()) && (getgid() == getegid()))
-            {
-                char * res;
-                if ((res = getenv("TMPDIR")) != NULL)
-                    tmpDir = res;
-                else
-                    if ((res = getenv("TMP")) != NULL)
-                        tmpDir = res;
-            }
-            // If this does not work, try to use the constant
-            // SEQAN_DEFAULT_TMPDIR, fall back to "/tmp", if this does not
-            // work.
+            char * res;
+            if ((res = getenv("TMPDIR")) != NULL)
+                tmpDir = res;
+            else if ((res = getenv("TMP")) != NULL)
+                tmpDir = res;
+        }
+        // If this does not work, try to use the constant
+        // SEQAN_DEFAULT_TMPDIR, fall back to "/tmp", if this does not
+        // work.
 #ifdef SEQAN_DEFAULT_TMPDIR
-            if (empty(tmpDir))
-                tmpDir = SEQAN_DEFAULT_TMPDIR;
+        if (empty(tmpDir))
+            tmpDir = SEQAN_DEFAULT_TMPDIR;
 #else  // #ifdef SEQAN_DEFAULT_TMPDIR
-            if (empty(tmpDir))
-                tmpDir = "/tmp";
+        if (empty(tmpDir))
+            tmpDir = "/tmp";
 #endif  // #ifdef SEQAN_DEFAULT_TMPDIR
 
-            // At this point, we have a temporary directory.  Now, we add the
-            // file name template to get the full path template.
-            tmpDir += "/SQNXXXXXX";
-            // Open temporary file and unlink it immediately afterwards so the
-            // memory is released when the program exits.
-            int oldMode = umask(077);  // Create with restrictive permissions.
-            if ((handle = ::mkstemp((char*)tmpDir.c_str())) == -1)
-            {
-                umask(oldMode);  // Reset umask mode.
-                if (!(openMode & OPEN_QUIET))
-                    std::cerr << "Couldn't create temporary file " << tmpDir << ". (" << ::strerror(errno) << ")" << std::endl;
-                return false;
-            }
-            if (!(close() && open(toCString(tmpDir), openMode)))
-            {
-                umask(oldMode);  // Reset umask mode.
-                return false;
-            }
-            umask(oldMode);  // Reset umask mode.
+        // At this point, we have a temporary directory.  Now, we add the
+        // file name template to get the full path template.
+        tmpDir += "/SQNXXXXXX";
+        // Open temporary file and unlink it immediately afterwards so the
+        // memory is released when the program exits.
+        int oldMode = umask(077);      // Create with restrictive permissions.
+        if ((handle = ::mkstemp((char *)tmpDir.c_str())) == -1)
+        {
+            umask(oldMode);      // Reset umask mode.
+            if (!(openMode & OPEN_QUIET))
+                std::cerr << "Couldn't create temporary file " << tmpDir << ". (" << ::strerror(errno) << ")" << std::endl;
+            return false;
+        }
+        if (!(close() && open(toCString(tmpDir), openMode)))
+        {
+            umask(oldMode);      // Reset umask mode.
+            return false;
+        }
+        umask(oldMode);      // Reset umask mode.
             #ifdef SEQAN_DEBUG
-                if (::unlink(toCString(tmpDir)) == -1 && !(openMode & OPEN_QUIET))
-                    std::cerr << "Couldn't unlink temporary file " << tmpDir << ". (" << ::strerror(errno) << ")" << std::endl;
+        if (::unlink(toCString(tmpDir)) == -1 && !(openMode & OPEN_QUIET))
+            std::cerr << "Couldn't unlink temporary file " << tmpDir << ". (" << ::strerror(errno) << ")" << std::endl;
             #else
-                ::unlink(toCString(tmpDir));
+        ::unlink(toCString(tmpDir));
             #endif
-            return true;
-        }
+        return true;
+    }
 
+    virtual bool close()
+    {
+        if (::close(this->handle) == -1) return false;
 
-        virtual bool close() {
-            if (::close(this->handle) == -1) return false;
-            handle = -1;
-            SEQAN_PROSUB(SEQAN_PROOPENFILES, 1);
-            return true;
-        }
+        handle = -1;
+        SEQAN_PROSUB(SEQAN_PROOPENFILES, 1);
+        return true;
+    }
 
-        inline ssize_t read(void *buffer, SizeType_ count) const {
-            SEQAN_PROADD(SEQAN_PROIO, (count + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
-            SEQAN_PROTIMESTART(tw);
-            ssize_t result = ::read(handle, buffer, count);
-            SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
-            return result;
-        }
+    inline ssize_t read(void * buffer, SizeType_ count) const
+    {
+        SEQAN_PROADD(SEQAN_PROIO, (count + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
+        SEQAN_PROTIMESTART(tw);
+        ssize_t result = ::read(handle, buffer, count);
+        SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
+        return result;
+    }
 
-        inline ssize_t write(void const *buffer, SizeType_ count) const {
-            SEQAN_PROADD(SEQAN_PROIO, (count + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
-            SEQAN_PROTIMESTART(tw);
-            ssize_t result = ::write(handle, buffer, count);
-            SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
-            return result;
-        }
+    inline ssize_t write(void const * buffer, SizeType_ count) const
+    {
+        SEQAN_PROADD(SEQAN_PROIO, (count + SEQAN_PROPAGESIZE - 1) / SEQAN_PROPAGESIZE);
+        SEQAN_PROTIMESTART(tw);
+        ssize_t result = ::write(handle, buffer, count);
+        SEQAN_PROADD(SEQAN_PROCWAIT, SEQAN_PROTIMEDIFF(tw));
+        return result;
+    }
 
-        inline FilePtr seek(FilePtr pos, int origin = SEEK_SET) const {
-            FilePtr result = ::lseek(handle, pos, origin);
+    inline FilePtr seek(FilePtr pos, int origin = SEEK_SET) const
+    {
+        FilePtr result = ::lseek(handle, pos, origin);
 //            #ifdef SEQAN_DEBUG
-                if (result < 0)
-                    std::cerr << "lseek returned " << result << ". (" << ::strerror(errno) << ")" << std::endl;
+        if (result < 0)
+            std::cerr << "lseek returned " << result << ". (" << ::strerror(errno) << ")" << std::endl;
 //            #endif
-            return result;
-        }
+        return result;
+    }
 
-        inline FilePtr tell() const {
-            return seek(0, SEEK_CUR);
-        }
+    inline FilePtr tell() const
+    {
+        return seek(0, SEEK_CUR);
+    }
 
-        inline bool resize(SizeType new_length) const {
-            return ftruncate(handle, new_length) == 0;
-        }
+    inline bool resize(SizeType new_length) const
+    {
+        return ftruncate(handle, new_length) == 0;
+    }
 
-        static int error() {
-            return errno;
-        }
+    static int error()
+    {
+        return errno;
+    }
 
-        operator bool () const {
-            return handle != -1;
-        }
-    };
+    operator bool() const {
+        return handle != -1;
+    }
+};
 
-    inline bool fileExists(const char *fileName)
-    {
+inline bool fileExists(const char * fileName)
+{
 //IOREV _nodoc_
-        struct stat buf;
-        return stat(fileName, &buf) != -1;
-    }
+    struct stat buf;
+    return stat(fileName, &buf) != -1;
+}
 
-    inline bool fileUnlink(const char *fileName)
-    {
+inline bool fileUnlink(const char * fileName)
+{
 //IOREV _noddoc_
-        return unlink(fileName) == 0;
-    }
+    return unlink(fileName) == 0;
+}
 
-    template < typename TSpec, typename TSize >
-    inline void resize(File<Sync<TSpec> > &me, TSize new_length)
-    {
+template <typename TSpec, typename TSize>
+inline void resize(File<Sync<TSpec> > & me, TSize new_length)
+{
 //IOREV _doc_
-        if (!me.resize(new_length))
-            SEQAN_FAIL(
-                "resize(%d, %d) failed: \"%s\"",
-                me.handle, new_length, strerror(errno));
-    }
+    if (!me.resize(new_length))
+        SEQAN_FAIL(
+            "resize(%d, %d) failed: \"%s\"",
+            me.handle, new_length, strerror(errno));
+}
 
 #endif
 
-    //////////////////////////////////////////////////////////////////////////////
-    // global functions
+//////////////////////////////////////////////////////////////////////////////
+// global functions
 
-    template <typename TSpec>
-    struct Size< File<Sync<TSpec> > >
-    {
+template <typename TSpec>
+struct Size<File<Sync<TSpec> > >
+{
 //IOREV
-        typedef typename File<Sync<TSpec> >::SizeType Type;
-    };
+    typedef typename File<Sync<TSpec> >::SizeType Type;
+};
 
-    template <typename TSpec>
-    struct Position< File<Sync<TSpec> > >
-    {
+template <typename TSpec>
+struct Position<File<Sync<TSpec> > >
+{
 //IOREV
-        typedef typename File<Sync<TSpec> >::FilePtr Type;
-    };
+    typedef typename File<Sync<TSpec> >::FilePtr Type;
+};
 
-    template <typename TSpec>
-    struct Difference< File<Sync<TSpec> > >
-    {
+template <typename TSpec>
+struct Difference<File<Sync<TSpec> > >
+{
 //IOREV
-        typedef typename File<Sync<TSpec> >::FilePtr Type;
-    };
+    typedef typename File<Sync<TSpec> >::FilePtr Type;
+};
 
-    template < typename TSpec, typename TValue, typename TSize >
-    inline bool read(File<Sync<TSpec> > & me, TValue *memPtr, TSize const count)
-    {
-        return (size_t)me.read(memPtr, count * sizeof(TValue)) == (size_t)(count * sizeof(TValue));
-    }
+template <typename TSpec, typename TValue, typename TSize>
+inline bool read(File<Sync<TSpec> > & me, TValue * memPtr, TSize const count)
+{
+    return (size_t)me.read(memPtr, count * sizeof(TValue)) == (size_t)(count * sizeof(TValue));
+}
 
-    template < typename TSpec, typename TValue, typename TSize >
-    inline bool write(File<Sync<TSpec> > & me, TValue *memPtr, TSize const count)
-    {
-        return (size_t)me.write(memPtr, count * sizeof(TValue)) == (size_t)(count * sizeof(TValue));
-    }
+template <typename TSpec, typename TValue, typename TSize>
+inline bool write(File<Sync<TSpec> > & me, TValue * memPtr, TSize const count)
+{
+    return (size_t)me.write(memPtr, count * sizeof(TValue)) == (size_t)(count * sizeof(TValue));
+}
 
-    template < typename TSpec, typename TValue, typename TSize >
-    inline bool write(File<Sync<TSpec> > & me, TValue const *memPtr, TSize const count)
-    {
-        return (size_t)me.write(memPtr, count * sizeof(TValue)) == (size_t)(count * sizeof(TValue));
-    }
+template <typename TSpec, typename TValue, typename TSize>
+inline bool write(File<Sync<TSpec> > & me, TValue const * memPtr, TSize const count)
+{
+    return (size_t)me.write(memPtr, count * sizeof(TValue)) == (size_t)(count * sizeof(TValue));
+}
 
 }
 
diff --git a/include/seqan/system/system_base.h b/include/seqan/system/system_base.h
index 90bd17d..d305942 100644
--- a/include/seqan/system/system_base.h
+++ b/include/seqan/system/system_base.h
@@ -46,14 +46,14 @@ namespace seqan
 
 #else  // #ifdef SEQAN_ENABLE_DEBUG
 
-#if defined(PLATFORM_GCC)
+#if !defined(COMPILER_MSVC)
 // GCC warns below that the "value computed is not used".  However,
 // MSVC does not like casting void values to void. Thus, this
 // distinction.
 #define SEQAN_DO_SYS(_cond) do { (void) _cond; } while (false)
-#else   // #if defined(PLATFORM_GCC)
+#else   // #if !defined(COMPILER_MSVC)
 #define SEQAN_DO_SYS(_cond) do { _cond; } while (false)
-#endif  // #if defined(PLATFORM_GCC)
+#endif  // #if !defined(COMPILER_MSVC)
 
 #define SEQAN_DO_SYS1(_cond) SEQAN_DO_SYS(_cond)
 #define SEQAN_DO_SYS2(_cond, _comment) SEQAN_DO_SYS(_cond)
diff --git a/include/seqan/system/system_condition.h b/include/seqan/system/system_condition.h
deleted file mode 100644
index d737f0f..0000000
--- a/include/seqan/system/system_condition.h
+++ /dev/null
@@ -1,147 +0,0 @@
-// ==========================================================================
-//                 SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2006-2016, Knut Reinert, FU Berlin
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
-//       its contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-// Author: David Weese <david.weese at fu-berlin.de>
-// ==========================================================================
-// Condition class. In conjunction with a critical section (given in the
-// c'tor) this class allows to suspend a thread until another wakes it up via
-// signal().
-// ==========================================================================
-
-#ifndef SEQAN_HEADER_SYSTEM_CONDITION_H_
-#define SEQAN_HEADER_SYSTEM_CONDITION_H_
-
-namespace seqan {
-
-#ifdef PLATFORM_WINDOWS
-
-struct Condition
-{
-    enum { Infinite = INFINITE };
-
-    CONDITION_VARIABLE  data_cond;
-    CriticalSection     *csPtr;
-
-    explicit
-    Condition(CriticalSection &cs) :
-        csPtr(&cs)
-    {
-        InitializeConditionVariable(&data_cond);
-    }
-
-    ~Condition()
-    {
-        WakeAllConditionVariable(&data_cond);
-    }
-};
-
-#else
-
-struct Condition
-{
-    enum { Infinite = LONG_MAX };
-
-    pthread_cond_t      data_cond;
-    CriticalSection     *csPtr;
-
-    explicit
-    Condition(CriticalSection &cs) :
-        csPtr(&cs)
-    {
-        int result = pthread_cond_init(&data_cond, NULL);
-        ignoreUnusedVariableWarning(result);
-        SEQAN_ASSERT_EQ(result, 0);
-    }
-
-    ~Condition()
-    {
-        int result = pthread_cond_destroy(&data_cond);
-        ignoreUnusedVariableWarning(result);
-        SEQAN_ASSERT_EQ(result, 0);
-    }
-};
-
-#endif
-
-inline void
-waitFor(Condition &cond)
-{
-#ifdef PLATFORM_WINDOWS
-    BOOL success = SleepConditionVariableCS(&cond.data_cond, &cond.csPtr->data_cs, INFINITE);
-    ignoreUnusedVariableWarning(success);
-    SEQAN_ASSERT(success);
-#else
-    int result = pthread_cond_wait(&cond.data_cond, &cond.csPtr->data_cs);
-    ignoreUnusedVariableWarning(result);
-    SEQAN_ASSERT_EQ(result, 0);
-#endif
-}
-
-inline void
-waitFor(Condition &cond, long timeoutMilliSec, bool & inProgress)
-{
-#ifdef PLATFORM_WINDOWS
-    inProgress = (SleepConditionVariableCS(&cond.data_cond, &cond.csPtr->data_cs, timeoutMilliSec) == 0);
-    if (inProgress)
-        SEQAN_ASSERT_EQ(GetLastError(), ERROR_TIMEOUT);
-#else
-    if (timeoutMilliSec != Condition::Infinite)
-    {
-        timespec ts;
-        ts.tv_sec = timeoutMilliSec / 1000;
-        ts.tv_nsec = (timeoutMilliSec % 1000) * 1000;
-        int result = pthread_cond_timedwait(&cond.data_cond, &cond.csPtr->data_cs, &ts);
-        inProgress = (result == ETIMEDOUT);
-        SEQAN_ASSERT(result == 0 || inProgress);
-    }
-    else
-    {
-        inProgress = false;
-        waitFor(cond);
-    }
-#endif
-}
-
-inline void
-signal(Condition &cond)
-{
-#ifdef PLATFORM_WINDOWS
-    WakeAllConditionVariable(&cond.data_cond);
-#else
-    int result = pthread_cond_broadcast(&cond.data_cond);
-    ignoreUnusedVariableWarning(result);
-    SEQAN_ASSERT_EQ(result, 0);
-#endif
-}
-
-}
-
-#endif  // SEQAN_HEADER_SYSTEM_CONDITION_H_
diff --git a/include/seqan/system/system_event.h b/include/seqan/system/system_event_win.h
similarity index 62%
rename from include/seqan/system/system_event.h
rename to include/seqan/system/system_event_win.h
index f167e4a..a4e24a3 100644
--- a/include/seqan/system/system_event.h
+++ b/include/seqan/system/system_event_win.h
@@ -32,12 +32,14 @@
 // Author: David Weese <david.weese at fu-berlin.de>
 // ==========================================================================
 
-#ifndef SEQAN_HEADER_SYSTEM_EVENT_H
-#define SEQAN_HEADER_SYSTEM_EVENT_H
+#ifndef SEQAN_HEADER_SYSTEM_EVENT_WIN_H
+#define SEQAN_HEADER_SYSTEM_EVENT_WIN_H
 
 namespace seqan {
 
-#ifdef PLATFORM_WINDOWS
+// NOTE(rrahn): This calss implements an synchronization event for asynchronous file I/O on windows platforms.
+// This file is required by file_async.
+#ifdef STDLIB_VS
 
 static SECURITY_ATTRIBUTES EventDefaultAttributes =
 {
@@ -49,7 +51,7 @@ static SECURITY_ATTRIBUTES EventDefaultAttributes =
 struct Event        // this class mustn't exceed the size of HANDLE (needed by waitForAll/Any)
 {
     typedef HANDLE Handle;
-    enum {Infinite = INFINITE};
+    enum : unsigned {Infinite = INFINITE};
     Handle hEvent;
 
     Event() :
@@ -180,126 +182,6 @@ inline int waitForAny(Event eventList[], DWORD count)
     return waitForAny(eventList, count, Event::Infinite);
 }
 
-#else
-
-struct Event :
-    public Mutex
-{
-    typedef pthread_cond_t * Handle;
-    enum {Infinite = LONG_MAX};
-    pthread_cond_t data, * hEvent;
-
-    Event() :
-        hEvent(NULL) {}
-
-    Event(bool initial)
-    {
-        SEQAN_DO_SYS(open(initial));
-    }
-
-    // Move constructors
-    Event(Event & other, Move) :
-        Mutex(other, Move()),
-        hEvent(other.hEvent)
-    {
-        other.hEvent = NULL;
-    }
-
-    Event(Event && other) :
-        hEvent(other.hEvent)
-    {
-        other.hEvent = NULL;
-    }
-
-    ~Event()
-    {
-        if (*this)
-            SEQAN_DO_SYS(close());
-    }
-
-    inline Event & operator=(Event const & origin)
-    {
-        // resource sharing is not yet supported (performance reason)
-        // it needs a reference counting technique
-        if (origin)
-        {
-            data = origin.data;
-            const_cast<Event &>(origin).hEvent = NULL;
-            hEvent = &data;
-        }
-        else
-            hEvent = NULL;
-        return *this;
-    }
-
-    inline bool open(bool initial = false)
-    {
-        if (Mutex::open() && pthread_cond_init(&data, NULL) == 0 && (hEvent = &data))
-        {
-            if (initial)
-                return signal();
-
-            return true;
-        }
-        else
-            return false;
-    }
-
-    inline bool close()
-    {
-        bool success = (pthread_cond_destroy(hEvent) == 0);
-        success &= Mutex::close();
-        hEvent = NULL;
-        return success;
-    }
-
-    inline bool wait()
-    {
-        if (!hEvent) return true;
-
-        return pthread_cond_wait(hEvent, Mutex::hMutex) == 0;
-    }
-
-    inline bool wait(long timeoutMilliSec, bool & inProgress)
-    {
-        if (timeoutMilliSec != Infinite)
-        {
-            timespec ts;
-            ts.tv_sec = timeoutMilliSec / 1000;
-            ts.tv_nsec = (timeoutMilliSec % 1000) * 1000;
-            int result = pthread_cond_timedwait(hEvent, Mutex::hMutex, &ts);
-            inProgress = (result == ETIMEDOUT);
-            return result == 0 || inProgress;
-        }
-        else
-        {
-            inProgress = false;
-            return wait();
-        }
-    }
-
-    inline bool signal()
-    {
-        return pthread_cond_broadcast(hEvent) == 0;
-    }
-
-    inline operator bool() const
-    {
-        return hEvent != NULL;
-    }
-
-private:
-
-    Event(Event const &) :
-        Mutex(),
-        hEvent(NULL)
-    {
-        // we only support move construction (no copy-construction)
-    }
-};
-
-#endif
-
 template <>
 struct HasMoveConstructor<Event> : True {};
 
@@ -348,40 +230,7 @@ inline bool signal(Event & e)
     return e.signal();
 }
 
-/*
-    //////////////////////////////////////////////////////////////////////////////
-    // emulate events in a singlethreaded environment
-
-    struct DummyEvent {
-        typedef    void Handle;
-        DummyEvent(bool initial = false) {}
-        inline bool wait(unsigned timeOut = NULL) { return true; }
-        inline void reset() {}
-        inline void signal() {}
-    };
-
-    //////////////////////////////////////////////////////////////////////////////
-    // global dummy event functions
-
-    template < typename TCount >
-    inline bool waitForAll(DummyEvent eventList[], TCount count) {
-        return true;
-    }
-
-    template < typename TCount, typename TTime >
-    inline bool waitForAll(DummyEvent eventList[], TCount count, TTime timeoutMilliSec) {
-        return true;
-    }
-
-    template < typename TCount >
-    inline TCount waitForAny(DummyEvent eventList[], TCount count) {
-        return 0;
-    }
-    template < typename TCount, typename TTime >
-    inline TCount waitForAny(DummyEvent eventList[], TCount count, TTime timeoutMilliSec) {
-        return 0;
-    }
-*/
+#endif  // #ifdef STDLIB_VS
 }
 
 #endif
diff --git a/include/seqan/system/system_forwards.h b/include/seqan/system/system_forwards.h
index f4f9f38..0d3e126 100644
--- a/include/seqan/system/system_forwards.h
+++ b/include/seqan/system/system_forwards.h
@@ -48,53 +48,20 @@ namespace seqan {
 
 struct Event;           // "include/seqan/system/system_event.h"(18)
 
-//____________________________________________________________________________
-// Mutex
-
-struct Mutex;           // "include/seqan/system/system_mutex.h"(16)
-
-//____________________________________________________________________________
-// Thread
-
-template <typename Worker> struct Thread;           // "include/seqan/system/system_thread.h"(18)
-//IOREV _todo_
-
-
 //////////////////////////////////////////////////////////////////////////////
 // FUNCTIONS
 //////////////////////////////////////////////////////////////////////////////
 
-
 //____________________________________________________________________________
 // close
 
 inline bool close(Event &e);           // "include/seqan/system/system_event.h"(109)
-inline bool close(Mutex &m);           // "include/seqan/system/system_mutex.h"(79)
-template <typename TWorker> inline bool close(Thread<TWorker> &m);           // "include/seqan/system/system_thread.h"(97)
-
-//____________________________________________________________________________
-// kill
-
-template <typename TWorker> inline bool kill(Thread<TWorker> &m);           // "include/seqan/system/system_thread.h"(102)
-
-//____________________________________________________________________________
-// lock
-
-inline bool lock(Mutex &m);           // "include/seqan/system/system_mutex.h"(83)
 
 //____________________________________________________________________________
 // open
 
 inline bool open(Event &e, bool initial);           // "include/seqan/system/system_event.h"(101)
 inline bool open(Event &e);           // "include/seqan/system/system_event.h"(105)
-inline bool open(Mutex &m, bool initial);           // "include/seqan/system/system_mutex.h"(71)
-inline bool open(Mutex &m);           // "include/seqan/system/system_mutex.h"(75)
-template <typename TWorker> inline bool open(Thread<TWorker> &m);           // "include/seqan/system/system_thread.h"(87)
-
-//____________________________________________________________________________
-// run
-
-template <typename TWorker> inline bool run(Thread<TWorker> &m);           // "include/seqan/system/system_thread.h"(92)
 
 //____________________________________________________________________________
 // signal
@@ -102,16 +69,10 @@ template <typename TWorker> inline bool run(Thread<TWorker> &m);           // "i
 inline bool signal(Event &e);           // "include/seqan/system/system_event.h"(131)
 
 //____________________________________________________________________________
-// unlock
-
-inline bool unlock(Mutex &m);           // "include/seqan/system/system_mutex.h"(87)
-
-//____________________________________________________________________________
 // waitFor
 
 inline bool waitFor(Event &e);           // "include/seqan/system/system_event.h"(113)
 template <typename TTime > inline bool waitFor(Event &e, TTime timeoutMilliSec, bool &inProgress);           // "include/seqan/system/system_event.h"(118)
-template <typename TWorker> inline bool waitFor(Thread<TWorker> &m);           // "include/seqan/system/system_thread.h"(107)
 
 } //namespace seqan
 
diff --git a/include/seqan/system/system_mutex.h b/include/seqan/system/system_mutex.h
deleted file mode 100644
index 354e6e7..0000000
--- a/include/seqan/system/system_mutex.h
+++ /dev/null
@@ -1,215 +0,0 @@
-// ==========================================================================
-//                 SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2006-2016, Knut Reinert, FU Berlin
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
-//       its contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-// Author: David Weese <david.weese at fu-berlin.de>
-// ==========================================================================
-
-//SEQAN_NO_GENERATED_FORWARDS: no forwards are generated for this file
-
-#ifndef SEQAN_HEADER_SYSTEM_MUTEX_H
-#define SEQAN_HEADER_SYSTEM_MUTEX_H
-
-namespace seqan
-{
-
-#ifdef PLATFORM_WINDOWS
-
-    static SECURITY_ATTRIBUTES MutexDefaultAttributes = {
-        sizeof(SECURITY_ATTRIBUTES),
-        NULL,
-        true
-    };
-
-    struct Mutex
-    {
-        typedef HANDLE Handle;
-
-        Handle hMutex;
-
-        Mutex():
-            hMutex(NULL) {}
-
-        Mutex(BOOL initial) {
-            SEQAN_DO_SYS2(open(initial), "Could not create Mutex");
-        }
-
-        // Move constructors
-        Mutex(Mutex & other, Move) :
-            hMutex(other.hMutex)
-        {
-            other.hMutex = NULL;
-        }
-
-        Mutex(Mutex && other) :
-            hMutex(other.hMutex)
-        {
-            other.hMutex = NULL;
-        }
-
-        ~Mutex() {
-            if (*this)
-                SEQAN_DO_SYS2(close(), "Could not destroy Mutex");
-        }
-
-        inline bool open(BOOL initial = false) {
-            return (hMutex = CreateMutex(&MutexDefaultAttributes, initial, NULL)) != NULL;
-        }
-
-        inline bool close() {
-            bool success = CloseHandle(hMutex);
-            hMutex = NULL;
-            return success;
-        }
-
-        inline bool lock(DWORD timeoutMilliSec = INFINITE) {
-            return WaitForSingleObject(hMutex, timeoutMilliSec) != WAIT_TIMEOUT;
-        }
-
-        inline bool unlock() {
-            return ReleaseMutex(hMutex) != 0;
-        }
-
-        inline operator bool() const {
-            return hMutex != NULL;
-        }
-
-    private:
-
-        Mutex(Mutex const &) :
-            hMutex(NULL)
-        {
-            // we only support move construction (no copy-construction)
-        }
-    };
-
-#else
-
-    struct Mutex
-    {
-        typedef pthread_mutex_t* Handle;
-
-        pthread_mutex_t data, *hMutex;
-
-        Mutex():
-            hMutex(NULL)
-        {}
-
-        Mutex(bool initial)
-        {
-            SEQAN_DO_SYS(open(initial));
-        }
-
-        // Move constructors
-        Mutex(Mutex & other, Move) :
-            hMutex(other.hMutex)
-        {
-            other.hMutex = NULL;
-        }
-
-        Mutex(Mutex && other) :
-            hMutex(other.hMutex)
-        {
-            other.hMutex = NULL;
-        }
-
-        ~Mutex() {
-            if (*this)
-                SEQAN_DO_SYS(close());
-        }
-
-        inline bool open(bool initial = false)
-        {
-            if (!pthread_mutex_init(&data, NULL) && (hMutex = &data)) {
-                if (initial) return lock();
-                return true;
-            } else
-                return false;
-        }
-
-        inline bool close() {
-            bool success = (pthread_mutex_destroy(hMutex) == 0);
-            hMutex = NULL;
-            return success;
-        }
-
-        inline bool lock() {
-            return !pthread_mutex_lock(hMutex);
-        }
-
-        inline bool unlock() {
-            return !pthread_mutex_unlock(hMutex);
-        }
-
-        inline operator bool() const {
-            return hMutex != NULL;
-        }
-
-    private:
-
-        Mutex(Mutex const &) :
-            hMutex(NULL)
-        {
-            // we only support move construction (no copy-construction)
-        }
-
-    };
-
-#endif
-
-    template <>
-    struct HasMoveConstructor<Mutex> : True {};
-
-    //////////////////////////////////////////////////////////////////////////////
-    // global mutex functions
-
-    inline bool open(Mutex &m, bool initial) {
-        return m.open(initial);
-    }
-
-    inline bool open(Mutex &m) {
-        return open(m, false);
-    }
-
-    inline bool close(Mutex &m) {
-        return m.close();
-    }
-
-    inline bool lock(Mutex &m) {
-        return m.lock();
-    }
-
-    inline bool unlock(Mutex &m) {
-        return m.unlock();
-    }
-
-}
-
-#endif
diff --git a/include/seqan/system/system_thread.h b/include/seqan/system/system_thread.h
deleted file mode 100644
index 2922d39..0000000
--- a/include/seqan/system/system_thread.h
+++ /dev/null
@@ -1,225 +0,0 @@
-// ==========================================================================
-//                 SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2006-2016, Knut Reinert, FU Berlin
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
-//       its contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-// Author: David Weese <david.weese at fu-berlin.de>
-// ==========================================================================
-
-//SEQAN_NO_GENERATED_FORWARDS: no forwards are generated for this file
-
-#ifndef SEQAN_HEADER_SYSTEM_THREAD_H
-#define SEQAN_HEADER_SYSTEM_THREAD_H
-
-namespace seqan
-{
-
-#ifdef PLATFORM_WINDOWS
-
-    static SECURITY_ATTRIBUTES ThreadDefaultAttributes = {
-        sizeof(SECURITY_ATTRIBUTES),
-        NULL,
-        true
-    };
-
-    template <typename Worker>
-    struct Thread
-    {
-        typedef HANDLE Handle;
-
-        Handle hThread;
-        DWORD  hThreadID;
-        Worker worker;
-
-        Thread() :
-            hThread()
-        {}
-
-        template <typename TArg>
-        Thread(TArg &arg):
-            hThread(),
-            worker(arg)
-        {}
-
-        template <typename TArg>
-        Thread(TArg const &arg):
-            hThread(),
-            worker(arg)
-        {}
-
-        ~Thread() {
-            if (*this) {
-                cancel();
-                wait();
-            }
-        }
-
-        inline bool open(BOOL initital = false) {
-            return hThread = CreateThread(
-                &ThreadDefaultAttributes,    // default security attributes
-                0,                           // use default stack size
-                &_start,                     // thread function
-                this,                        // argument to thread function
-                0,                           // use default creation flags
-                &hThreadID);                 // returns the thread identifier
-        }
-
-        inline bool close() {
-            if (CloseHandle(hThread)) return true;
-            hThread = NULL;
-            return false;
-        }
-
-        inline bool cancel(DWORD exitCode = 0) {
-            return !TerminateThread(hThread, exitCode);
-        }
-
-        inline bool wait(DWORD timeoutMilliSec = INFINITE) {
-            return WaitForSingleObject(hThread, timeoutMilliSec) != WAIT_TIMEOUT;
-        }
-
-        inline operator bool() const {
-            return hThread != NULL;
-        }
-
-    private:
-
-        Thread(Thread const &) {
-            // resource copying is not yet supported (performance reason)
-            // it needs a reference counting technique
-        }
-
-        static DWORD WINAPI _start(LPVOID _this) {
-            reinterpret_cast<Thread*>(_this)->worker();
-            return 0;    // return value should indicate success/failure
-        }
-    };
-
-#else
-
-    template <typename Worker>
-    struct Thread
-    {
-        pthread_t   data;
-        pthread_t   *hThread;
-        Worker      worker;
-
-        Thread() : data(), hThread(), worker()
-        {}
-
-        template <typename TArg>
-        Thread(TArg & arg) : data(), hThread(), worker(arg)
-        {}
-
-        template <typename TArg>
-        Thread(TArg const & arg) : data(), hThread(), worker(arg)
-        {}
-
-        ~Thread()
-        {
-            if (*this)
-                close();
-        }
-
-        inline bool open()
-        {
-            return !pthread_create(&data, NULL, _start, this) && (hThread = &data);
-        }
-
-        inline bool close() {
-            return cancel() && wait() && !(hThread = NULL);
-        }
-
-        inline bool cancel() {
-            return !(pthread_cancel(data));
-        }
-
-        inline bool wait() {
-            return !(pthread_join(data, NULL)) && !(hThread = NULL);
-        }
-
-        inline bool wait(void* &retVal) {
-            return !(pthread_join(data, &retVal)) && !(hThread = NULL);
-        }
-
-        inline bool detach() {
-            return !(pthread_detach(data));
-        }
-
-        inline operator bool() const {
-            return hThread != NULL;
-        }
-
-    private:
-
-        Thread(Thread const &) {
-            // resource copying is not yet supported (performance reason)
-            // it needs a reference counting technique
-        }
-
-        static void* _start(void* _this) {
-            reinterpret_cast<Thread*>(_this)->worker();
-            return 0;
-        }
-    };
-
-#endif
-
-
-    //////////////////////////////////////////////////////////////////////////////
-    // global thread functions
-
-    template <typename TWorker>
-    inline bool open(Thread<TWorker> &m) {
-        return m.open();
-    }
-
-    template <typename TWorker>
-    inline bool run(Thread<TWorker> &m) {
-        return m.open();
-    }
-
-    template <typename TWorker>
-    inline bool close(Thread<TWorker> &m) {
-        return m.close();
-    }
-
-    template <typename TWorker>
-    inline bool kill(Thread<TWorker> &m) {
-        return m.close();
-    }
-
-    template <typename TWorker>
-    inline bool waitFor(Thread<TWorker> &m) {
-        return m.wait();
-    }
-
-}
-
-#endif
diff --git a/include/seqan/vcf_io/read_vcf.h b/include/seqan/vcf_io/read_vcf.h
index b9fde06..3228695 100644
--- a/include/seqan/vcf_io/read_vcf.h
+++ b/include/seqan/vcf_io/read_vcf.h
@@ -247,7 +247,7 @@ readRecord(VcfRecord & record,
         if (empty(buffer))
         {
             char buffer[30];    // == 9 (GENOTYPE_) + 20 (#digits in MIN_INT64) + 1 (trailing zero)
-            sprintf(buffer, "GENOTYPE_%u", i + 1);
+            snprintf(buffer, 30, "GENOTYPE_%u", i + 1);
             SEQAN_THROW(EmptyFieldError(buffer));
         }
         appendValue(record.genotypeInfos, buffer);
diff --git a/include/seqan/version.h b/include/seqan/version.h
index afd0d4a..8885361 100644
--- a/include/seqan/version.h
+++ b/include/seqan/version.h
@@ -39,7 +39,7 @@
 
 #define SEQAN_VERSION_MAJOR 2
 
-#define SEQAN_VERSION_MINOR 1
+#define SEQAN_VERSION_MINOR 2
 
 #define SEQAN_VERSION_PATCH 0
 
diff --git a/manual/README b/manual/README
index ce39ecc..f726487 100644
--- a/manual/README
+++ b/manual/README
@@ -4,7 +4,7 @@ Building the SeqAn Manual
 It is best to install the dependencies in a virtualenv environment.  You can
 find out more here:
 
-* http://virtualenv.readthedocs.org/en/latest/
+* http://virtualenv.readthedocs.io/en/latest/
 
 Installing Prerequisites
 ------------------------
diff --git a/manual/source/BuildManual.rst b/manual/source/BuildManual.rst
deleted file mode 100644
index 9180942..0000000
--- a/manual/source/BuildManual.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-.. _build-manual:
-
-Build Manual
-------------
-
-This manual contains information about building SeqAn applications both integrating SeqAn into your own build system and using the SeqAn build system.
-
-.. toctree::
-   :glob:
-   :maxdepth: 1
-
-   BuildManual/*
diff --git a/manual/source/BuildManual/UsingFindSeqAnCMakeModule.rst b/manual/source/BuildManual/UsingFindSeqAnCMakeModule.rst
deleted file mode 100644
index b2868f5..0000000
--- a/manual/source/BuildManual/UsingFindSeqAnCMakeModule.rst
+++ /dev/null
@@ -1,212 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _build-manual-using-the-find-seqan-cmake-module:
-
-Using the FindSeqAn CMake Module
---------------------------------
-
-Overview
-~~~~~~~~
-
-`CMake <http://cmake.org/>`_ is a cross-platform build system generator.
-That is, you describe the different executables and binaries and their dependencies ``CMakeLists.txt`` files.
-Then, CMake generates build systems from this, for example in the form of Makefiles or Visual Studio projects.
-
-This article will not describe how to use CMake in general but only how to use SeqAn easily from within CMake projects.
-In CMake projects, one uses `modules to find libraries <http://www.vtk.org/Wiki/CMake:How_To_Find_Libraries>`_ such as SeqAn.
-SeqAn ships with such a module in ``util/cmake/FindSeqAn.cmake``.
-
-This article describes how to use this module.
-
-A Running Example
-~~~~~~~~~~~~~~~~~
-
-In the directory ``util/raw_cmake_project``, you can find a small example project that uses the ``FindSeqAn.cmake`` module outside the SeqAn build system.
-The directory sturcture looks as follows:
-
-.. code-block:: text
-
-   .
-   |-- CMakeLists.txt
-   |-- README
-   `-- src
-       |-- CMakeLists.txt
-       `-- main.cpp
-
-The Project's Contents
-^^^^^^^^^^^^^^^^^^^^^^
-
-The file ``src/main.cpp`` contains a minimal SeqAn program.
-
-.. includefrags:: util/raw_cmake_project/src/main.cpp
-
-The root ``CMakeLists.txt`` file just sets up the project name, defines a minimal CMake version, makes all binaries go to the ``bin`` subdirectory, and then includes ``src/CMakeLists.txt``.
-
-.. includefrags:: util/raw_cmake_project/CMakeLists.txt
-
-This included file calls ``find_package(SeqAn REQUIRED)``.
-If the library could not be found, the ``REQUIRED`` parameter will make the ``find_package()`` call fail.
-Before this, multiple ``find_package()`` calls detect optional dependencies and enable them in the SeqAn library through compiler defines. Note that it is important that these packages be found **before** the SeqAn package is searched.
-
-.. includefrags:: util/raw_cmake_project/src/CMakeLists.txt
-
-This is followed by adding the include directory, definitions, and compiler flags required for compiling a program against the SeqAn library,
-Finally, the source file ``main.cpp`` is compiled into a program called ``main`` and the libraries that SeqAn was configured with are linked to ``main``.
-Note that SeqAn itself does not require a linking step but when using compression (e.g. for the BAM format), we have to link to ``zlib``.
-
-Building The Project
-^^^^^^^^^^^^^^^^^^^^
-
-By default, the ``cmake`` program will look for ``FindSeqAn.cmake`` in its module directory.
-Usually, this is located in ``/usr/share/cmake-2.8/Modules`` or a similar location that is available system-wide.
-Installing ``FindSeqAn.cmake`` there is one option of making it available in your ``CMakeLists.txt``.
-A better option might be to pass the path to the ``util/cmake`` directory of your SeqAn checkout to the ``CMAKE_MODULE_PATH`` CMake variable through the command line.
-
-Also, CMake will look for the SeqAn include files in central location such as ``/usr/local/include``.
-Instead of installing SeqAn there, you can pass additional directories to search in using the CMake variable ``SEQAN_INCLUDE_PATH``.
-
-Putting this together, you can execute ``cmake`` for the example CMake project with the following command line:
-
-.. code-block:: console
-
-   # mkdir -p ~/tmp/cmake_example_build
-   # cd ~/tmp/cmake_example_build
-   # cmake path/to/raw_cmake_project \
-       -DCMAKE_MODULE_PATH=~/seqan_checkout/util/cmake \
-       -DSEQAN_INCLUDE_PATH=~/seqan_checkout/include
-   [...]
-   # make main && ./bin/main
-   Hello SeqAn!
-
-Input / Output of the FindSeqAn Module
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-As with all other modules, you have to make the file ``FindSeqAn.cmake`` available as a CMake module, either by putting it into the same directory as the ``CMakeLists.txt`` that you are using it from or by adding the path to the file ``FindSeqAn.cmake`` to the variable ``CMAKE_MODULE_PATH``.
-
-Then, you can use it as follows (the argument ``REQUIRED`` is optional):
-
-.. code-block:: cmake
-
-    find_package (SeqAn REQUIRED)
-
-Input
-^^^^^
-
-SeqAn is somewhat special as a library since it has some optional dependencies.
-Certain features in SeqAn can be enabled or disabled, depending on whether the dependencies could be found.
-
-For example:
-
-.. code-block:: cmake
-
-    find_package (ZLIB)
-    find_package (BZip2)
-    find_package (SeqAn)
-
-If these packages are found **before** SeqAn is searched certain ``SEQAN_HAS_*`` macros are defined and corresponding features become available.
-
-Currently, the following dependencies enable optional features:
-
-``ZLIB``
-  zlib compression library
-
-``BZip2``
-  libbz2 compression library
-
-``OpenMP``
-  OpenMP language extensions to C/C++
-
-If you want ``FindSeqAn.cmake`` to expect the SeqAn build system layout then set the variable ``SEQAN_USE_SEQAN_BUILD_SYSTEM`` to ``TRUE``.
-In this case, it will try to locate the library parts from root of the SeqAn source files.
-
-Output
-~~~~~~
-
-The call to ``find_package(SeqAn)`` will set the following variables:
-
-``SEQAN_FOUND``
-  Indicate whether SeqAn was found.``
-
-Also the following MACROS are passed to the code indicating whether dependencies were (searched and) found:
-
-``SEQAN_HAS_ZLIB``
-  ``TRUE`` `` if zlib was found.``
-
-``SEQAN_HAS_BZIP2``
-  ``TRUE`` `` if libbz2 was found.``
-
-``SEQAN_HAS_OPENMP``
-  ``TRUE`` `` if OpenMP was found.``
-
-Variables to be passed to ``include_directories()``, ``target_link_directories()``, and ``add_definitions()`` in your ``CMakeLists.txt``:
-
-``SEQAN_INCLUDE_DIRS``
-  A list of include directories.
-
-``SEQAN_LIBRARIES``
-  A list of libraries to link against.
-
-``SEQAN_DEFINITIONS``
-  A list of definitions to be passted to the compiler.
-
-Required additions to C++ compiler flags are in the following variable:
-
-``SEQAN_CXX_FLAGS``
-  C++ Compiler flags to add.
-
-The following variables give the version of the SeqAn library, its major, minor, and the patch version part of the version string.
-
-``SEQAN_VERSION_STRING``
-  Concatenated version string, `` ``${SEQAN_VERSION_MAJOR}.${SEQAN_VERSION_MINOR}.${SEQAN_VERSION_PATCH}`` ``.``
-
-``SEQAN_VERSION_MAJOR``
-  Major version.
-
-``SEQAN_VERSION_MINOR``
-  Minor version.
-
-``SEQAN_VERSION_PATCH``
-  Patch-level version.
-
-The following flag defines whether this is a trunk version and the version given by the variables above is meant to be used as the previously released version.
-
-``SEQAN_VERSION_DEVELOPMENT``
-  Whether or not this is a pre-release version.
-
-Example
-~~~~~~~
-
-Below you can find a minimal example ``CMakeLists.txt`` file that uses the ``FindSeqAn.cmake``.
-
-.. code-block:: cmake
-
-   cmake_minimum_required (VERSION 3.0.0)
-   project (apps_dfi)
-
-   # ----------------------------------------------------------------------------
-   # Dependencies
-   # ----------------------------------------------------------------------------
-
-   # Only search for zlib as a dependency for SeqAn.
-   find_package (ZLIB)
-   find_package (SeqAn REQUIRED)
-
-   # ----------------------------------------------------------------------------
-   # Build Setup
-   # ----------------------------------------------------------------------------
-
-   # Add include directories.
-   include_directories (${SEQAN_INCLUDE_DIRS})
-
-   # Add definitions set by find_package (SeqAn).
-   add_definitions (${SEQAN_DEFINITIONS})
-
-   # Add CXX flags found by find_package (SeqAn).
-   set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SEQAN_CXX_FLAGS}")
-
-   # Add executable and link against SeqAn dependencies.
-   add_executable (app app.cpp)
-   target_link_libraries (dfi ${SEQAN_LIBRARIES})
diff --git a/manual/source/BuildManual/UsingTheSeqAnBuildSystem.rst b/manual/source/BuildManual/UsingTheSeqAnBuildSystem.rst
deleted file mode 100644
index d0c93d2..0000000
--- a/manual/source/BuildManual/UsingTheSeqAnBuildSystem.rst
+++ /dev/null
@@ -1,573 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _build-manual-using-the-seqan-build-system:
-
-Using the SeqAn Build System
-----------------------------
-
-We describe the SeqAn build system from three perspectives:
-
-* The **app user** who just wants to compile a couple of SeqAn applications from the SeqAn SVN repository.
-* The **SeqAn release manager** who wants to create SeqAn releases.
-* The **SeqAn developer** who wants to write his own applications using the SeqAn build system.
-
-But first, we will give a short overview of the repository and how
-versioning applications and the whole project works.
-
-Repository Structure and Versioning
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The SeqAn library including all applications, demos and documentation are hosted under the repository https://github.com/seqan/seqan.
-For a more detailed view over the repository structure please read this :ref:`document <infrastructure-repository-structure>`.
-
-The SeqAn workflow is a mix between the **git-workflow** and the **forking-workflow** as described :ref:`here <infrastructure-seqan-git-workflow>`.
-Please read the document and all linked sources carefully before you start developing tools and modules for SeqAn.
-
-Note that there is no separation between apps and the library.
-This means that all apps are released together with a new **library release** and are updated along with the chaneges in the ``develop`` branch.
-A **library release** is achieved by tagging the corresponding commit to the ``master`` with the new version number, e.g. ``seqan-v2.0.0`` as described in the git-workflow.
-
-Independently of this, an **app release** can be performed by tagging the new version with an increased version number, e.g. as ``yara-v0.9.0`` for the app Yara in version 0.9.0.
-The tagged commit can either point to the ``master`` or to the ``develop`` branch, depending where it was applied.
-
-Note that tags are final and a new tag has to be created if any code is to be changed.
-
-User Perspective
-~~~~~~~~~~~~~~~~
-
-The user can clone either the ``master`` or the ``develop`` branch or any tagged version (e.g. ``yara-v0.9.0`` or ``seqan-v1.4.2``) to his local computer.
-The user could then proceed as the developer (see below) but there are dedicated modes in the SeqAn build system for easier installation.
-A user might also want to install the library to an include folder.
-We will look at both use cases.
-
-User App Installation
-^^^^^^^^^^^^^^^^^^^^^
-
-Note that we assume Unixoid systems in this document and only refer to makefile based build systems.
-The easiest way to install an application is described in the :ref:`getting started tutorials using linux makefiles <tutorial-getting-started-linux-makefiles>`.
-By default the binaries are deployed in the bin folder of the build directory, e.g., ``${HOME}/Development/build-seqan/release/bin``.
-
-However, it will be more convenient for the user to build the app and then install it, for example to a certain directory like ``~/local/bin/app``:
-Here is an example for the application Razers 3.
-
-.. code-block:: console
-
-    ~ # git clone https://github.com/seqan/seqan seqan-src
-    ~ # mkdir -p seqan-build/release-razers3
-    ~ # cd seqan-build/release-razers3
-    release-razers3 # cmake ../../seqan-src -DCMAKE_INSTALL_PREFIX=~/local/bin/razers3 \
-                      -DSEQAN_BUILD_SYSTEM=APP:razers3
-    release-razers3 # make install
-
-.. hint::
-
-
-	The user can of course install any tagged version by using the command
-
-	.. code-block:: console
-
-	    # git clone -b <tag> https://github.com/seqan/seqan tag-src
-
-After executing this, the user will find the following structure in ``~/local/bin/razers3``, including the example files and documentation.
-
-.. code-block:: console
-
-    razers3 # tree ~/local/bin/razers3
-    /home/${USER}/local/bin/razers3/
-    ├── bin
-    │   └── razers3
-    ├── example
-    │   ├── genome.fa
-    │   ├── reads2.fa
-    │   └── reads.fa
-    ├── LICENSE
-    └── README
-
-User Library Installation
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The user could also want to install the library headers only.
-The checkout step is the same as above, but he has to create a new build directory and execute CMake with different parameters.
-The library will be installed to ``~/local/seqan``.
-
-.. code-block:: console
-
-    ~ # git clone https://github.com/seqan/seqan seqan-src
-    ~ # mkdir -p seqan-build/library_only
-    ~ # cd seqan-build/library_only
-    library_only # cmake ../../seqan-src -DCMAKE_INSTALL_PREFIX=~/local/seqan \
-                     -DSEQAN_BUILD_SYSTEM=SEQAN_RELEASE_LIBRARY
-    library_only # make dox
-    library_only # make install
-
-The user can now find the SeqAn library in ``~/local/seqan/include``:
-
-.. code-block:: console
-
-    library_only # tree ~/local/seqan/
-    /home/${USER}/local/seqan/
-    ├── include
-    │   └── seqan
-    │       ├── align
-    │       │   ├── align_base.h
-    │       │   ├── align_cols.h
-    │       │   ├── align_config.h
-    │       │   ├── align_iterator_base.h
-    │       │   ├── alignment_algorithm_interface.h
-    │       │   ├── alignment_algorithm_tags.h
-    │       │   ├── alignment_operations.h
-    │       │   ├── align_metafunctions.h
-    │       │   ├── align_traceback.h
-    │       │   ├── gap_anchor.h
-    ...
-    │       ├── system.h
-    │       └── version.h
-    └── share
-        └── doc
-            └── seqan
-                ├── LICENSE
-                └── README
-
-SeqAn Release Manager Perspective
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The SeqAn release manager wants to create release packages of (1)
-individual apps from the SeqAn repository, (2) create a SeqAn library
-release that includes the library and documentation, and (3) create a
-SeqAn apps release that contains the built apps. The manager wants to
-build the binary packages for different platforms, e.g. 32 bit and 64
-bit Linux and Windows, Mac Os X, etc.
-
-We will give examples for Unixoid operating systems.
-
-Note that the packaging described below can be automatized. App and
-project releases can simply be tagged in the Subversion repository. A
-script that runs nightly can then pick up new tags from the GitHub
-repository and create binary packages for them. This can also automatize
-nightly builds on different platforms without much work for the release
-manager.
-
-Packaging Individual Apps
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The release manager would check out an app in a specific revision, e.g.
-through a tag or the current master version:
-
-.. code-block:: console
-
-    ~ # git clone -b yara-v0.9.2 https://github.com/seqan/seqan yara-v0.9.2
-    ~ # mkdir yara-v0.9.2-build
-    ~ # cd yara-0.v9.2-build
-    yara-0.9.2-build # cmake ../yara-v0.9.2 -DSEQAN_BUILD_SYSTEM=APP:yara \
-                          -DSEQAN_APP_VERSION=0.9.2
-    yara-0.9.2-build # make package
-
-On Unix, this will create a Tarball (``.tar.bz2``) and a ZIP file with
-the binaries, documentation, and example files:
-
-.. code-block:: console
-
-    yara-0.9.2-build # ls -l yara-0.9.2-Linux-x86_64.*
-    -rw-rw-r-- 1 USER GROUP  918587 Jan 16 18:15 yara-0.9.2-Linux-x86_64.tar.bz2
-    -rw-rw-r-- 1 USER GROUP 1238990 Jan 16 18:15 yara-0.9.2-Linux-x86_64.zip
-
-The packages have the following structure:
-
-.. code-block:: console
-
-    yara-0.9.2-build # tar tjf yara-0.9.2-Linux-x86_64.tar.bz2
-    yara-0.9.2-Linux-x86_64/bin/yara_mapper
-    yara-0.9.2-Linux-x86_64/bin/yara_indexer
-    yara-0.9.2-Linux-x86_64/LICENSE
-    yara-0.9.2-Linux-x86_64/README.rst
-
-
-Packaging Library Releases
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Packaging the library and documentation is quite simple. Note that we
-have to build the documentation using ``make dox`` before calling
-``make package`` because of a `bug in
-CMake <http://public.kitware.com/Bug/view.php?id=8438>`_ that prevents
-us from doing it automatically.
-
-The version is automatically detected from the constants in the
-``seqan/version.h`` header. There also is a marker variable that marks
-whether the checked out repository version has a version number or
-whether it is a pre-release of the next version.
-
-.. code-block:: console
-
-    ~ # git clone https://github.com/seqan/seqan seqan-src
-    ~ # mkdir -p seqan-build/release_library
-    ~ # cd seqan-build/release_library
-    release_library # cmake ../../seqan-src -DSEQAN_BUILD_SYSTEM=SEQAN_RELEASE_LIBRARY
-    release_library # make dox
-    release_library # make package
-
-On Linux, this will build three archives:
-
-.. code-block:: console
-
-    release_library # ls -l seqan-library-pre1.4.0-Linux.*
-    -rw-rw-r-- 1 USER GROUP 3367876 Nov 20 13:57 seqan-library-pre1.4.0-Linux.deb
-    -rw-rw-r-- 1 USER GROUP 2357465 Nov 20 13:57 seqan-library-pre1.4.0-Linux.tar.bz2
-    -rw-rw-r-- 1 USER GROUP 5953550 Nov 20 13:57 seqan-library-pre1.4.0-Linux.zip
-
-Let us look at the contents of one (they all contain the same files):
-
-.. code-block:: console
-
-    release_library # dpkg --contents seqan-library-pre1.4.0-Linux.deb
-    drwxrwxr-x root/root         0 2012-11-20 13:57 ./usr/
-    drwxrwxr-x root/root         0 2012-11-20 13:57 ./usr/share/
-    drwxrwxr-x root/root         0 2012-11-20 13:57 ./usr/share/seqan/
-    drwxrwxr-x root/root         0 2012-11-20 13:57 ./usr/share/seqan/docs/
-    drwxr-xr-x root/root         0 2012-11-20 13:57 ./usr/share/seqan/docs/html/
-    -rw-r--r-- root/root      2012 2012-11-20 13:50 ./usr/share/seqan/docs/html/FUNCTION.prefix_Sum.html
-    -rw-r--r-- root/root     24116 2012-11-20 13:50 ./usr/share/seqan/docs/html/SPEC_Super_Max_Repeats_Fast+_Iterator.html
-    -rw-r--r-- root/root      1270 2012-11-20 13:50 ./usr/share/seqan/docs/html/MEMVAR_Triple_23i3.html
-    ...
-    -rw-r--r-- root/root      2940 2012-11-06 13:28 ./usr/share/doc/seqan/README
-    -rw-r--r-- root/root      1517 2012-11-06 13:28 ./usr/share/doc/seqan/LICENSE
-    drwxrwxr-x root/root         0 2012-11-20 13:57 ./usr/include/
-    drwxrwxr-x root/root         0 2012-11-20 13:57 ./usr/include/seqan/
-    drwxrwxr-x root/root         0 2012-11-20 13:57 ./usr/include/seqan/statistics/
-    -rw-r--r-- root/root     24044 2012-11-06 13:28 ./usr/include/seqan/statistics/statistics_markov_model.h
-    -rw-r--r-- root/root     15533 2012-11-06 13:28 ./usr/include/seqan/statistics/statistics_base.h
-    ...
-
-Packaging All Apps
-^^^^^^^^^^^^^^^^^^
-
-It is simple to create a SeqAn Apps release:
-
-.. code-block:: console
-
-    ~ # git clone https://github.com/seqan/seqan seqan-src
-    ~ # mkdir -p seqan-build/release_apps
-    ~ # cd release_apps
-    release_apps # cmake ../../seqan-src -DSEQAN_BUILD_SYSTEM=SEQAN_RELEASE_APPS
-    release_apps # make package
-    release_apps # ls -l seqan-apps-pre1.4.0-Linux*
-    -rw-rw-r-- 1 USER GROUP 532 Nov 20 14:22 seqan-apps-pre1.4.0-Linux.deb
-    -rw-rw-r-- 1 USER GROUP  42 Nov 20 14:22 seqan-apps-pre1.4.0-Linux.tar.bz2
-    -rw-rw-r-- 1 USER GROUP  22 Nov 20 14:22 seqan-apps-pre1.4.0-Linux.zip
-
-The contents of the archives is as follows:
-
-.. code-block:: console
-
-    release_library # dpkg --contents seqan-apps-pre1.4.0-Linux.deb
-     dpkg --contents seqan-apps-pre1.4.0-Linux.deb
-    drwxrwxr-x root/root         0 2012-11-20 14:30 ./usr/
-    drwxrwxr-x root/root         0 2012-11-20 14:30 ./usr/bin/
-    -rwxr-xr-x root/root   2253741 2012-11-20 14:27 ./usr/bin/masai_mapper
-    -rwxr-xr-x root/root    191351 2012-11-20 14:24 ./usr/bin/tree_recon
-    -rwxr-xr-x root/root    349878 2012-11-20 14:26 ./usr/bin/param_chooser
-    ...
-    drwxrwxr-x root/root         0 2012-11-20 14:30 ./usr/share/
-    drwxrwxr-x root/root         0 2012-11-20 14:30 ./usr/share/doc/
-    drwxrwxr-x root/root         0 2012-11-20 14:30 ./usr/share/doc/tree_recon/
-    drwxrwxr-x root/root         0 2012-11-20 14:30 ./usr/share/doc/tree_recon/example/
-    -rw-r--r-- root/root       475 2012-11-20 13:32 ./usr/share/doc/tree_recon/example/example.dist
-    -rw-r--r-- root/root        20 2012-11-20 13:32 ./usr/share/doc/tree_recon/README
-    -rw-r--r-- root/root       843 2012-11-20 13:32 ./usr/share/doc/tree_recon/LICENSE
-    ...
-    drwxrwxr-x root/root         0 2012-11-20 14:30 ./usr/share/doc/razers3/
-    drwxrwxr-x root/root         0 2012-11-20 14:30 ./usr/share/doc/razers3/example/
-    -rw-r--r-- root/root       105 2012-11-06 13:28 ./usr/share/doc/razers3/example/reads2.fa
-    -rw-r--r-- root/root       985 2012-11-06 13:28 ./usr/share/doc/razers3/example/genome.fa
-    -rw-r--r-- root/root       105 2012-11-06 13:28 ./usr/share/doc/razers3/example/reads.fa
-    -rw-r--r-- root/root     23338 2012-11-06 13:28 ./usr/share/doc/razers3/README
-    -rw-r--r-- root/root      1044 2012-11-20 13:32 ./usr/share/doc/razers3/LICENSE
-
-Nightly Builds
-^^^^^^^^^^^^^^
-
-It is also possible to create nightly builds of the library, all apps,
-or individual apps. Simply define the CMake variable
-``SEQAN_NIGHTLY_RELEASE`` to ``TRUE`` on the command line. In the
-following examples, we skip the checkout step and simply show the CMake
-and build steps:
-
-One App
-^^^^^^^
-
-.. code-block:: console
-
-    masai-build # cmake ../yara-v0.9.2 -DSEQAN_BUILD_SYSTEM=APP:yara \
-                          -DSEQAN_NIGHTLY_RELEASE=TRUE
-    masai-build # make package
-    masai-build # ls -l yara-20121120-Linux-x86_64.*
-    -rw-rw-r-- 1 USER GROUP  918587 Nov 20 14:11 yara-20121120-Linux-x86_64.tar.bz2
-    -rw-rw-r-- 1 USER GROUP 1238990 Nov 20 14:11 yara-20121120-Linux-x86_64.zip
-    masai-build # tar tjf masai-20121120-Linux-x86_64.tar.bz2
-    masai-20121120-Linux-x86_64/bin/masai_mapper
-    masai-20121120-Linux-x86_64/bin/masai_indexer
-    masai-20121120-Linux-x86_64/README
-    masai-20121120-Linux-x86_64/LICENSE
-
-All Apps
-^^^^^^^^
-
-.. code-block:: console
-
-    release_apps # cmake ../../seqan-src -DSEQAN_BUILD_SYSTEM=SEQAN_RELEASE_APPS \
-                     -DSEQAN_NIGHTLY_RELEASE=TRUE
-    release_apps # make package
-    release_apps #  ls -l seqan-apps-20121120-*
-    -rw-rw-r-- 1 USER GROUP 10232442 Nov 20 14:37 seqan-apps-20121120-Linux.deb
-    -rw-rw-r-- 1 USER GROUP  8847407 Nov 20 14:37 seqan-apps-20121120-Linux.tar.bz2
-    -rw-rw-r-- 1 USER GROUP 10266596 Nov 20 14:37 seqan-apps-20121120-Linux.zip
-
-Library Only
-^^^^^^^^^^^^
-
-.. code-block:: console
-
-    release_library # cmake ../../seqan-src -DSEQAN_BUILD_SYSTEM=SEQAN_RELEASE_LIBRARY \
-                        -DSEQAN_NIGHTLY_RELEASE=TRUE
-    release_library # make dox
-    release_library # make package
-    release_library # ls -l seqan-library-20121120-*
-    -rw-rw-r-- 1 USER GROUP 3368034 Nov 20 14:07 seqan-library-20121120-Linux.deb
-    -rw-rw-r-- 1 USER GROUP 2356769 Nov 20 14:07 seqan-library-20121120-Linux.tar.bz2
-    -rw-rw-r-- 1 USER GROUP 5955755 Nov 20 14:06 seqan-library-20121120-Linux.zip
-
-SeqAn Developer Perspective
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-SeqAn developers want to develop their own applications using SeqAn.
-When they want to use the SeqAn build system, they can follow these
-instructions to (1) fork the application template from github,
-(2) setup their apps, and (3) create releases of the applications.
-
-Getting the Template
-^^^^^^^^^^^^^^^^^^^^
-
-Getting the application template can be achieved by forking the project ``https://github.com/seqan/APP_TEMPLATE.git``.
-This repository contains a template structure for the application containing all necessary files and a starting point from which to begin the development.
-One of the files already present is the template repository is the ``CMakeLists.txt`` file.
-Since you will have to adjust the file to your project, let us have a look at the file in detail.
-You can look up details in the `CMake documentation <http://www.cmake.org/cmake/help/v2.8.8/cmake.html>`_ in case that some CMake functions are not clear to you.
-
-The file starts out with a header describing where the file lives and what it is for.
-This is useful when having many ``CMakeLists.txt`` files open and you want to quickly identifyin the file in the current window.
-
-.. code-block:: cpp
-
-   # ===========================================================================
-   #                  SeqAn - The Library for Sequence Analysis
-   # ===========================================================================
-   # File: src/CMakeLists.txt
-   #
-   # CMakeLists.txt file for my_app.
-   # ===========================================================================
-
-   cmake_minimum_required (VERSION 3.0.0)
-   project (src_my_app)
-   message (STATUS "Configuring src/my_app")
-
-Then comes the section that searches for the app's dependencies.
-By default, the app only depends on the package SeqAn.
-By calling ``find_package(PKG)`` **before** ``find_package (SeqAn REQUIRED)`` you can configure SeqAn to also make use of the dependency specified dependency. Valid values for PKG are ``OpenMP``, ``ZLIB`` and ``BZip2``.
-See the :ref:`build-manual-using-the-find-seqan-cmake-module` for more details.
-
-.. code-block:: cmake
-
-    # ----------------------------------------------------------------------------
-    # Dependencies
-    # ----------------------------------------------------------------------------
-
-    # Search SeqAn and select dependencies.
-    find_package (SeqAn REQUIRED)
-
-The call to ``find_package (SeqAn REQUIRED)`` will then set the
-following variables that we will then use below to add the correct
-parameters to the compiler and linker.
-
-* ``SEQAN_INCLUDE_DIRS``: Required include directories for the headers.
-  Pass to ``include_directories()``
-* ``SEQAN_DEFINITIONS``: Additional precompiler macros to pass to the
-  compiler. Pass to ``add_definitions()``
-* ``SEQAN_CXX_FLAGS``: Additional C++ compiler flags. Extend
-  ``CMAKE_CXX_FLAGS`` by this list.
-* ``SEQAN_LIBRARIES``: The libraries to link against. Pass to
-  ``target_link_libraries()`` for each target.
-
-We then need one ``add_executable()`` call for each program executable
-that we want to build. We also need to link the libraries into the
-program.
-
-.. code-block:: cmake
-
-    # ----------------------------------------------------------------------------
-    # Build Setup
-    # ----------------------------------------------------------------------------
-
-    # Add CXX flags found by find_package(SeqAn).
-    set (CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} ${SEQAN_CXX_FLAGS})
-
-    # Add include directories.
-    include_directories (${SEQAN_INCLUDE_DIRS})
-
-    # Add definitions set by find_package(SeqAn).
-    add_definitions (${SEQAN_DEFINITIONS})
-
-    # Update the list of file names below if you add source files to your application.
-    add_executable (dfi dfi.cpp)
-
-    # Add dependencies found by find_package(SeqAn).
-    target_link_libraries (dfi ${SEQAN_LIBRARIES})
-
-We then configure the app for installation. Note that this is a distinct
-step than configuring CPack for packaging. The following controls which
-files to copy when calling ``make install``. CPack will use the result
-of ``make install`` for creating its packages.
-
-We first call ``seqan_setup_install_vars()`` (to set the variable
-``SEQAN_PREFIX_SHARE_DOC``. This is required for installing
-documentation and example files to ``share/${PROGRAM_NAME}`` when
-building multiple apps and directly to the current directory ``.`` when
-building only one app.
-
-The macro ``seqan_setup_install_vars`` is specific to the SeqAn build
-system.
-
-The ``util/skel.py`` script will create files ``LICENSE`` and ``README``
-for you. If you want to include additional files then you should use one
-of the given ``install()`` calls. Install documentation to
-``${SEQAN_PREFIX_SHARE_DOC}`` and examples to
-``${SEQAN_PREFIX_SHARE_DOC}/example``.
-
-.. code-block:: console
-
-    # ----------------------------------------------------------------------------
-    # Installation
-    # ----------------------------------------------------------------------------
-
-    # Set variables for installing, depending on the selected build type.
-    if (NOT SEQAN_PREFIX_SHARE_DOC)
-      seqan_setup_install_vars (dfi)
-    endif (NOT SEQAN_PREFIX_SHARE_DOC)
-
-    # Install dfi in ${PREFIX}/bin directory
-    install (TARGETS dfi
-             DESTINATION bin)
-
-    # Install non-binary files for the package to "." for app builds and
-    # ${PREFIX}/share/doc/dfi for SeqAn release builds.
-    install (FILES LICENSE
-                   README
-             DESTINATION ${SEQAN_PREFIX_SHARE_DOC})
-    #install (FILES example/example.txt
-    #         DESTINATION ${SEQAN_PREFIX_SHARE_DOC}/example)
-
-Then, we can use the macro ``seqan_add_app_test()`` from the SeqAn build system to register app tests.
-If you want to add an app test for your program then simply uncomment the ``seqan_add_app_test()`` call and follow the instructions in :ref:`how-to-write-app-tests` to write such an app tests.
-
-.. code-block:: console
-
-    # ----------------------------------------------------------------------------
-    # App Test
-    # ----------------------------------------------------------------------------
-
-    #seqan_add_app_test(dfi)
-
-Finally, we configure the application packaging system for building individual apps.
-
-.. code-block:: console
-
-    # ----------------------------------------------------------------------------
-    # CPack Install
-    # ----------------------------------------------------------------------------
-
-    if (SEQAN_BUILD_SYSTEM STREQUAL "APP:my_app")
-      set (CPACK_PACKAGE_NAME "my_app")
-      set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "My App - Catch Summary")
-      set (CPACK_DEBIAN_PACKAGE_MAINTAINER "Your Name <your.name at example.com>")
-      set (CPACK_PACKAGE_VENDOR "SeqAn Team, FU Berlin")
-
-      seqan_configure_cpack_app(my_app "My App")
-    endif (SEQAN_BUILD_SYSTEM STREQUAL "APP:my_app")
-
-.. hint::
-
-    If you use the markdown feature for your ``README`` with the file ending ``*.rst``, then you need to explicitly tell **CPack**, which the correct README file is.
-    You can do this by adding the following line to the **CPack Install** section.
-
-    .. code-block:: console
-
-        set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.rst")
-
-    Also make sure to replace all occurrences of ``README`` with ``README.rst`` in the **INSTALLATION** section.
-
-Building Apps
-^^^^^^^^^^^^^
-
-Simply use CMake to generate project files for the whole SeqAn
-repository. Let us say that we want to build the app
-``my_app``:
-
-.. code-block:: console
-
-    ~ # mkdir -p seqan-build/release
-    ~ # cd seqan-build/release
-    release # cmake ../../seqan-src
-    release # make my_app
-
-Note that the default build type is the release mode.
-The binaries will be built with optimization and without debug symbols.
-To build apps with debug symbols and without optimization with Makefiles, use the CMake paraemter ``-DCMAKE_BUILD_TYPE=Debug``.
-When using IDE files such as for Xcode, you can select the optimization state from within the IDE.
-
-.. code-block:: console
-
-    Release # cd ../..
-    ~ # mkdir -p seqan-build/debug
-    ~ # cd seqan-build/debug
-    debug # cmake ../../seqan-src
-    debug # make my_app
-
-Windows Notes
-~~~~~~~~~~~~~
-
-The descriptions above apply to Linux/Mac systems.
-On Windows we can use the GitHub client which can be downloaded `here <https://windows.github.com>`_.
-Following the installation instructions will install a GitHub GUI client to manage your repository and a command line tool called ``Git Shell`` which emulates a unix like system so we can use the same commands as described before.
-
-However, the main difference is that when building with the Visual Studio tools, one does not use ``make`` for building applications.
-When developing, users can simply open the generated Visual Studio ``*.sln`` solution files and then use Visual Studio for building the applications.
-When packaging, users can use the ``msbuild`` command as described below.
-
-As an example, we adapt the description of creating an SeqAn application release on Windows.
-The next steps are typed into the Command Prompt (``Start > All Programs > GitHub, Inc > Git Shell``).
-
-.. code-block:: console
-
-    ~ # git clone https://github.com/seqan/seqan seqan-src
-    ~ # mkdir seqan-build
-    ~ # cd seqan-build
-    seqan-build # cmake ../seqan-src -DSEQAN_BUILD_SYSTEM=SEQAN_RELEASE_APPS
-
-You can then open the generated ``seqan.sln`` file in ``C:\seqan-build`` with Visual Studio and build the packages from there.
-
-Alternatively, ``msbuild`` can be used.
-This program is only available when using the Visual Studio Command Prompt.
-For Visual Studio 2010, you can start it through the start menu as follows:
-``Start > Programs > Microsoft Visual Studio 2010 > Visual Studio Tools > Visual Studio Command Prompt 2010``.
-For other Visual Studio versions, the path is similar.
-If you want 64 bit builds then you have to start ``Visual Studio x86 Win64 Command Prompt (2010)``.
-
-.. code-block:: console
-
-    C:\> cd seqan-build
-    C:\seqan-build> msbuild /p:Configuration=Release PACKAGE.vcxproj
-
-This will create a ZIP file with the app build of the seqan apps.
-
-Note that you could also input the first part of commands from this example into the Visual Studio Command Prompt.
diff --git a/manual/source/Glossary.rst b/manual/source/Glossary.rst
deleted file mode 100644
index 8a04811..0000000
--- a/manual/source/Glossary.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-.. _glossary:
-
-Glossary
---------
-
-.. toctree::
-   :glob:
-   :maxdepth: 1
-
-   Glossary/* 
diff --git a/manual/source/Glossary/SuffixTree.rst b/manual/source/Glossary/SuffixTree.rst
deleted file mode 100644
index 0223a57..0000000
--- a/manual/source/Glossary/SuffixTree.rst
+++ /dev/null
@@ -1,40 +0,0 @@
-.. _glossary-suffix-tree:
-
-Suffix Tree
------------
-
-We consider an alphabet Σ and a sentinel character $ that is smaller
-than every character of Σ. A suffix tree of a given non-empty string s
-over Σ is a directed tree whose edges are labeled with non-empty
-substrings of s$ with the following properties:
-
-1. Each outgoing edge begins with a different letter and the outdegree
-   of an internal node is greater than 1.
-2. Each suffix of s$ is the concatenation of edges from the root to a leaf node.
-3. Each path from the root to a leaf node is a suffix of s$.
-
-The following figure shows the suffix tree of the string s="mississippi" (suffix nodes are shaded):
-
-
-.. figure:: streeSentinel.png
-    :align: center
-
-    **Figure 1:** Suffix tree of "mississippi"
-
-Many suffix tree construction algorithms expect $ to be part of the
-string alphabet which is undesirable for small bit-compressible
-alphabets (e.g. DNA). In SeqAn there is no need to introduce a $. We
-relax suffix tree criterion 2. and consider the relaxed suffix tree that
-arises from the suffix tree of s by removing the $ character and all
-empty edges. In the following, we only consider relaxed suffix trees and
-simply call them suffix trees. In that tree a suffix can end in an inner
-node as you can see in the next figure (suffix "i"):
-
-.. figure:: streeNoSentinel.png
-    :align: center
-
-    **Figure 2:** Relaxed suffix tree of "mississippi"
-
-.. raw:: mediawiki
-
-   {{TracNotice|{{PAGENAME}}}}
diff --git a/manual/source/HowTo.rst b/manual/source/HowTo.rst
deleted file mode 100644
index b3b4ca3..0000000
--- a/manual/source/HowTo.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-.. _how-to:
-
-How Tos
--------
-
-After reading the Tutorial we recommend to read some of the following HowTos:
-
-.. toctree::
-   :glob:
-   :maxdepth: 1
-
-   HowTo/*
diff --git a/manual/source/HowTo/AutomateTests.rst b/manual/source/HowTo/AutomateTests.rst
deleted file mode 100644
index 5f9b216..0000000
--- a/manual/source/HowTo/AutomateTests.rst
+++ /dev/null
@@ -1,102 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-.. _how-to-automate-tests-with-ctest:
-
-Automating Tests With CTest
----------------------------
-
-The dashboard lives at `the SeqAn CDash site <http://www.seqan.de/cdash/index.php?project=SeqAn>`_.
-
-For Linux and Mac OS X
-~~~~~~~~~~~~~~~~~~~~~~
-
-Create ``~/Nightly`` where everything will take place and check out the GitHub repository:
-
-.. code-block:: console
-
-    cd ~
-    mkdir Nightly
-    cd Nightly
-    git clone https://github.com/seqan/seqan seqan-src
-
-.. hint::
-    
-    Use the following command to clone the branch:
-    
-    .. code-block:: console
-        
-        git clone -b develop https://github.com/seqan/seqan seqan-src 
-
-Now, get the build scripts:
-
-.. code-block:: console
-
-    cp seqan-src/misc/ctest/run_nightly.sh .
-    cp seqan-src/misc/ctest/Seqan_Nightly.cmake.example Seqan_Nightly.cmake
-    cp seqan-src/util/cmake/CTestConfig.cmake seqan-src/
-
-Adjust the build name and site name in ``Seqan_Nightly.cmake``.
-Now, test the setup by running:
-
-.. code-block:: console
-
-    chmod u+x run_nightly.sh
-    ./run_nightly.sh
-
-Add ``run_nightly.sh`` to your nightly *cron* jobs:
-
-.. code-block:: console
-
-    crontab -e
-
-Example crontab file:
-
-.. code-block:: console
-
-    #min    hour    mday    month   wday    command
-    05      1       *       *       *       sh -l ${HOME}/Nightly/run_nightly.sh > /dev/null
-
-For Windows
-~~~~~~~~~~~
-
-Create ``Nightly`` in your home directory where everything will take place and check out the trunk:
-
-.. code-block:: console
-
-    cd /D %HOME%
-    mkdir Nightly
-    cd Nightly
-    git clone https://github.com/seqan/seqan seqan-src
-
-Now, get the build scripts:
-
-.. code-block:: console
-
-    copy seqan-src\misc\ctest\run_nightly.sh .
-    copy seqan-src\misc\ctest\Seqan_Nightly.cmake.example Seqan_Nightly.cmake
-    copy seqan-src\util\cmake\CTestConfig.cmake seqan-src\
-
-Adjust the build name and site name in ``Seqan_Nightly.cmake``.
-Now, test the setup by running:
-
-.. code-block:: console
-
-    run_nightly.bat
-
-Add ``run_nightly.bat`` to nightly Scheduled Tasks of Windows (analogously to the `CTest Tutorial <http://www.vtk.org/Wiki/CMake_Scripting_Of_CTest#On_Windows_.2F_Cygwin_.2F_MinGW>`_):
-
-   #.   Open "Scheduled Tasks" from Control Panel.
-   #.   Select Add Scheduled Task``
-   #.   Select Next to select command.``
-   #.   Click Browse... and select ``\ ``run_nightly.bat``\ ``.``
-   #.   Click Next and select name and repetition date. Repetition date for Nightly dashboards should be Daily.``
-   #.   Click Next and select time to start the dashboard.``
-   #.   Click Next and select Open advanced properties... to fine tune the scheduled task.``
-   #.   Select Next and type password of the user.``
-   #.   Task is created. The Advanced Properties dialog should open.``
-   #.   In advanced properties, specify full command name. This is very important that you use double quotes in case you have space in your path.``
-   #.   Select 'Ok, which will ask for password again.``
-   #.   The new task should be created.``
-
diff --git a/manual/source/HowTo/DevelopCUDA.rst b/manual/source/HowTo/DevelopCUDA.rst
deleted file mode 100644
index c6055a3..0000000
--- a/manual/source/HowTo/DevelopCUDA.rst
+++ /dev/null
@@ -1,91 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _how-to-getting-started-with-cuda:
-
-Getting Started with CUDA
--------------------------
-
-Requirements
-~~~~~~~~~~~~
-
-In order to follow this HowTo, you need:
-
-   *  git to download the sources
-   *  cmake to build the projects
-   *  the CUDA toolkit >= v5.0 to compile the CUDA demos
-   *  a CUDA-capable GPU with SM architecture >= 2.0 to run the CUDA demos
-
-Refer to :ref:`tutorial-getting-started` for detailed SeqAn installation
-instructions.
-
-Getting the source code
-~~~~~~~~~~~~~~~~~~~~~~~
-
-CUDA acceleration resides in the develop branch of SeqAn, hosted on `GitHub <http://github.com/seqan/>`_.
-Execute the following command to get the last sources:
-
-.. code-block:: console
-
-    $ git clone -b develop https://github.com/seqan/seqan.git SeqAn
-
-Compiling the demos
-~~~~~~~~~~~~~~~~~~~
-
-Hello CUDA
-^^^^^^^^^^
-
-Let us first setup the build system:
-
-.. code-block:: console
-
-    $ mkdir SeqAn-Builds && cd SeqAn-Builds
-    $ cmake ../SeqAn -DCMAKE_BUILD_TYPE=Release
-
-Now we can compile and execute our `CUDA hello world <http://github.com/seqan/seqan/tree/develop/demos/cuda/hello.cu>`_:
-
-.. code-block:: console
-
-    $ make demo_cuda_hello
-    $ bin/demo_cuda_hello
-    Hello CUDA!
-
-.. important::
-
-    Some users experienced compilation problems on Mac OS X.
-    If the compilation fails with: **clang: error: unsupported option '-dumpspecs**, then you need to manually create links to gcc 4.4 in the nvcc directory.
-    If you for example installed gcc44 via MacPorts in ``/opt/local/bin`` you can create these links as follows:
-
-    .. code-block:: console
-
-       $ ln -s /opt/local/bin/gcc-mp-4.4 /usr/local/cuda/bin/gcc
-       $ ln -s /opt/local/bin/g++-mp-4.4 /usr/local/cuda/bin/g++
-
-MMap String
-^^^^^^^^^^^
-
-Now let's try the `MMap String demo <http://github.com/seqan/seqan/tree/develop/demos/cuda/mmap.cu>`_.
-This demo maps a text file in memory, copies it on the device and uses Thrust to count the number of occurrences of a given character into the file.
-
-.. code-block:: console
-
-    $ make demo_cuda_mmap
-    $ echo "THIS IS A TEST" > test.txt
-    $ bin/demo_cuda_mmap test.txt T
-    3
-
-FM-index counting
-^^^^^^^^^^^^^^^^^
-
-The `FM-index counting demo <http://github.com/seqan/seqan/tree/develop/demos/cuda/count.cu>`_ builds an FM-index over a static text.
-Given a set of patterns, the program counts - both on the host and on the device - the total number of occurrences of all patterns in the text.
-
-.. code-block:: console
-
-    $ make demo_cuda_count
-    $ bin/demo_cuda_count ACGTACGTACGTACGT ACGT GTA
-    CPU Occurrences: 7
-    GPU Occurrences: 7
-
diff --git a/manual/source/HowTo/EditorSetup.rst b/manual/source/HowTo/EditorSetup.rst
deleted file mode 100644
index 114d3a8..0000000
--- a/manual/source/HowTo/EditorSetup.rst
+++ /dev/null
@@ -1,86 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _how-to-setup-your-editor:
-
-Setup Your Editor
------------------
-
-This page describes how to adjust your editor to the :ref:`SeqAn C++ Style <style-guide-cpp>`.
-
-Eclipse CDT
-~~~~~~~~~~~
-
-.. figure:: editor_setup_eclipse_space_indentation.png
-
-*  Open preference page of Eclipse:
-
-   *  [Windows/Linux] Menu -> Windows -> Preferences
-   *  [Mac OS] Menu -> Eclipse -> Preferences (Cmd-Key + ,)
-
-*  Within the *Preferences* select 'C/C++' and next select 'Code Style'.
-*  Note: If you have not prepared your own code style scheme, than select on of the existing built-in schemes and extend it according to the new SeqAn style guides.
-*  Push 'Edit' and select the tab 'Indention' in the appeared *Profile* window.
-*  Under the group 'Tab policy' select 'Spaces only' in the drop down menu.
-*  Set 'Indentation size' to 4.
-* Set 'Tab size' to 4.
-*  Rename the profile to your preferred name, e.g. *K&R - SeqAn*, if the changes you have made rely on the *K&R [built-in]* profile.
-*  Press 'OK'
-
-The new profile appears in the drop down menu and is selected
-automatically to be active.
-
-Visual Studio
-~~~~~~~~~~~~~
-
-.. figure:: editor_setup_VS_space_indentation.png
-
-*  Open 'Tools' in the Visual Studio Menu and click on 'Options'
-*  Click on 'Text Editor', then select 'C/C++' and open the 'Tabs' settings
-*  Set both 'Tab size' and 'Indent size' to 4 and make sure 'Insert spaces' is selected below.
-
-XCode
-~~~~~
-
-Xcode 3
-^^^^^^^
-
-.. figure:: indentation_settings_xcode3.png
-
-*  Open Xcode->Preferences... in the Xcode menu.
-*  Open the indentation settings.
-*  Choose Indentation in the top scroll panel (scroll right).
-*  Choose to insert spaces instead of tabs.
-*  Uncheck "Tab key inserts tag, not spaces".
-*  Set tab and indent width to 4.
-
-Xcode 4
-^^^^^^^
-.. figure:: indentation_settings_xcode4.png
-
-*  Open Xcode->Preferences... in the Xcode menu.
-*  Open the indentation settings.
-*  Choose Text Editiing in the top panel.
-*  Choose to insert spaces instead of tabs.
-*  Uncheck "Tab key inserts tag, not spaces".
-*  Under "Prefer indent using:" choose "Spaces".
-*  Set tab and indent width to 4.
-
-Vim
-~~~
-
-Append the following to your ``~/.vimrc``.
-
-::
-
-    set nosmartindent " smartindent (filetype indenting instead)
-    \set autoindent    " autoindent (should be overwrote by cindent or filetype indent)
-    set cindent       " do c-style indenting
-    set softtabstop=4 " unify
-    set shiftwidth=4  " unify
-    set tabstop=4     " unify
-    set copyindent    " but above all -- follow the conventions laid before us
-    set expandtab     " we do not want to type tabs
-
diff --git a/manual/source/HowTo/GenerateKnimeNodesExternalTools.rst b/manual/source/HowTo/GenerateKnimeNodesExternalTools.rst
deleted file mode 100644
index 0270d27..0000000
--- a/manual/source/HowTo/GenerateKnimeNodesExternalTools.rst
+++ /dev/null
@@ -1,430 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _how-to-generate-knime-nodes-for-external-tools:
-
-.. |br| raw:: html
-
-   <br />
-
-Generating KNIME Nodes for External Tools
------------------------------------------
-
-Prerequisites
-~~~~~~~~~~~~~
-
-| **KNIME SDK**
-|   You can download it from the `KNIME Download Site <http://www.knime.org/downloads/overview>`_.
-   We will use Version 2.8.
-   (We assume that you have installed it to ``$HOME/eclipse_knime_2.8.0``).
-| **git**
-|   For Downloading the latest samtools and GenericKnimeNodes.
-| **Apache Ant**
-|   The Generic KNIME Plugins project uses `Apache Ant <http://ant.apache.org/>`_ as the build system.
-   On Linux and Mac, you should be able to install it through your package manager.
-   For Windows, see the `Apache Ant Downloads <http://ant.apache.org/bindownload.cgi>`_ (note that samtools does not work on Windows so you will not be able to follow through with this tutorial on Windows).
-
-Running Example
-~~~~~~~~~~~~~~~
-
-We will adapt some functions from the `samtools <http://samtools.sf.net>`_ package to KNIME:
-
-| **BamToSam**
-|   This tool will execute ``samtools view -o ${OUT} ${IN}``.
-| **SamToBam**
-|   This tool will execute ``samtools view -Sb -o ${OUT} ${IN}``.
-| **SortBam**
-|   This tool will execute ``samtools sort -f -o ${OUT} ${IN}``.
-
-.. hint::
-
-    The ``-f`` flag is required for the integration of samtools without a  wrapper, since it would append ``.bam`` to ``${OUT}`` for getting the output name.
-    However, only the current trunk version from the `samtools GitHub project <https://github.com/samtools/samtools>`_ supports this flag.
-
-Preparation: Building samtools and Downloading GenericKnimeNodes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-As mentioned above, we have to build the current trunk version of samtools for the sort\_bam tool to work.
-The following shell commands download the current samtools trunk from GitHub and build samtools.
-We will work in a new directory *knime\_samtools* (we will assume that the directory is directly in your *$HOME* for the rest of the tutorial.
-
-.. code-block:: console
-
-    knime_samtools # git clone https://github.com/samtools/samtools
-    ...
-    knime_samtools # cd samtools
-    samtools # make
-    ...
-    samtools # ls -l samtools
-    -rwxr-xr-x 1 user group 1952339 May  7 16:36 samtools
-    samtools # cd ..
-    knime_samtools #
-
-Then, we need to download GenericKnimeNodes:
-
-.. code-block:: console
-
-    knime_samtools # git clone git://github.com/genericworkflownodes/GenericKnimeNodes.git
-
-Preparation: Installing KNIME File Handling
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-We need to install support for file handling nodes in KNIME.
-For this, open the window for installing Eclipse plugins; in the program's main menu: ``Help > Install New Software...``.
-
-Here, enter ``http://www.knime.org/update/2.8/`` into the ``Work with:`` field, enter ``file`` into the search box, and finally select ``KNIME File Handling Nodes`` in the list.
-Then, click ``Next`` and follow through with the installation of the plugin. When done, Eclipse must be restarted.
-
-.. figure:: GwnInstallFileHandlingNodes.png
-
-Overview
-~~~~~~~~
-
-KNIME nodes are shipped as Eclipse plugins.
-The **GenericKnimeNodes** (GWN) package provides the infrastructure to automatically generate such nodes from the description of their command line.
-The description of the command line is kept in XML files called Common Tool Descriptor (CTD) files.
-The input of the GWN package is a directory tree with the following structure:
-
-::
-
-    plugin_dir
-      │
-      ├── plugin.properties
-      │
-      ├── descriptors (place your ctd files and mime.types here)
-      │
-      ├── payload (place your binaries here)
-      │
-      ├── icons (the icons to be used must be here)
-      │
-      ├── DESCRIPTION (A short description of the project)
-      │
-      ├── LICENSE (Licensing information of the project)
-      │
-      └── COPYRIGHT (Copyright information of the project)
-
-| **plugin.properties**
-|   File with the plugin configuration.
-| **descriptors**
-|   Directory with the CTD files and a *mime.types* file.
-   This *mime.types* file contains a mapping between MIME types and file extensions.
-   There is one CTD file called *${app_name}.ctd*.
-| **payload**
-|   ZIP archives with the binaries are located here.
-   This directory has to be present even if the directory is empty.
-   Also, you need a file *binaries.ini* in this directory which can be empty or contain environment variable definitions as *name=value* lines.
-| **icons**
-|   Some icons:
-   A file *category.png* (15x15 px) for categories in the KNIME tool tree.
-   A file *splash.png* (50x50 px) with an icon to display in the KNIME splash screen.
-   One for each app, called *${app_name}.png*.
-| **DESCRIPTION**
-|   A text file with your project's description.
-| **LICENSE**
-|   A file with the license of the project.
-| **COPYRIGHT**
-|   A file with copyright information for the project.
-
-|br|
-
-The GWN project provides tools to convert such a plugin directory into an Eclipse plugin.
-This plugin can then be launched together with KNIME.
-The following picture illustrates the process.
-
-.. figure:: PluginWorkflow.png
-
-Obtaining the Demo Workflow Plugin Directory
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Please download the file :download:`workflow_plugin_dir.zip <workflow_plugin_dir.zip>` and look around in the archive.
-Also have a look into ``binaries_*_*.zip`` files in *payload*.
-The structure of this ZIP file is explained below in :ref:`Anatomy of a Plugin Directory <how-to-generate-knime-nodes-for-external-tools-anatomy-of-a-plugin-directory>`.
-
-Creating an Exclipse Plugin from the Plugin Directory
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The next step is to use GKN to create an Eclipse plugin from the workflow plugin directory.
-For this, change to the directory GenericKnimeNodes that we cloned using git earlier.
-We then execute ant and pass the variables *knime.sdk* with the path to the KNIME SDK that you downloaded earlier and *plugin.dir* with the path of our plugin directory.
-
-.. code-block:: console
-
-    knime_samtools # cd GenericKnimeNodes
-    GenericKnimeNodes # ant -Dknime.sdk=${HOME}/eclipse_knime_2.8.0 \
-                          -Dplugin.dir=$HOME/knime_samtools/workflow_plugin_dir
-
-This generates an Eclipse plugin with wrapper classes for our nodes.
-The generated files are within the *generated\_plugin* directory of the directory *GenericKnimeNodes*.
-
-Importing the Generated Projects into Eclipse
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In the main menu ``File > Import...``. In the ``Import`` window, select ``General > Existing Project Into Workspace``
-
-.. figure:: GwnImport1.png
-
-In the next dialog, click ``Browse...`` next to ``Select root directory``.
-
-.. figure:: GwnImport2.png
-
-Then, select the directory of your "GenericWorkflowNodes" checkout.
-The final dialog should then look as follows.
-
-Clicking finish will import (1) the GKN classes themselves and (2) your generated plugin's classes.
-
-.. figure:: GwnImport3.png
-
-Now, the packages of the GKN classes and your plugin show up in the left ``Package Explorer`` pane of Eclipse.
-
-.. figure:: GwnImportDone.png
-
-.. hint::
-
-    **Information:** Synchronizing ``ant`` build result with Eclipse.
-
-    Since the code generation happens outside of Eclipse, there are often problems caused by Eclipse not recognizing updates in generated *.java* files.
-    After each call to ``ant``, you should clean all built files in all projects by selecting the menu entries ``Project > Clean...``, selecting ``Clean all projects``, and then clicking ``OK``.
-
-    Then, select all projects in the ``Package Explorer``, right-click and select ``Refresh``.
-
-Launching Eclipse with our Nodes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Finally, we have to launch KNIME with our plugin. We have to create a run configuration for this. Select ``Run > Run Configurations...``.
-
-In the ``Run Configurations`` window, select ``Eclipse Application`` on the left, then create the small ``New launch configuration`` icon on the top left (both marked in the following screenshot).
-Now, set the ``Name`` field to "KNIME", select ``Run an application`` and select ``org.knime.product.KNIME_APPLICATION`` in the drop down menu.
-Finally, click ``Run``.
-
-.. figure:: GwnRunConfiguration.png
-
-Your tool will show up in the tool selector in ``community/SAM and BAM``.
-
-.. figure:: SamPlugins.png
-
-Here is an example KNIME workflow with the nodes that we just created.
-
-.. figure:: SamWorkflow.png
-
-.. _how-to-generate-knime-nodes-for-external-tools-anatomy-of-a-plugin-directory:
-
-Anatomy of a Plugin Directory
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can download a ZIP archive of the resulting project :download:`from the attached file workflow\_plugin\_dir.zip <workflow_plugin_dir.zip>`.
-We will ignore the contents of *icons*, *DESCRIPTION*, *LICENSE*, and *COPYRIGHT* here.
-You can see all relevant details by inspecting the ZIP archive.
-
-The file plugin.properties
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The content of the file plugin.properties is as follows:
-
-::
-
-    # the package of the plugin
-    pluginPackage=net.sf.samtools
-
-    # the name of the plugin
-    pluginName=SamTools
-
-    # the version of the plugin
-    pluginVersion=0.1.17
-
-    # the path (starting from KNIMEs Community Nodes node)
-    nodeRepositoyRoot=community
-
-    executor=com.genericworkflownodes.knime.execution.impl.LocalToolExecutor
-    commandGenerator=com.genericworkflownodes.knime.execution.impl.CLICommandGenerator
-
-When creating your own plugin directory, you only have to update the
-first three properties:
-
-| **pluginPackage**
-|   A Java package path to use for the Eclipse package.
-| **pluginName**
-|   A CamelCase name of the plugin.
-| **pluginVersion**
-|   Version of the Eclipse plugin.
-
-|br|
-
-The file descriptors/mime.types
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The contents of the file is as shown below.
-Each line contains the definition of a `MIME type <http://en.wikipedia.org/wiki/Internet_media_type>`_.
-The name of the mime type is followed (separated by a space) by the file extensions associated with the file type.
-There may be no ambiguous mappings, i.e. giving the extension for both *application/x-fasta* and *application/x-fastq*.
-
-::
-
-    application/x-fasta fa fasta
-    application/x-fastq fq fastq
-    application/x-sam sam
-    application/x-bam bam
-
-The file descriptors/samtools\_sort\_bam.ctd
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This file descripes the SortBam tool for sorting BAM files.
-We do not describe the files *descriptors/samtools\_sam\_to\_bam.ctd* and *descriptors/samtools\_bam\_to\_sam.ctd* in the same detail as you can interpolate from here.
-
-.. code-block:: xml
-
-    <?xml version="1.0" encoding="UTF-8"?>
-    <tool name="SortBam" version="0.1.17" category="SAM and BAM"
-          docurl="http://samtools.sourceforge.net/samtools.shtml">
-        <executableName>samtools</executableName>
-        <description><![CDATA[SAMtools BAM Sorting.]]></description>
-        <manual><![CDATA[samtools sort]]></manual>
-        <docurl>Direct links in docs</docurl>
-        <cli>
-            <clielement optionIdentifier="sort" isList="false" />
-            <clielement optionIdentifier="-f" isList="false" />
-
-            <!-- Following clielements are arguments. You should consider
-                 providing a help text to ease understanding. -->
-            <clielement optionIdentifier="" isList="false">
-                <mapping referenceName="bam_to_sam.argument-0" />
-            </clielement>
-            <clielement optionIdentifier="" isList="false">
-                <mapping referenceName="bam_to_sam.argument-1" />
-            </clielement>
-
-            <clielement optionIdentifier="" isList="false">
-                <mapping referenceName="bam_to_sam.argument-2" />
-            </clielement>
-        </cli>
-        <PARAMETERS version="1.4"
-                    xsi:noNamespaceSchemaLocation="http://open-ms.sourceforge.net/schemas/Param_1_4.xsd"
-                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-            <NODE name="bam_to_sam" description="SAMtools BAM to SAM conversion">
-                <ITEM name="argument-0" value="" type="input-file" required="true"
-                      description="Input BAM file." supported_formats="*.bam" />
-                <ITEM name="argument-1" value="" type="output-file" required="true"
-                      description="Output BAM file." supported_formats="*.bam" />
-                <ITEM name="argument-2" value="" type="string" required="true"
-                      description="Sort by query name (-n) instead of position (default)" restrictions=",-n" />
-            </NODE>
-        </PARAMETERS>
-    </tool>
-
-Here is a description of the tags and the attributes:
-
-| **/tool**
-|    The root tag.
-| **/tool at name**
-|    The CamelCase name of the tool as shown in KNIME and part of the class name.
-| **/tool at version**
-|    The version of the tool.
-| **/toll at category**
-|    The path to the tool's category.
-| **/tool/executableName**
-|    The name of the executable in the payload ZIP's *bin* dir.
-| **/tool/description**
-|    Description of the tool.
-| **/tool/manual**
-|    Long description for the tool.
-| **/tool/docurl**
-|    URL to the tool's documentation.
-| **/tool/cli**
-|    Container for the ``<clielement>`` tags.
-    These tags describe the command line options and arguments of the tool.
-    The command line options and arguments can be mapped to parameters which are configurable through the UI.
-    The parameters are stored in **tool/PARAMETERS**
-| **/tool/cli/clielement**
-|    There is one entry for each command line argument and option.
-| **/tool/cli/clielement at optionIdentifier**
-|    The identifier of the option on the command line.
-    For example, for the ``-l`` option of ``ls``, this is ``-l``.
-| **/tool/cli/clielement at isList**
-|    Whether or not the parameter is a list and multiple values are possible.
-    One of ``true`` and ``false``.
-| **/tool/cli/clielement/mapping**
-|    Provides the mapping between a CLI element and a PARAMETER.
-| **/tool/cli/clielement/mapping at referenceName**
-|    The path of the parameter.
-    The parameters ``<ITEM>`` s in **tool/PARAMETERS** are stored in nested ``<NODE>`` tags and this gives the path to the specific parameter.
-| **/tool/PARAMETERS**
-|    Container for the ``<NODE>`` and ``<ITEM>`` tags.
-    The ``<PARAMETERS>`` tag is in a diferent namespace and provides its own XSI.
-| **/tool/PARAMETERS at version**
-|    Format version of the ``<PARAMETERS>`` section.
-| **/tool/PARAMETERS/.../NODE**
-|    A node in the parameter tree.
-    You can use such nodes to organize the parameters in a hierarchical fashion.
-| **/tool/PARAMETERS/.../NODE at advanced**
-|    Boolean that marks an option as advanced.
-| **/tool/PARAMETERS/.../NODE at name**
-|    Name of the parameter section.
-| **/tool/PARAMETERS/.../NODE at description**
-|    Documentation of the parameter section.
-| **/tool/PARAMETERS/.../ITEM**
-|    Description of one command line option or argument.
-| **/tool/PARAMETERS/.../ITEM at name**
-|    Name of the option.
-| **/tool/PARAMETERS/.../ITEM at value**
-|    Default value of the option.
-    When a default value is given, it is passed to the program, regardless of whether the user touched the default value or not.
-| **/tool/PARAMETERS/.../ITEM at type**
-|    Type of the parameter.
-    Can be one of ``string``, ``int``, ``double``, ``input-file``, ``output-path``, ``input-prefix``, or ``output-prefix``.
-    Booleans are encoded as ``string`` with the ``restrictions`` attribute set to ``"true,false"``.
-| **/tool/PARAMETERS/.../ITEM at required**
-|    Boolean that states whether the parameter is required or not.
-| **/tool/PARAMETERS/.../ITEM at description**
-|    Documentation for the user.
-| **/tool/PARAMETERS/.../ITEM at supported_formats**
-|    A list of supported file formats.
-    Example: ``"*.bam,*.sam"``.
-| **/tool/PARAMETERS/.../ITEM at restrictions**
-|    In case of ``int`` or ``double`` types, the restrictions have the form ``min:``, ``:max``, ``min:max`` and give the smallest and/or largest number a value can have.
-    In the case of ``string`` types, restrictions gives the list of allowed values, e.g. ``one,two,three``.
-    If the type is ``string`` and the restriction field equals ``"true,false"``, then the parameter is a boolean and set in case ``true`` is selected in the GUI.
-    A good example for this would be the ``-l`` flag of the ``ls`` program.
-
-|br|
-
-.. hint::
-
-    If a ``<clielement>`` does provides an empty <tt>optionIdentifier</tt> then it is a positional argument without a flag (examples for parameters with flags are ``-n 1``, ``--number 1``).
-
-    If a ``<clielement>`` does not provide a ``<mapping>`` then it is passed regardless of whether has been configured or not.
-
-The ``samtools_sort_bam`` tool from above does not provide any configurable options but only two arguments.
-These are by convention called ``argument-0`` and ``argument-1`` but could have any name.
-
-Also, we always call the program with ``view -f`` as the first two command line arguments since we do not provide a mapping for these arguments.
-
-The directory payload
-^^^^^^^^^^^^^^^^^^^^^
-
-The directory ``payload`` contains ZIP files with the executable tool binaries.
-There is one ZIP file for each platform (Linux, Windows, and Mac Os X) and each architecture (32 bit and 64 bit).
-The names of the files are ``binaries_${plat}_${arch}.zip`` where ``${plat}`` is one of ``lnx``, ``win``, or ``mac``, and ``${arch}`` is one of ``32`` and ``64``.
-
-Each ZIP file contains a directory ``/bin`` which is used as the search path for the binary given by ``<executableName>``.
-Also, it provides an INI file ``/binaries.ini`` which can be used to define environment variables to set before executing any tools.
-
-The ZIP file can also provide other files in directories such as ``/share``.
-
-Generating KNIME Nodes for SeqAn Apps
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can generate a workflow plugin directory for the SeqAn apps using the ``prepare_workflow_plugin`` target.
-Then, you can generate the Knime Nodes/Eclipse plugins as described above using ant.
-
-.. code-block:: console
-
-    ~ # git clone https://github.com/seqan/seqan seqan-src
-    ~ # mkdir -p seqan-build/release
-    ~ # cd seqan-build/release
-    release # cmake ../../seqan-src
-    release # make prepare_workflow_plugin
-    release # cd ~/knime_samtools/GenericKnimeNodes
-    GenericKnimeNodes # ant -Dknime.sdk=${HOME}/eclipse_knime_2.8.0 \
-                          -Dplugin.dir=$HOME/seqan-trunk-build/release/workflow_plugin_dir
-
diff --git a/manual/source/HowTo/GenerateSeqAnKnimeNodes.rst b/manual/source/HowTo/GenerateSeqAnKnimeNodes.rst
deleted file mode 100644
index 9534903..0000000
--- a/manual/source/HowTo/GenerateSeqAnKnimeNodes.rst
+++ /dev/null
@@ -1,441 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-.. _how-to-generate-seqan-knime-nodes:
-
-Generating SeqAn KNIME Nodes
-============================
-
-Learning Objective
-  You will learn how to import applications written in SeqAn into the KNIME Eclipse plugin.
-  After completing this tutorial, you will be able to use self made applications in KNIME workflows.
-
-Difficulty
-  Very basic
-
-Duration
-  1 h
-
-Prerequisites
-  KNIME SDK
-    You can download it from the `KNIME Download Site <http://www.knime.org/downloads/overview>`_ (at the end of the page).
-    We will use Version 2.8.
-    (We assume that you have installed it to *$HOME/eclipse_knime_2.8.* but it could be anywhere).
-  git
-    For Downloading the latest GenericKnimeNodes.
-  Apache Ant
-   The Generic KNIME Plugins project uses `Apache Ant <http://ant.apache.org/>`_ as the build system.
-   On Linux and Mac, you should be able to install it through your package manager.
-   For Windows, see the `Apache Ant Downloads <http://ant.apache.org/bindownload.cgi>`_.
-
-We will generate a simple SeqAn KNIME node from a SeqAn app that reads a fastq file from disk and just writes it back.
-We start by installing the necessary software.
-Afterwards, we explain which steps are required in order to prepare a SeqAn app to be used in KNIME, and finally, we show how to import the app into KNIME.
-The following section provides some more information on the plugin structure and where the necessary information is stored.
-Note that this tutorial is mainly written for MacOS and Linux users, but Windows users should also be able to follow through.
-
-Preparation: Downloading GenericKnimeNodes
--------------------------------------------
-
-We will work in a new directory *knime_node* (we will assume that the directory is directly in your *$HOME* for the rest of the tutorial).
-
-.. code-block:: console
-
-   knime_node # git clone git://github.com/genericworkflownodes/GenericKnimeNodes.git
-
-Preparation: Installing KNIME File Handling
--------------------------------------------
-
-We need to install support for file handling nodes in KNIME.
-For this, open the window for installing Eclipse plugins; in the program's main menu: ``Help > Install New Software...``.
-
-Here, enter ``http://www.knime.org/update/2.8/`` into the ``Work with:`` field, enter ``file`` into the search box, and finally select ``KNIME File Handling Nodes`` in the list.
-Then, click ``Next`` and follow through with the installation of the plugin.
-When done, Eclipse must be restarted.
-
-.. figure:: GwnInstallFileHandlingNodes.png
-
-Generating KNIME Nodes for SeqAn Apps
--------------------------------------
-
-You can generate a workflow plugin directory for the SeqAn apps using the ``prepare_workflow_plugin`` target.
-
-In order for your application to turn into a KNIME node, you have to add the line:
-
-.. code-block:: cmake
-
-    set (SEQAN_CTD_EXECUTABLES ${SEQAN_CTD_EXECUTABLES} <my_app> CACHE INTERNAL "")
-
-to the end of the *CMakeList.txt* file of your application.
-
-The following example will demonstrate the creation of a SeqAn app and its registration as a KNIME node.
-
-.. code-block:: console
-
-   ~ # git clone http://github.com/seqan/seqan seqan-src
-   ~ # cd seqan-src
-   ~ # ./util/bin/skel.py app knime_node .
-
-Now open the file *seqan-src/apps/knime_node/knime_node.cpp* and replace its content with the one found in *seqan-src/demos/knime_node.cpp*.
-The code implements the reading of a read file and its storage somewhere on the disk.
-
-In order to register the app ``knime_node``, you simply add the line
-
-.. code-block:: cmake
-
-    set (SEQAN_CTD_EXECUTABLES ${SEQAN_CTD_EXECUTABLES} knime_node CACHE INTERNAL "")
-
-to *seqan-trunk/apps/knime_node/CMakeList.txt*.
-
-Then, you can generate the Knime Nodes/Eclipse plugin.
-First, change to the directory GenericKnimeNodes that we cloned using git earlier.
-We then execute ant and pass the variables ``knime.sdk`` with the path to the KNIME SDK that you downloaded earlier and ``plugin.dir`` with the path of our plugin directory.
-
-.. code-block:: console
-
-   ~ # mkdir -p seqan-build/release
-   ~ # seqan-build/release
-   ~ # cd seqan-build/release
-   release # cmake ../../seqan-src
-   release # make prepare_workflow_plugin
-   release # cd ~/knime_node/GenericKnimeNodes
-   GenericKnimeNodes # ant -Dknime.sdk=${HOME}/eclipse_knime_2.8.0 \
-                         -Dplugin.dir=${HOME}/seqan-build/release/workflow_plugin_dir
-
-The generated files are within the *generated_plugin* directory of the directory *GenericKnimeNodes*.
-
-If you ran into problems, you may copy the file `knime_node_app.zip <https://github.com/seqan/knime_node_template/archive/master.zip>`_, which contains the ``knime_node`` app and the adjusted *CMakeList.txt* file.
-Unpack this file in the ``apps`` directory.
-You still have to call *ant* though.
-
-Importing the Generated Projects into Eclipse
----------------------------------------------
-
-In the main menu, go to ``File > Import...``.
-In the ``Import`` window, select ``General > Existing Project Into Workspace``.
-
-.. figure:: GwnImport1.png
-
-In the next dialog, click ``Browse...`` next to ``Select root directory``.
-
-.. figure:: GwnImport2.png
-
-Then, select the directory of your "GenericWorkflowNodes" checkout.
-The final dialog should then look as follows.
-
-Clicking finish will import (1) the GKN classes themselves and (2) your generated plugin's classes.
-
-.. figure:: GwnImport3.png
-
-Now, the packages of the GKN classes and your plugin show up in the left ``Package Explorer`` pane of Eclipse.
-
-.. figure:: GwnImportDone.png
-
-.. tip::
-
-    Synchronizing ``ant`` build result with Eclipse.
-
-    Since the code generation happens outside of Eclipse, there are often problems caused by Eclipse not recognizing updates in generated ''.java'' files.
-    After each call to ``ant``, you should clean all built files in all projects by selecting the menu entries ``Project > Clean...``, selecting ``Clean all projects``, and then clicking ``OK``.
-
-    Then, select all projects in the ``Package Explorer``, right-click and select ``Refresh``.
-
-.. tip::
-
-    You might get a warning with in one of the KNIME files.
-    In order to remove it you need to download the KNIME's test environment, but you can just ignore the error in our case.
-
-Launching Eclipse with our Nodes
---------------------------------
-
-Finally, we have to launch KNIME with our plugin.
-We have to create a run configuration for this.
-Select ``Run > Run Configurations...``.
-
-In the ``Run Configurations`` window, select ``Eclipse Application`` on the left, then click the small ``New launch configuration`` icon on the top left (both marked in the following screenshot).
-Now, set the ``Name`` field to "KNIME", select ``Run an application`` and select ``org.knime.product.KNIME_APPLICATION`` in the drop down menu.
-Finally, click ``Run``.
-
-.. figure:: GwnRunConfiguration.png
-
-Your tool will show up in the tool selector in ``Community Nodes``.
-
-.. important::
-
-   Sometimes KNIME complains about the Java version you are using.
-   In that case, you can use Java 1.6. as shown in :ref:`how-to-choose-the-jre-version`.
-
-.. important::
-
-   If you are running a MacOS you might need to add *-Xms40m -Xmx512M -XX:MaxPermSize=256m -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -server* to the ``VM argument`` box of your ``Run Configuration``.
-
-You should now be able to use the created node in a KNIME workflow.
-The following sections provide additional information about the structure of the plugin and where the crucial information is stored.
-
-Plugin Overview
----------------
-
-KNIME nodes are shipped as Eclipse plugins.
-The **GenericKnimeNodes** (GWN) package provides the infrastructure to automatically generate such nodes from the description of their command line.
-The description of the command line is kept in XML files called Common Tool Descriptor (CTD) files.
-The input of the GWN package is a directory tree with the following structure.
-
-::
-
-    plugin_dir
-      │
-      ├── plugin.properties
-      │
-      ├── descriptors (place your ctd files and mime.types here)
-      │
-      ├── payload (place your binaries here)
-      │
-      ├── icons (the icons to be used must be here)
-      │
-      ├── DESCRIPTION (A short description of the project)
-      │
-      ├── LICENSE (Licensing information of the project)
-      │
-      └── COPYRIGHT (Copyright information of the project)
-
-plugin.properties
- File with the plugin configuration.
-
-descriptors
- Directory with the CTD files and a ``mime.types`` file.
- This ``mime.types`` file contains a mapping between MIME types and file extensions.
- There is one CTD file called ``${app_name}.ctd``.
-
-payload
- ZIP archives with the binaries are located here.
- This directory has to be present even if the directory is empty.
- Also, you need a file ``binaries.ini`` in this directory which can be empty or contain environment variable definitions as ``name=value`` lines.
-
-icons
- Some icons:
- A file ``category.png`` (15x15 px) for categories in the KNIME tool tree.
- A file ''splash.png' (50x50 px) with an icon to display in the KNIME splash screen.
- One for each app, called ``${app_name}.png``
-
-DESCRIPTION
- A text file with your project's description.
-
-LICENSE
- A file with the license of the project.
-
-COPYRIGHT
- A file with copyright information for the project.
-
-The GWN project provides tools to convert such a plugin directory into an Eclipse plugin.
-This plugin can then be launched together with KNIME.
-The following picture illustrates the process.
-
-.. figure:: PluginWorkflow.png
-
-Anatomy of a Plugin Directory
------------------------------
-
-You can download a ZIP archive of the resulting project :download:`from the attached file workflow_plugin_dir.zip <workflow_plugin_dir.zip>`.
-We will ignore the contents of ``icons``, ``DESCRIPTION``, ``LICENSE``, and ``COPYRIGHT`` here.
-You can see all relevant details by inspecting the ZIP archive.
-
-The file plugin.properties
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The content of the file plugin.properties is as follows:
-
-.. code-block:: ini
-
-    # the package of the plugin
-    pluginPackage=de.seqan
-
-    # the name of the plugin
-    pluginName=SeqAn
-
-    # the version of the plugin
-    pluginVersion=1.5.0.201309051220
-
-    # the path (starting from KNIMEs Community Nodes node)
-    nodeRepositoyRoot=community
-
-    executor=com.genericworkflownodes.knime.execution.impl.LocalToolExecutor
-    commandGenerator=com.genericworkflownodes.knime.execution.impl.CLICommandGenerator
-
-When creating your own plugin directory, you only have to update the first three properties:
-
-pluginPackage
- A Java package path to use for the Eclipse package.
-
-pluginName
- A CamelCase name of the plugin.
-
-pluginVersion
- Version of the Eclipse plugin.
-
-The file descriptors/mime.types
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The contents of the file is as shown below.
-Each line contains the definition of a `MIME type <http://en.wikipedia.org/wiki/Internet_media_type>`_.
-The name of the mime type is followed (separated by a space) by the file extensions associated with the file type.
-There may be no ambiguous mappings, i.e. giving the extension for both ``application/x-fasta`` and ``application/x-fastq``.
-
-::
-
-    application/x-fasta fa fasta
-    application/x-fastq fq fastq
-    application/x-sam sam
-    application/x-bam bam
-
-The file descriptors/samtools_sort_bam.ctd
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This file descripes the SortBam tool for sorting BAM files.
-We do not describe the files ``descriptors/samtools_sam_to_bam.ctd`` and ``descriptors/samtools_bam_to_sam.ctd`` in the same detail as you can interpolate from here.
-
-.. code-block:: xml
-
-   <?xml version="1.0" encoding="UTF-8"?>
-   <tool name="KnimeNode" version="0.1" docurl="http://www.seqan.de" category="" >
-           <executableName>knime_node</executableName>
-           <description>This is a very simple KNIME node providing an input and output port.</description>
-           <manual>This is a very simple KNIME node providing an input and output port. The code should be modified such that the node does something useful
-   </manual>
-           <cli>
-                   <clielement optionIdentifier="--write-ctd-file-ext" isList="false">
-                           <mapping referenceName="knime_node.write-ctd-file-ext" />
-                   </clielement>
-                   <clielement optionIdentifier="--arg-1-file-ext" isList="false">
-                           <mapping referenceName="knime_node.arg-1-file-ext" />
-                   </clielement>
-                   <clielement optionIdentifier="--outputFile" isList="false">
-                           <mapping referenceName="knime_node.outputFile" />
-                   </clielement>
-                   <clielement optionIdentifier="--outputFile-file-ext" isList="false">
-                           <mapping referenceName="knime_node.outputFile-file-ext" />
-                   </clielement>
-                   <clielement optionIdentifier="--quiet" isList="false">
-                           <mapping referenceName="knime_node.quiet" />
-                   </clielement>
-                   <clielement optionIdentifier="--verbose" isList="false">
-                           <mapping referenceName="knime_node.verbose" />
-                   </clielement>
-                   <clielement optionIdentifier="--very-verbose" isList="false">
-                           <mapping referenceName="knime_node.very-verbose" />
-                   </clielement>
-                   <!-- Following clielements are arguments. You should consider providing a help text to ease understanding. -->
-                   <clielement optionIdentifier="" isList="false">
-                           <mapping referenceName="knime_node.argument-0" />
-                   </clielement>
-           </cli>
-           <PARAMETERS version="1.6.2" xsi:noNamespaceSchemaLocation="http://open-ms.sourceforge.net/schemas/Param_1_6_2.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-                   <NODE name="knime_node" description="This is a very simple KNIME node providing an input and output port.">
-                           <ITEM name="write-ctd-file-ext" value="" type="string" description="Override file extension for --write-ctd" required="false" advanced="true" tags="file-ext-override,gkn-ignore" />
-                           <ITEM name="arg-1-file-ext" value="" type="string" description="Override file extension for argument 1" restrictions="fastq,fq" required="false" advanced="true" tags="file-ext-override" />
-                           <ITEM name="outputFile" value="result.fastq" type="output-file" description="Name of the multi-FASTA output." supported_formats="*.fastq,*.fq" required="false" advanced="false" />
-                           <ITEM name="outputFile-file-ext" value="" type="string" description="Override file extension for --outputFile" restrictions="fastq,fq" required="false" advanced="true" tags="file-ext-override,gkn-ignore" />
-                           <ITEM name="quiet" value="false" type="string" description="Set verbosity to a minimum." restrictions="true,false" required="false" advanced="false" />
-                           <ITEM name="verbose" value="false" type="string" description="Enable verbose output." restrictions="true,false" required="false" advanced="false" />
-                           <ITEM name="very-verbose" value="false" type="string" description="Enable very verbose output." restrictions="true,false" required="false" advanced="false" />
-                           <ITEM name="argument-0" value="" type="input-file" description="" supported_formats="*.fastq,*.fq" required="true" advanced="false" />
-                   </NODE>
-           </PARAMETERS>
-   </tool>
-
-Here is a description of the tags and the attributes:
-
-``/tool``
-  The root tag.
-``/tool at name``
-  The CamelCase name of the tool as shown in KNIME and part of the class name.
-``/tool at version``
-  The version of the tool.
-/toll at category``
-  The path to the tool's category.
-``/tool/executableName``
-  The name of the executable in the payload ZIP's ``bin`` dir.
-``/tool/description``
-  Description of the tool.
-``/tool/manual``
-  Long description for the tool.
-``/tool/docurl``
-  URL to the tool's documentation.
-``/tool/cli``
-  Container for the ``<clielement>`` tags.
-  These tags describe the command line options and arguments of the tool.
-  The command line options and arguments can be mapped to parameters which are configurable through the UI.
-  The parameters are stored in ``/tool/PARAMETERS``
-``/tool/cli/clielement``
-  There is one entry for each command line argument and option.
-``/tool/cli/clielement at optionIdentifier``
-  The identifier of the option on the command line.
-  For example, for the ``-l``` option of ``ls``, this is ``-l``.
-``/tool/cli/clielement at isList``
-  Whether or not the parameter is a list and multiple values are possible.
-  One of ``true`` and ``false``.
-``/tool/cli/clielement/mapping``
-  Provides the mapping between a CLI element and a PARAMETER.
-``/tool/cli/clielement/mapping at referenceName``
-  The path of the parameter.
-  The parameters ``<ITEM>``\ s in ``/tool/PARAMETERS`` are stored in nested ``<NODE>`` tags and this gives the path to the specific parameter.
-``/tool/PARAMETERS``
-  Container for the ``<NODE>`` and ``<ITEM>`` tags.
-  The ``<PARAMETERS>`` tag is in a diferent namespace and provides its own XSI.
-``/tool/PARAMETERS at version``
-  Format version of the ``<PARAMETERS>`` section.
-``/tool/PARAMETERS/.../NODE``
-  A node in the parameter tree.
-  You can use such nodes to organize the parameters in a hierarchical fashion.
-``/tool/PARAMETERS/.../NODE at advanced``
-  Boolean that marks an option as advanced.
-``/tool/PARAMETERS/.../NODE at name``
-  Name of the parameter section.
-``/tool/PARAMETERS/.../NODE at description``
-  Documentation of the parameter section.
-``/tool/PARAMETERS/.../ITEM``
-  Description of one command line option or argument.
-``/tool/PARAMETERS/.../ITEM at name``
-  Name of the option.
-``/tool/PARAMETERS/.../ITEM at value``
-  Default value of the option.
-  When a default value is given, it is passed to the program, regardless of whether the user touched the default value or not.
-``/tool/PARAMETERS/.../ITEM at type``
-  Type of the parameter.
-  Can be one of ``string``, ``int``, ``double``, ``input-file``, ``output-path``, ``input-prefix``, or ``output-prefix``.
-  Booleans are encoded as ``string`` with the ``restrictions`` attribute set to ``"true,false"``.
-``/tool/PARAMETERS/.../ITEM at required``
-  Boolean that states whether the parameter is required or not.
-``/tool/PARAMETERS/.../ITEM at description``
-  Documentation for the user.
-``/tool/PARAMETERS/.../ITEM at supported_formats``
-  A list of supported file formats.
-  Example: ``"*.bam,*.sam"``.
-``/tool/PARAMETERS/.../ITEM at restrictions``
-  In case of ``int`` or ``double`` types, the restrictions have the form ``min:``, ``:max``, ``min:max`` and give the smallest and/or largest number a value can have.
-  In the case of ``string`` types, restrictions gives the list of allowed values, e.g. ``one,two,three``.
-  If the type is ``string`` and the restriction field equals ``"true,false"``, then the parameter is a boolean and set in case ``true`` is selected in the GUI.
-  A good example for this would be the ``-l`` flag of the ``ls`` program.
-
-.. tip::
-
-    If a ``<clielement>`` does provides an empty ``optionIdentifier`` then it is a positional argument without a flag (examples for parameters with flags are ``-n 1``, ``--number 1``).
-
-    If a ``<clielement>`` does not provide a ``<mapping>`` then it is passed regardless of whether has been configured or not.
-
-The ``samtools_sort_bam`` tool from above does not provide any configurable options but only two arguments.
-These are by convention called ``argument-0`` and ``argument-1`` but could have any name.
-
-Also, we always call the program with ``view -f`` as the first two command line arguments since we do not provide a mapping for these arguments.
-
-The directory payload
-^^^^^^^^^^^^^^^^^^^^^
-
-The directory ``payload`` contains ZIP files with the executable tool binaries.
-There is one ZIP file for each platform (Linux, Windows, and Mac Os X) and each architecture (32 bit and 64 bit).
-The names of the files are ``binaries_${plat}_${arch}.zip`` where ``${plat}`` is one of ``lnx``, ``win``, or ``mac``, and ``${arch}`` is one of ``32`` and ``64``.
-
-Each ZIP file contains a directory ``/bin`` which is used as the search path for the binary given by ``<executableName>``.
-Also, it provides an INI file ``/binaries.ini`` which can be used to define environment variables to set before executing any tools.
-
-The ZIP file can also provide other files in directories such as ``/share``.
diff --git a/manual/source/HowTo/GwnImport1.png b/manual/source/HowTo/GwnImport1.png
deleted file mode 100644
index 9d49493..0000000
Binary files a/manual/source/HowTo/GwnImport1.png and /dev/null differ
diff --git a/manual/source/HowTo/GwnImport2.png b/manual/source/HowTo/GwnImport2.png
deleted file mode 100644
index 242d7e2..0000000
Binary files a/manual/source/HowTo/GwnImport2.png and /dev/null differ
diff --git a/manual/source/HowTo/GwnImport3.png b/manual/source/HowTo/GwnImport3.png
deleted file mode 100644
index 6328f0b..0000000
Binary files a/manual/source/HowTo/GwnImport3.png and /dev/null differ
diff --git a/manual/source/HowTo/GwnImportDone.png b/manual/source/HowTo/GwnImportDone.png
deleted file mode 100644
index d15a0f7..0000000
Binary files a/manual/source/HowTo/GwnImportDone.png and /dev/null differ
diff --git a/manual/source/HowTo/GwnInstallFileHandlingNodes.png b/manual/source/HowTo/GwnInstallFileHandlingNodes.png
deleted file mode 100644
index 7850324..0000000
Binary files a/manual/source/HowTo/GwnInstallFileHandlingNodes.png and /dev/null differ
diff --git a/manual/source/HowTo/GwnRunConfiguration.png b/manual/source/HowTo/GwnRunConfiguration.png
deleted file mode 100644
index 121f6d6..0000000
Binary files a/manual/source/HowTo/GwnRunConfiguration.png and /dev/null differ
diff --git a/manual/source/HowTo/InstallContribsWindows.rst b/manual/source/HowTo/InstallContribsWindows.rst
deleted file mode 100644
index 2f1184a..0000000
--- a/manual/source/HowTo/InstallContribsWindows.rst
+++ /dev/null
@@ -1,46 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _how-to-install-contribs-on-windows:
-
-Installing Contribs On Windows
-------------------------------
-
-Download Contribs
-~~~~~~~~~~~~~~~~~
-
-The downloadable contribs contain precompiled library binaries (zlib, libbz2) for Windows by the supported compilers.
-The contribs come in 32 bit and 64 bit variants.
-
-* `Download contribs for 32 bit builds <http://ftp.seqan.de/contribs/seqan-contrib-D20130710-x86.zip>`_.
-* `Download contribs for 64 bit builds <http://ftp.seqan.de/contribs/seqan-contrib-D20130710-x64.zip>`_.
-
-You can install both variants in parallel if you want to do both 32 bit and 64 bit builds.
-
-Extract Contribs
-~~~~~~~~~~~~~~~~
-
-Now, extract the downloaded ZIP file either to ``C:\Program Files`` or ``C:\``.
-
-**After downloading the 64 bit variant**, you should now have a folder named ``C:\Program Files\seqan-contrib-D20130710-x64`` or a folder named ``C:\seqan-contrib-D20130710-x64``.
-
-**After downloading the 32 bit variant**, you should now have a folder named ``C:\Program Files\seqan-contrib-D20130710-x86`` or a folder named ``C:\seqan-contrib-D20130710-x86``.
-
-Re-run CMake
-~~~~~~~~~~~~
-
-You now have to re-run CMake to find the libraries.
-You also have to remove the CMake Cache so it finds the new libraries.
-You might also need to update your SeqAn Checkout.
-
-The following assumes that your git clone is in ``c:\seqan-src`` and your build directory is ``c:\seqan-build\vs10``.
-
-.. code-block:: console
-
-    > cd c:\seqan-src
-    > git pull
-    > cd c:\seqan-build\vs10
-    > del CMakeCache.txt
-    > cmake c:\seqan-src -G "Visual Studio 2010"
diff --git a/manual/source/HowTo/SamPlugins.png b/manual/source/HowTo/SamPlugins.png
deleted file mode 100644
index 0739fa5..0000000
Binary files a/manual/source/HowTo/SamPlugins.png and /dev/null differ
diff --git a/manual/source/HowTo/SamWorkflow.png b/manual/source/HowTo/SamWorkflow.png
deleted file mode 100644
index 666e7fc..0000000
Binary files a/manual/source/HowTo/SamWorkflow.png and /dev/null differ
diff --git a/manual/source/HowTo/SetupNightlyBuilds.rst b/manual/source/HowTo/SetupNightlyBuilds.rst
deleted file mode 100644
index 7a7aa3b..0000000
--- a/manual/source/HowTo/SetupNightlyBuilds.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-.. _how-to-setup-nightly-builds:
-
-Setup Nightly Builds
---------------------
-
-Subversion Repository
-~~~~~~~~~~~~~~~~~~~~~
-
-There is a Subversion repository for the nightly build scripts at http://svn.mi.fu-berlin.de/seqan-nightly/trunk/.
-
-Caveats
-~~~~~~~
-
-32bit: bzlib and zlib
-^^^^^^^^^^^^^^^^^^^^^
-
-On Debian, you need the packages *libz-dev* and *libbz2-dev*.
-If you want to do 32 bit builds, you have to install *lib32bz2-dev* and *lib32z1-dev*.
diff --git a/manual/source/HowTo/UseParallelBuildDirectories.rst b/manual/source/HowTo/UseParallelBuildDirectories.rst
deleted file mode 100644
index f7e4b01..0000000
--- a/manual/source/HowTo/UseParallelBuildDirectories.rst
+++ /dev/null
@@ -1,153 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _how-to-use-parallel-build-directories:
-
-Using Parallel Build Directories
---------------------------------
-
-Motivation
-~~~~~~~~~~
-
-Why would you need more than one build directory or more than one IDE project file?
-This is very useful
-
-* if you want use the same set of source files from multiple version of the same IDE (e.g. two Visual Studio versions),
-* if you want to have both debug builds (for debugging) and release builds (for performance tests) in paralell,
-* if you have your source files stored on a shared network location and want to have build files on two computer and/or operating systems, or
-* if you want to build the sources with two different compilers or compiler versions at the same time (e.g. to see whether you can figure out compiler errors better from the messages by another compiler).
-
-This How-To also serves as a collection of CMake command lines for copy-and-paste.
-
-The Overall Idea
-~~~~~~~~~~~~~~~~
-
-The overall idea is very simple: you create one build directory for each variant and call CMake in each of it using different settings.
-
-If you want to have different IDE project files then you use different *CMake generators*.
-In most IDEs, there is an option to select debug or release builds.
-For the CMake Makefile generator, however, we can select the *build types* using a command line option.
-Also, the compiler program (and version) can be switched using a command line option.
-
-Generating Parallel IDE Project Files (Visual Studio, Xcode etc.)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You will only be able to generate files for Xcode when on Mac Os X, for Visual Studio when on Windows and so on.
-
-The following section assumes that you have a subdirectory of your SeqAn checkout called ``build``.
-We will create subdirectories for each IDE project we create.
-
-**Creating Directories**
-
-For example, if we have installed Visual studio 8, 9, and 10 and want to create project files for each, we might use the following commands to create the directories:
-
-.. code-block:: console
-
-    > cd seqan-trunk\build
-    > mkdir vs8
-    > mkdir vs9
-    > mkdir vs10
-
-For XCode on Mac, we could do the following:
-
-.. code-block:: console
-
-    $ cd seqan-trunk/build
-    $ mkdir xcode
-
-Note that you can choose any directory name.
-You have to take care that no such directory exists before.
-Previously generated project files can break the generation process!
-
-**Generating Project Files**
-
-We can now use CMake to generate the project fiels specifying a generator with the command line parameter ``-G``.
-
-Let us generate the Visual Studio projects in the directories we mentioned above:
-
-.. code-block:: console
-
-    > cd vs8
-    > cmake -G "Visual Studio 8 2005" ..\..\..
-    > cd ..\vs9
-    > cmake -G "Visual Studio 9 2008" ..\..\..
-    > cd ..\vs10
-    > cmake -G "Visual Studio 10" ..\..\..
-
-Click *more...* to see the commands for 64 bit builds.
-
-.. container:: foldable
-
-   .. code-block:: console
-
-      > cd vs8
-      > cmake -G "Visual Studio 8 2005 Win64" ..\..\..
-      > cd ..\vs9
-      > cmake -G "Visual Studio 9 2008 Win64" ..\..\..
-      > cd ..\vs10
-      > cmake -G "Visual Studio 10 Win64" ..\..\..
-
-On Mac Os X, we can generate XCode build files as follows:
-
-.. code-block:: console
-
-    # cd xcode
-    # cmake -G "Xcode" ../../..
-
-How To Make Release/Debug builds
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-When using the Makefile generator, it is useful to have multiple build
-types. CMake supports the following build types:
-
-**Different Build Types**
-
-Debug
-  No optimization, with debug symbols.
-
-Release
- Optimization, without debug symbols.
-
-RelWithDebInfo
-  Optimization, with debug symbols.
-  Useful for profiling.
-
-MinSizeRel
-  Size-optimized release binary without debug symbols.
-
-You can select the build type with a command line parameter to ``cmake``, e.g. ``-DCMAKE_BUILD_TYPE=Debug`` or ``-DCMAKE_BUILD_TYPE=Release``.
-
-**Picking A Compiler**
-
-You can pick a C++ compiler using the command line parameter to ``cmake``, e.g. ``-DCMAKE_CXX_COMPILER=g++-4.1`` or ``-DCMAKE_CXX_COMPILER=clang++``.
-
-**Creating Directories**
-
-Let's create a build directory with the system's default compiler both in debug and release mode.
-Also, we create one directory for the Clang compiler in debug mode.
-
-.. code-block:: console
-
-    # cd seqan-trunk/build
-    # mkdir Debug
-    # mkdir Release
-    # mkdir Debug-clang
-
-Note that you should use fresh directories.
-Previously generated Makefiles can break the generation process!
-
-**Generating Project Files**
-
-.. code-block:: console
-
-    # cd Debug
-    # cmake ../..
-    # cd ../Release
-    # cmake -DCMAKE_BUILD_TYPE=Release ../..
-    # cd ../Debug-clang
-    # cmake -DCMAKE_CXX_COMPILER=clang++
-
-Note that when using clang, you actually have to use ``clang++`` and not ``clang`` (although ``clang++`` usually only is a symlink to ``clang``).
-If you use ``clang`` then all C++ features will be disabled and you will get configuration errors.
diff --git a/manual/source/HowTo/UseSeqAnNodesInKnime.rst b/manual/source/HowTo/UseSeqAnNodesInKnime.rst
deleted file mode 100644
index 3302c08..0000000
--- a/manual/source/HowTo/UseSeqAnNodesInKnime.rst
+++ /dev/null
@@ -1,93 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _how-to-use-seqan-nodes-in-knime:
-
-Creating Workflows with KNIME
-=============================
-
-`KNIME <http://www.knime.org>`_ is a well established data analysis framework which supports the generation of workflows for data analysis.
-In the following, we describe how to use SeqAn applications in KNIME.
-
-Install SeqAn in KNIME
-----------------------
-
-The Installation of the SeqAn NGS Toolbox in KNIME is very easy.
-Download the latest KNIME release from the KNIME website.
-In KNIME click on ``Help > Install new Software``.
-
-.. figure:: install-knime-1.png
-
-In the opening dialog choose ``Add...``.
-
-.. figure:: install-knime-2.png
-
-In the opening dialog fill in the following Information:
-
-``Name``
-  ``KNIME Nightly Unstable``
-``Location``
-  ``http://update.knime.org/community-contributions/trunk/``
-
-.. figure:: install-knime-3.png
-
-After pressing OK, KNIME will show you all the contents of the added Update Site, containing also the SeqAn nodes.
-
-.. figure:: install-knime-4.png
-
-Select the SeqAn NGS Toolbox and click Next.
-Follow the instructions.
-After a restart of KNIME the SeqAn nodes will be available under ``Community Nodes``.
-
-Add your own application to KNIME
----------------------------------
-
-Using the CTD and a node generator program, all SeqAn applications that use the :dox:`ArgumentParser` can be made available to run in KNIME.
-This is done automatically and nightly for all applications in the master branch on `github <https://github.com/seqan/seqan/tree/master>`_ that are listed in the CMAKE variable ``SEQAN_CTD_EXECUTABLES``.
-The auto-generated KNIME nodes of these apps are then uploaded to the KNIME community node server and can easily be used by all KNIME users.
-
-The following two steps are required to make your application KNIME-ready.
-
-Adapt your applications to use the argument parser
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Follow the :ref:`tutorial-parsing-command-line-arguments` tutorial and adapt your application to use only the :dox:`ArgumentParser` to parse command line arguments.
-Especially, take care to:
-
-#. Declare your input and output file names as such via ``ArgParseArgument::INPUT_FILE`` and ``ArgParseArgument::OUTPUT_FILE``.
-#. Detect the file format from the file extension (and not from a dedicated file format option).
-   This can be done, for example, with :dox:`guessFormatFromFilename guessFormatFromFilename()` on an :dox:`AutoSeqFormat` object to detect a particular sequence format (e.g. FASTA) in a predefined set of formats.
-#. For input/output files define a list of possible extensions via :dox:`ArgumentParser#setValidValues setValidValues()` (e.g. "fa fasta"). This list of possible extensions can be generated with :dox:`ArgumentParser#getFileExtensions getFileExtensions()` for a :dox:`TagSelector` of predefined file formats (e.g. AutoSeqFormat).
-#. Avoid mutual exclusive options or other constraints that cannot be not represented by the ArgumentParser, simply ignore one of them (depending on a behavioral option).
-   See the ArgumentParser tutorial if you need to define a numerical interval of possible values or a finite set of argument options.
-#. Give default values.
-
-Register your application to be considered by the node generator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Add the following section to the ``CMakeLists.txt`` file in your application folder (replace ``razers`` by your executable name):
-
-.. code-block:: cmake
-
-    # ----------------------------------------------------------------------------
-    # Setup Common Tool Description for Generic Workflow Nodes
-    # ----------------------------------------------------------------------------
-
-    # Include executable razers in CTD structure.
-    set (SEQAN_CTD_EXECUTABLES ${SEQAN_CTD_EXECUTABLES} razers CACHE INTERNAL "")
-
-Use existing and contribute new workflows
------------------------------------------
-
-With the steps described above you will be able to set up your own workflows in KNIME.
-If you want to contribute a workflow to the SeqAn community or use workflows from others you can do that on
-https://github.com/seqan/knime_seqan_workflows
-
-To contribute your own workflow, simply clone the workflow git repository into your own github repository and add a new folder ``WORKFLOWNAME_workflow``.
-In KNIME export your workflow without the data files as a ``.zip`` file into that folder.
-Provide a README, a screenshot and some examples as well.
-Just have a look into existing workflow folders to get a notion.
-
-After everything is ready, add and commit the new folder into your github repository and make a github pull request to the original workflow repository (https://github.com/seqan/knime\_seqan\_workflows) and - voila - it will be shared with the community.
diff --git a/manual/source/HowTo/editor_setup_VS_space_indentation.png b/manual/source/HowTo/editor_setup_VS_space_indentation.png
deleted file mode 100644
index cf9dee3..0000000
Binary files a/manual/source/HowTo/editor_setup_VS_space_indentation.png and /dev/null differ
diff --git a/manual/source/HowTo/editor_setup_eclipse_space_indentation.png b/manual/source/HowTo/editor_setup_eclipse_space_indentation.png
deleted file mode 100644
index e953b70..0000000
Binary files a/manual/source/HowTo/editor_setup_eclipse_space_indentation.png and /dev/null differ
diff --git a/manual/source/HowTo/indentation_settings_xcode3.png b/manual/source/HowTo/indentation_settings_xcode3.png
deleted file mode 100644
index 64540ae..0000000
Binary files a/manual/source/HowTo/indentation_settings_xcode3.png and /dev/null differ
diff --git a/manual/source/HowTo/indentation_settings_xcode4.png b/manual/source/HowTo/indentation_settings_xcode4.png
deleted file mode 100644
index f29ae43..0000000
Binary files a/manual/source/HowTo/indentation_settings_xcode4.png and /dev/null differ
diff --git a/manual/source/HowTo/install-knime-1.png b/manual/source/HowTo/install-knime-1.png
deleted file mode 100644
index 32ec66e..0000000
Binary files a/manual/source/HowTo/install-knime-1.png and /dev/null differ
diff --git a/manual/source/HowTo/install-knime-2.png b/manual/source/HowTo/install-knime-2.png
deleted file mode 100644
index 36c4f46..0000000
Binary files a/manual/source/HowTo/install-knime-2.png and /dev/null differ
diff --git a/manual/source/HowTo/install-knime-3.png b/manual/source/HowTo/install-knime-3.png
deleted file mode 100644
index 6f826b1..0000000
Binary files a/manual/source/HowTo/install-knime-3.png and /dev/null differ
diff --git a/manual/source/HowTo/install-knime-4.png b/manual/source/HowTo/install-knime-4.png
deleted file mode 100644
index c9ab6d1..0000000
Binary files a/manual/source/HowTo/install-knime-4.png and /dev/null differ
diff --git a/manual/source/HowTo/workflow_plugin_dir.zip b/manual/source/HowTo/workflow_plugin_dir.zip
deleted file mode 100644
index 15397a5..0000000
Binary files a/manual/source/HowTo/workflow_plugin_dir.zip and /dev/null differ
diff --git a/manual/source/Infrastructure.rst b/manual/source/Infrastructure.rst
deleted file mode 100644
index b50795b..0000000
--- a/manual/source/Infrastructure.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-.. _infrastructure:
-
-Infrastructure
---------------
-
-This part describes the infrastructure and software tools supporting the SeqAn project.
-This includes a description of the repository structure, an overview of the CMake-based build system and the nightly build (aka continuous integration) system.
-
-.. toctree::
-   :glob:
-   :maxdepth: 1
-
-   Infrastructure/*
diff --git a/manual/source/Infrastructure/BuildSystem.rst b/manual/source/Infrastructure/BuildSystem.rst
deleted file mode 100644
index 56aef95..0000000
--- a/manual/source/Infrastructure/BuildSystem.rst
+++ /dev/null
@@ -1,73 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _infrastructure-build-system:
-
-The CMake-Based Build System
-----------------------------
-
-We use `CMake <http://www.cmake.org>`_ for building the SeqAn demos, applications and tests.
-This wiki page explains our usage of CMake, the variables we define and how to extend the build scripts for new demos, apps etc.
-`CMake's documentation (v2.8) <http://www.cmake.org/cmake/help/cmake-2-8-docs.html>`_ supplements this document.
-The `documentation of CTest (v2.8) <http://www.cmake.org/cmake/help/ctest-2-8-docs.html>`_ could also be of interest.
-
-.. todo:: Document usage of "dummy targets" for IDE project file generation.
-
-Directory Layout
-~~~~~~~~~~~~~~~~
-
-The CMake files live in *projects/library/cmake*:
-
-.. code-block:: console
-
-    $ cd projects/library/cmake
-    $ tree
-    .
-    |-- CMakeLists.txt
-    |-- apps
-    |   `-- CMakeLists.txt
-    |-- demos
-    |   `-- CMakeLists.txt
-    |-- seqan
-    |   `-- CMakeLists.txt
-    `-- tests
-        |-- CMakeLists.txt
-        `-- CTestConfig.cmake
-
-Target Structure
-~~~~~~~~~~~~~~~~
-
-There is a target for each program to be built.
-
-Additionally, there is a target called *Seqan* that represents the library.
-When using the GCC, we need to build the generated forward headers.
-In this case, *Seqan* also depends on the generated forward headers and the *CMakeList.txt* files define how to generate these generated forwards.
-
-External Dependencies
-~~~~~~~~~~~~~~~~~~~~~
-
-SeqAn is a C++ header library and thus does not need to build itself.
-However, some applications have dependencies on external libraries, such as `Boost <http://www.boost.org>`_ or `Threading Building Blocks <http://www.threadingbuildingblocks.org/>`_.
-
-The policy is to install these external dependencies on your system and let CMake find them.
-
-The policy for missing dependencies is not to build the programs that depend on them and print an error message.
-
-
-Adding New Programs
-~~~~~~~~~~~~~~~~~~~
-
-The process of adding a new demo, test or app is really simple: create a new directory *my_app* under *projects/library/app*, ''my_test" under *projects/test* or *my_demo* under *projects/demos*.
-Within this directory create a new file *my_app.cpp*, *my_test.cpp* or *my_demo.cpp* and write your program.
-
-Go to *projects/library/cmake* in your shell and execute ``cmake .`` again.
-The new target will appear in your IDE.
-If you use Makefiles then you can now type ``make my_app``, ``make my_test`` or ``make my_demo``.
-
-Multiple Build Types
-~~~~~~~~~~~~~~~~~~~~
-
-You can call CMake in different directories to be able to build Debug, Release etc. binaries without having to re-cmake.
-The process is described `here in the CMake wiki <http://www.vtk.org/Wiki/CMake_FAQ#How_can_I_build_multiple_modes_without_switching_.3F>`_.
diff --git a/manual/source/StyleGuide/DoxApiDocs.rst b/manual/source/Infrastructure/Contribute/DoxApiDocs.rst
similarity index 92%
rename from manual/source/StyleGuide/DoxApiDocs.rst
rename to manual/source/Infrastructure/Contribute/DoxApiDocs.rst
index bba40d4..7d30e42 100644
--- a/manual/source/StyleGuide/DoxApiDocs.rst
+++ b/manual/source/Infrastructure/Contribute/DoxApiDocs.rst
@@ -1,12 +1,11 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
+.. _infra-contribute-dox:
 
-.. _style-guide-dox-api-docs:
-
-Dox API Docs
-------------
+API Documentation System (dox)
+==============================
 
 Since the 1.4.1 release, SeqAn uses a new documentation system. The
 syntax is similar to `Doxygen <http://doxygen.sf.net>`_ but slightly
@@ -16,9 +15,9 @@ metafunctions, (3) adding the idea of interface functions and (4) an
 extension to SeqAn-specific things like documenting concepts.
 
 General Documentation Structure
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-------------------------------
 
-Dox comments are placed in C-style comments with an exclamation mark, see below.
+Dox comments are placed in C-style comments with an exclamation mark (see below).
 The first dox tag should be placed on the next line, each line should begin with a correctly indented star.
 The first line only contains the slash-star-exclamation-mark and the last line only contains the star-slash.
 
@@ -31,7 +30,7 @@ The first line only contains the slash-star-exclamation-mark and the last line o
 
 The documentation and the code are independent. Each item to be documented (adaption, class, concept, enum, function, group, macro, metafunction, page, tag, typedef, variable) has to be epxlicitely given (see tags below). The available top level tags are [#adaption @adaption], [#class @class], [#concept @concept], [#defgroup @defgroup], [#enum @enum], [#fn @fn], [#macro @macro], [#metafunction @mfn], [#page @page], [#tag @tag], [#typedef @typedef], and [#variable @var].
 
-Each top level tag creates a documentation entry. For example, the
+Each top-level tag creates a documentation entry. For example, the
 following defines a class ``Klass`` with two global interface functions
 ``f1`` and ``f2`` for this class:
 
@@ -103,15 +102,15 @@ Images are included using ``<img src="${PATH}">`` where ``${PATH}`` is
 relative to the source image directory.
 
 Tag Documentation
-~~~~~~~~~~~~~~~~~
+-----------------
 
 Below, we differentiate between **names** and **labels**.
 
 **Names** are used to identify documentation items and must follow
-extended C++ identifier rules. An sub name consists of only alphanumeric
+extended C++ identifier rules. A sub name consists of only alphanumeric
 characters and the underscore is allowed, must not start with a number.
 Sub names can be glued together with ``::`` for class members and ``#``
-for interface functions. In contracts, **labels** are used for the
+for interface functions. In contrast, **labels** are used for the
 display to the user. For example, the alloc string has the name
 ``AllocString`` but the label "Alloc String", the constructor of
 ``AllocString`` has name ``AllocString::String``, and its length
@@ -124,7 +123,7 @@ function has name ``AllocString#length``.
 
 Top-level tag.
 
-Definition of an adaption with the given name and an optional label.
+Defines an adaption with the given name and an optional label.
 
 An adaption is a collection of global interface functions and
 metafunctions that adapt a type outside the SeqAn library to a concept
@@ -145,7 +144,7 @@ adapted to the interface of the ``StringConcept`` concept.
 
 Second-level entry.
 
-Assign an alias name for a function, metafunction, class, concept, or
+Assigns an alias name for a function, metafunction, class, concept, or
 enum. The list of aliases will be printed for each code entry. Also, the
 aliases will be incorporated into search results.
 
@@ -188,7 +187,7 @@ can use HTML in the description.
 
 Top-level tag.
 
-Define a class with the given name ``ClassName`` and an optional label.
+Defines a class with the given name ``ClassName`` and an optional label.
 
 .. code-block:: cpp
 
@@ -264,7 +263,7 @@ Note that you can use the extension value ``.console`` to see console output.
 
 Top-level tag.
 
-Create a documentation entry for a concept with the given name and an
+Creates a documentation entry for a concept with the given name and an
 optional label. All concept names should have the suffix ``Concept``.
 Use the fake keyword ``concept`` in the ``@signature``.
 
@@ -288,7 +287,7 @@ construct used in the documentation.
 
 Top-level tag.
 
-Create a documentation entry for a group with a given name and an
+Creates a documentation entry for a group with a given name and an
 optional label. Groups are for rough grouping of global functions and/or
 tags.
 
@@ -328,7 +327,7 @@ or concept.
 
 Second-level entry.
 
-Mark a given function, metafunction, class, concept, or enum as
+Marks a given function, metafunction, class, concept, or enum as
 deprecated. A deprecation message will be generated in the API
 documentation.
 
@@ -349,7 +348,7 @@ documentation.
 
 Top-level entry.
 
-Documentation for an enum with given name and optional label.
+Provides documentation for an enum with given name and optional label.
 
 .. code-block:: cpp
 
@@ -399,7 +398,7 @@ concept.
 
 Top-level entry.
 
-Document a function (global, global interface, or member) with given
+Documents a function (global, global interface, or member) with given
 name and label. The type of the function is given by its name.
 
 .. code-block:: cpp
@@ -416,7 +415,7 @@ name and label. The type of the function is given by its name.
 
 Second-level entry.
 
-Give the required ``#include`` path for a code entry.
+Gives the required ``#include`` path for a code entry.
 
 **Note:** Use angular brackets as below for SeqAn includes.
 
@@ -453,7 +452,7 @@ Marks a class to implement a given concept.
 
 Second-level entry.
 
-Include a C++ source file as an example. See [#snippet @snippet] for
+Includes a C++ source file as an example. See [#snippet @snippet] for
 including fragments.
 
 .. code-block:: cpp
@@ -473,7 +472,7 @@ including fragments.
 
 Second-level entry.
 
-Mark a given function, metafunction, class, concept, or enum as
+Marks a given function, metafunction, class, concept, or enum as
 internal. You can also provide a comment that is ignored/not used in the
 output.
 
@@ -494,7 +493,7 @@ output.
 
 In-text tag.
 
-Tag to link to a documentation entry with a given label.
+Provides tag to link to a documentation entry with a given label.
 
 The difference to [#see @see] is that ``@link .. @endlink`` is used
 inline in text whereas ``@see`` is a second-level tag and adds a ``see``
@@ -518,7 +517,7 @@ external resources.
 
 Top-level tag.
 
-Document a macro.
+Documents a macro.
 
 .. code-block:: cpp
 
@@ -541,7 +540,7 @@ Document a macro.
 
 Top-level tag.
 
-Document a metafunction.
+Documents a metafunction.
 
 .. code-block:: cpp
 
@@ -567,7 +566,7 @@ Document a metafunction.
 
 Second-level entry.
 
-Add an informative note to a function, metafunction, class, concept,
+Adds an informative note to a function, metafunction, class, concept,
 enum, or group.
 
 .. code-block:: cpp
@@ -587,7 +586,7 @@ enum, or group.
 
 Top-level entry.
 
-Create a documentation page.
+Creates a documentation page.
 
 .. code-block:: cpp
 
@@ -612,7 +611,7 @@ Create a documentation page.
 
 Second-level entry.
 
-Document a value (and non-type) parameter from a function or member
+Documents a value (and non-type) parameter from a function or member
 function.
 
 .. code-block:: cpp
@@ -633,7 +632,7 @@ function.
 
 **Signature** ``@return Type Label``
 
-Define the return value for a function or metafunction.
+Defines the return value for a function or metafunction.
 
 Also see the example for [#param @param].
 
@@ -661,7 +660,7 @@ metafunction then use a ``TXyz`` return type in ``@return`` and document
 
 **Signature** ``@return Exception Label``
 
-Add note on a function or macro throwing an exception.
+Adds a note on a function or macro throwing an exception.
 
 .. code-block:: cpp
 
@@ -681,7 +680,7 @@ Add note on a function or macro throwing an exception.
 
 **Signature** ``@datarace Description``
 
-Describe possible data races for functions and macros.
+Describes possible data races for functions and macros.
 If this value is not specified it defaults to ``Thread safety unknown!``
 
 .. code-block:: cpp
@@ -716,7 +715,7 @@ See the example for [#page @page].
 
 Second-level entry.
 
-Add "see also" link to a documentation entry.
+Adds "see also" link to a documentation entry.
 
 .. code-block:: cpp
 
@@ -751,7 +750,7 @@ And here is the file with the snippet.
 
 Top-level entry.
 
-Document a tag. Mostly, you would group tags in a group using [#defgroup
+Documents a tag. Mostly, you would group tags in a group using [#defgroup
 @defgroup].
 
 .. code-block:: cpp
@@ -770,7 +769,7 @@ Document a tag. Mostly, you would group tags in a group using [#defgroup
 
 Second-level entry.
 
-Document a template parameter of a metafunction or class template.
+Documents a template parameter of a metafunction or class template.
 
 .. code-block:: cpp
 
@@ -789,7 +788,7 @@ Document a template parameter of a metafunction or class template.
 
 Top-level entry.
 
-Document a typedef.
+Documents a typedef.
 
 .. code-block:: cpp
 
@@ -827,7 +826,7 @@ Top-level entry. Document a global variable or member variable.
 **Signature** ``@val EnumType EnumValueName``
 
 Top-level entry.
-Document an enum value.
+Documents an enum value.
 
 .. code-block:: cpp
 
@@ -856,7 +855,7 @@ Document an enum value.
 
 Second-level entry.
 
-Add a warning to a function, metafunction, class, concept, enum, or group.
+Adds a warning to a function, metafunction, class, concept, enum, or group.
 
 .. code-block:: cpp
 
@@ -869,7 +868,7 @@ Add a warning to a function, metafunction, class, concept, enum, or group.
     void f();
 
 Best Practice
-~~~~~~~~~~~~~
+-------------
 
 This section describes the best practice when writing documentation.
 
@@ -954,7 +953,7 @@ metafunction or otherwise depends on the input type, use ``TResult`` or
 so and document it with ``@return``.
 
 HTML Subset
-~~~~~~~~~~~
+-----------
 
 You can use inline HTML to format your description and also for creating
 links.
@@ -1085,13 +1084,13 @@ Documenting Enums
      */
 
 Difference to Doxygen
-~~~~~~~~~~~~~~~~~~~~~
+---------------------
 
-If you already know Doxygen, the following major difference apply.
+If you already know Doxygen, the following major differences apply.
 
 * The documentation is more independent of the actual code.
   Doxygen creates a documentation entry for all functions that are present in the code and allows the additional documentation, e.g. using ``@fn`` for adding functions.
-  With the SeqAn dox system, you have to explicitely use a top level tag for adding documentationitems.
+  With the SeqAn dox system, you have to explicitely use a top level tag for adding documentation items.
 * Documentation entries are not identified by their signature but by their name.
 * We allow the definition of interface functions and metafunctions (e.g. ``@fn Klass#func`` and ``@mfn Klass#Func``) in addition to member functions (``@fn Klass::func``).
 * We do not allow tags with backslashes but consistently use at signs (``@``).
diff --git a/manual/source/Infrastructure/SeqAnWorkflow.rst b/manual/source/Infrastructure/Contribute/GitWorkflow.rst
similarity index 86%
rename from manual/source/Infrastructure/SeqAnWorkflow.rst
rename to manual/source/Infrastructure/Contribute/GitWorkflow.rst
index 7b4b05c..60cd132 100644
--- a/manual/source/Infrastructure/SeqAnWorkflow.rst
+++ b/manual/source/Infrastructure/Contribute/GitWorkflow.rst
@@ -1,15 +1,14 @@
-
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-.. _infrastructure-seqan-git-workflow:
+.. _infra-contribute-git:
 
-SeqAn Git Workflow
-------------------
+Git Workflow
+============
 
 Getting Started
-~~~~~~~~~~~~~~~
+---------------
 
 Install the command line client, download a GUI and have a look at the basic Atlassian tutorial.
 
@@ -39,7 +38,7 @@ Execute the following command to get the last sources:
 
 
 SeqAn Workflow
-~~~~~~~~~~~~~~
+--------------
 
 The SeqAn workflow is based on the `Gitflow <https://www.atlassian.com/git/workflows#workflow-gitflow>`_ workflow by `Atlassian`__. 
 The workflow is based on two persistent branches: `master <https://github.com/seqan/seqan/tree/master>`_ and `develop <https://github.com/seqan/seqan/tree/develop>`_. 
@@ -50,8 +49,8 @@ The most frequent development use cases are documented below.
 
 .. __: https://www.atlassian.com
 
-Develop a feature in a module or a app
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Develop a feature in a module or an app
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Follow the `steps <https://www.atlassian.com/git/workflows#workflow-gitflow>`_ in “Mary and John begin new features” and “Mary finishes her feature”.
 
@@ -68,10 +67,10 @@ Follow the `steps <https://www.atlassian.com/git/workflows#workflow-gitflow>`_ i
 
 * Create a new hotfix `branch <https://www.atlassian.com/git/tutorial/git-branches#branch>`_ based on `master <https://github.com/seqan/seqan/tree/master>`_.
 * Perform your changes and `commit <https://www.atlassian.com/git/tutorial/git-basics#commit>`_ them onto your hotfix branch.
-* When the fix is read, push your hotfix branch to repository on GitHub. Then:
-    1. `Create a GitHub pull request`__ to `master <https://github.com/seqan/seqan/tree/master>`_.
-    2. `Create a GitHub pull request`__ to `develop <https://github.com/seqan/seqan/tree/develop>`_.
-    3. The pull requests should contain only the commits from your hotfix branch.
+* When the fix is ready, push your hotfix branch to repository on GitHub. Then:
+    #. `Create a GitHub pull request`__ to `master <https://github.com/seqan/seqan/tree/master>`_.
+    #. `Create a GitHub pull request`__ to `develop <https://github.com/seqan/seqan/tree/develop>`_.
+    #. The pull requests should contain only the commits from your hotfix branch.
 * Delete your hotfix branch once it has been merged through the pull request.
 
 .. __: https://github.com/seqan/seqan/compare/master
@@ -81,13 +80,13 @@ Develop new modules and apps
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Create a new module or app `branch <https://www.atlassian.com/git/tutorial/git-branches#branch>`_ where to develop your new module or application.
-The branch should be based on master if your module or application doesn’t rely on any recently developed features.
+The branch should be based on master if your module or application doesn't rely on any recently developed features.
 If a new feature becomes necessary later on, the branch can be `rebased <https://www.atlassian.com/git/tutorial/rewriting-git-history#rebase>`_ onto develop.
 When the development is complete, the branch can be merged back into the corresponding base branch - either master or develop.
 
 Rules
-~~~~~
+-----
 
 * Never push feature branches to the SeqAn repository.
-* Sumit code reviews through GitHub.
+* Submit code reviews through GitHub.
 
diff --git a/manual/source/StyleGuide/Cpp.rst b/manual/source/Infrastructure/Contribute/StyleCpp.rst
similarity index 98%
rename from manual/source/StyleGuide/Cpp.rst
rename to manual/source/Infrastructure/Contribute/StyleCpp.rst
index 81689e8..9f73a82 100644
--- a/manual/source/StyleGuide/Cpp.rst
+++ b/manual/source/Infrastructure/Contribute/StyleCpp.rst
@@ -1,25 +1,24 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
+.. _infra-contribute-style-cpp:
 
-.. _style-guide-cpp:
+C++ Code Style
+==============
 
-SeqAn C++ Code Style
---------------------
-
-The aim of this style guide is to enforce a certain level of canonicality on all SeqAn code.
+The aim of this style guide is to enforce a certain level of canonicity on all SeqAn code.
 Besides good comments, having a common style guide is the key to being able to understand and change code written by others easily.
 
 (The style guide partially follows the `Google C++ Code Style Guide <http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml>`_.)
 
 C++ Features
-~~~~~~~~~~~~
+------------
 
 Reference Arguments
 ^^^^^^^^^^^^^^^^^^^
 
-We prefer reference arguments over pointer arguments.
+We prefer reference arguments to pointer arguments.
 Use ``const`` where possible.
 
 Use C-Style Logical Operators
@@ -36,7 +35,7 @@ Default Arguments
 ^^^^^^^^^^^^^^^^^
 
 Default arguments to global functions are problematic with generated forwards.
-They can be replaced with function overloading, so do not use them.
+They can be replaced with function overloading. So do not use them!
 
 .. container:: foldable
 
@@ -85,12 +84,12 @@ Virtual member functions cannot be inlined and are thus slow when used in tight
 ``static_cast<>``
 ^^^^^^^^^^^^^^^^^
 
-Prefer ``static_cast<>`` over C-style casts.
+Prefer ``static_cast<>`` to C-style casts.
 
 ``const_cast<>``
 ^^^^^^^^^^^^^^^^
 
-Use const-casts only to make an object const, do not remove consts.
+Use const-casts only to make an object const. Do not remove consts.
 Rather, use the ``mutable`` keyword on selected members.
 ``const_cast<>`` is allowed for interfacing with external (C) APIs where the ``const`` keyword is missing but which do not modify the variable.
 
@@ -147,7 +146,7 @@ Their advantage is that no copy of an object has to be made.
         }
 
 Code Quality
-~~~~~~~~~~~~
+------------
 
 Const-Correctness
 ^^^^^^^^^^^^^^^^^
@@ -172,13 +171,13 @@ Style Conformance
 ^^^^^^^^^^^^^^^^^
 
 Follow this code style whenever possible.
-However, prefer consistency over conformance.
+However, prefer consistency to conformance.
 
 If you are editing code that is non-conforming consider whether you could/should adapt the whole file to the new style.
-If this is not feasible, prefer consistency over conformance.
+If this is not feasible, prefer consistency to conformance.
 
 Semantics
-~~~~~~~~~
+---------
 
 Parameter Ordering
 ^^^^^^^^^^^^^^^^^^
@@ -201,7 +200,7 @@ Within these groups, the order should be from mandatory to optional.
         }
 
 Scoping, Helper Code
-~~~~~~~~~~~~~~~~~~~~
+--------------------
 
 Global Variables
 ^^^^^^^^^^^^^^^^
@@ -231,7 +230,7 @@ Tags in function arguments should always be const.
         }
 
 Structs and Classes
-~~~~~~~~~~~~~~~~~~~
+-------------------
 
 Visibility Specifiers
 ^^^^^^^^^^^^^^^^^^^^^
@@ -299,7 +298,7 @@ The constructor, destructor and few operators have to be defined inside the clas
     * assignment operator ``operator=()``
 
 Formatting
-~~~~~~~~~~
+----------
 
 Constructor Initialization Lists
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -343,14 +342,14 @@ All files should be UTF-8, non-ASCII characters should not occur in them neverth
 Spaces VS Tabs
 ^^^^^^^^^^^^^^
 
-Do not use tabs, use spaces.
+Do not use tabs! Use spaces.
 Use ``"\t"`` in strings instead of plain tabs.
 
 .. container:: foldablej
 
     After some discussion, we settled on this.
     All programmer's editors can be configured to use spaces instead of tabs.
-    We use a four spaces to a tab.
+    We use four spaces instead of a tab.
 
     There can be problems when indenting in for loops with tabs, for example.
     Consider the following (``-->|`` is a tab, ``_`` is a space):
@@ -725,7 +724,7 @@ When wrapped, not each parameter has to occur on its own line.
         }
 
 Naming Rules
-~~~~~~~~~~~~
+------------
 
 In the following, camel case means that the first letter of each word is written upper case, the remainder is written in lower case.
 Abbreviations of length 2 are kept in upper case, longer abbreviations are camel-cased.
@@ -865,7 +864,7 @@ In the documentation, classes have the same name as in the source code, e.g. the
 Specializations are named "``$SPEC $CLASS``\ ", e.g. "Concat StringSet", "Horspool Finder."
 
 Comments
-~~~~~~~~
+--------
 
 File Comments
 ^^^^^^^^^^^^^
@@ -895,7 +894,7 @@ Each file should begin with a file header.
 Class, Function, Metafunction, Enum, Macro DDDoc Comments
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-Each public class, function, metafunction, enum, and macro should be documented using :ref:`dox API docs<style-guide-dox-api-docs>`.
+Each public class, function, metafunction, enum, and macro should be documented using :ref:`dox API docs<infra-contribute-dox>`.
 Internal code should be documented, too.
 
 .. container:: foldable
@@ -945,7 +944,7 @@ The username is the username of the one writing the item, not the one to fix it.
 Use GitHub issues for this.
 
 Source Tree Structure
-~~~~~~~~~~~~~~~~~~~~~
+---------------------
 
 File Name Rules
 ^^^^^^^^^^^^^^^
@@ -964,7 +963,7 @@ File and directories are named all-lower case, words are separated by underscore
     * ``lcp_table.h``
 
 File Structure
-~~~~~~~~~~~~~~
+--------------
 
 Header ``#define`` guard
 ^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/manual/source/StyleGuide/Python.rst b/manual/source/Infrastructure/Contribute/StyleOther.rst
similarity index 58%
rename from manual/source/StyleGuide/Python.rst
rename to manual/source/Infrastructure/Contribute/StyleOther.rst
index 0602ba8..51d63c0 100644
--- a/manual/source/StyleGuide/Python.rst
+++ b/manual/source/Infrastructure/Contribute/StyleOther.rst
@@ -1,6 +1,13 @@
-.. _style-guide-python:
+.. sidebar:: ToC
 
-SeqAn Python Style Guide
+    .. contents::
+
+.. _infra-contribute-style-other:
+
+Other Style Guides
+==================
+
+Python Style Guide
 ------------------------
 
 Some very few points:
@@ -8,3 +15,8 @@ Some very few points:
 * Follow `PEP 8 <http://www.python.org/dev/peps/pep-0008/>`_.
 * Use single-quotes for strings, i.e. ``'this is a string'`` and double-quotes for docstrings, e.g. ``"""This is a docstring."""``.
 * Name functions, classes, constants as in SeqAn, variables and member variables are named ``lower_case_with_underscores``.
+
+JavaScript Style Guide
+----------------------------
+
+Follow the :ref:`SeqAn C++ Style Guide <infra-contribute-style-cpp>` in spirit.
diff --git a/manual/source/HowTo/WriteCommitMessages.rst b/manual/source/Infrastructure/Contribute/WriteCommitMessages.rst
similarity index 92%
rename from manual/source/HowTo/WriteCommitMessages.rst
rename to manual/source/Infrastructure/Contribute/WriteCommitMessages.rst
index c7c791b..e60fa70 100644
--- a/manual/source/HowTo/WriteCommitMessages.rst
+++ b/manual/source/Infrastructure/Contribute/WriteCommitMessages.rst
@@ -1,15 +1,14 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _how-to-write-commit-messages:
+.. _infra-contribute-git-commits:
 
 Writing Commit Messages
------------------------
+=======================
 
 Format
-~~~~~~
+------
 
 On every commit to our revision control system (currently SVN) please provide a commit message of the following form:
 
@@ -20,14 +19,13 @@ On every commit to our revision control system (currently SVN) please provide a
     Optional long description
 
 *  The first line starts with an arbitrary number of tags in square brackets, e.g. ``[CLASS1]`` or ``[CLASS1,CLASS2]``.
-   See below for a possible :ref:`list of classes <how-to-write-commit-messages-possible-classes>`.
+   See below for a possible list of classes.
 *  These tags are followed by a short description, try to keep the first line below 120 characters, 80 if possible.
 *  You can add an optional long description after an empty line.
 
-.. _how-to-write-commit-messages-possible-classes:
 
 Possible Classes
-~~~~~~~~~~~~~~~~
+----------------
 
 | **NOP**
 |    Only whitespace changes.
@@ -69,7 +67,7 @@ Possible Classes
 |    Such output is usually printed to ``stderr``.
 
 Examples
-~~~~~~~~
+--------
 
 Example: API Changes
 ^^^^^^^^^^^^^^^^^^^^
@@ -114,7 +112,7 @@ A fix that does not have a ticket:
     [FIX] Fixed reading of CIGAR string in module bam_io.
 
     There was a bug when reading the operation "F", which was translated to
-    FLABBERGASTED.  Fixed this to the documented behaviour.
+    FLABBERGASTED.  Fixed this to the documented behavior.
 
 Example: Internal Changes
 ^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -125,7 +123,7 @@ An internal change, reordering of code without changing the public API.
 
     [INTERNAL] Reordering code in module sequence so no more generated forwards are needed.
 
-An internal change might include test and improved comments.
+An internal change might include tests and improved comments.
 
 ::
 
diff --git a/manual/source/Infrastructure/Contribute/index.rst b/manual/source/Infrastructure/Contribute/index.rst
new file mode 100644
index 0000000..9d09d04
--- /dev/null
+++ b/manual/source/Infrastructure/Contribute/index.rst
@@ -0,0 +1,42 @@
+.. _infra-contribute:
+
+Contributer Guide
+=================
+
+SeqAn is on GitHub: http://github.com/seqan/seqan
+
+Use the GitHub page to fork SeqAn, create tickets and/or pull requests.
+You can also follow and like the project there!
+
+Contributing Code or Documentation
+----------------------------------
+
+If you are unfamiliar with git, you need to learn about it first.
+See the `Atlassian Git Tutoial <https://www.atlassian.com/git/tutorials/>`_
+for an introduction to Git.
+
+Next learn about the specific Git Workflow that we use and how we mark commits:
+
+  * :ref:`Git Workflow <infra-contribute-git>`
+  * :ref:`Writing Commit Messages <infra-contribute-git-commits>`
+
+If you are just changing something small, try to follow the style of whatever you are changing. If you contribute more code, please take the time to read:
+
+  * :ref:`C++ Code Style <infra-contribute-style-cpp>`
+  * :ref:`Other Code Styles <infra-contribute-style-other>`
+
+SeqAn's documentation system, called **dox**, is similar to doxygen, but not identical. Read about it here if you want to contribute documentation (all code should be documented!):
+
+  * :ref:`API Documentation System (dox) <infra-contribute-dox>`
+
+
+.. toctree::
+   :glob:
+   :titlesonly:
+   :hidden:
+
+   GitWorkflow
+   WriteCommitMessages
+   StyleCpp
+   StyleOther
+   DoxApiDocs
diff --git a/manual/source/Infrastructure/Documentation.rst b/manual/source/Infrastructure/Documentation.rst
deleted file mode 100644
index e1550bd..0000000
--- a/manual/source/Infrastructure/Documentation.rst
+++ /dev/null
@@ -1,50 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _infrastructure-documentation:
-
-Documentation Infrastructure
-============================
-
-The documentation of SeqAn has two parts: (1) the API documentation and (2) the manual that you are reading right now.
-
-SeqAn API Documentation
------------------------
-
-The SeqAn API documentation is created using a customly-written system called *dox*.
-You can find out more about the syntax in :ref:`style-guide-dox-api-docs`.
-
-You can build the documentation in the `dox` folder:
-
-.. code-block:: console
-
-   dox # ./dox_only.sh
-
-SeqAn Manual
-------------
-
-The SeqAn manual is created using the `Sphinx <http://sphinx-doc.org/>`_ documentation system.
-
-Follow these instructions to setup a local sphinx environment and build the manual:
-
-.. code-block:: console
-
-    $ virtualenv ~/seqan-manual-env
-    $ source ~/seqan-manual-env/bin/activate
-    (seqan-manual-env) $ cd ~/seqan/manual
-    (seqan-manual-env) $ pip install -r requirements.txt
-    (seqan-manual-env) $ make html
-
-Note that you have to first build the dox documentation since plugins for generating the ``:dox:`` links rely on the generated search index for checks.
-In order to get correct dox-links within the generated manuals, you have to specify the correct branch version.
-If you are working on the develop branch there is nothing to do, since ``'develop'`` is set by default.
-But if you are working on another branch, for example ``master``, you can set the correct branch by calling
-
-.. code-block:: console
-
-    (seqan-manual-env) $ export READTHEDOCS_VERSION='master'
-
-before you call ``make html`` as described in the previous step.
-This will generate the correct links to the master's version of the dox, i.e., ``http://docs.seqan.de/seqan/master/``
\ No newline at end of file
diff --git a/manual/source/Infrastructure/Manage/NightlyBuilds.rst b/manual/source/Infrastructure/Manage/NightlyBuilds.rst
new file mode 100644
index 0000000..e96b649
--- /dev/null
+++ b/manual/source/Infrastructure/Manage/NightlyBuilds.rst
@@ -0,0 +1,115 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _infra-manage-nightly:
+
+Nightly Builds
+==============
+
+Every night the master and develop branches of SeqAn are fetched and built on a variety of platforms. The results can be seen at the `SeqAn CDash site <http://www.seqan.de/cdash/index.php?project=SeqAn>`__.
+
+The scripts that facilitate this are hosted `here <http://svn.mi.fu-berlin.de/seqan-nightly/trunk/>`__. Please note that the ``linux`` and ``macosx`` directories are outdated, both are now handled by the ``unix`` directory.
+
+Unix Script variables
+---------------------
+
++---------------------+--------------------------------------------------------------------+
+| Variable            | Description                                                        |
++=====================+====================================================================+
+| ``BITS``            | ``32`` or ``64`` (64 by default)                                   |
++---------------------+--------------------------------------------------------------------+
+| ``GIT_BRANCH``      | ``master``, ``develop`` or a valid branch name (develop by default)|
++---------------------+--------------------------------------------------------------------+
+| ``COMPILERS``       | list of compiler-binaries to use                                   |
++---------------------+--------------------------------------------------------------------+
+| ``COMPILER_FLAGS``  | flags to append to the compiler calls                              |
++---------------------+--------------------------------------------------------------------+
+| ``WITH_MEMCHECK``   | if set to anything but 0 CTEST will perform memchecks              |
++---------------------+--------------------------------------------------------------------+
+| ``WITH_COVERAGE``   | if set to anything but 0 CTEST will perform coverage checks        |
++---------------------+--------------------------------------------------------------------+
+| ``MODEL``           | ``Nightly``, ``Experimental`` or ``Continuous`` (defaults to       |
+|                     | Experimental);                                                     |
+|                     | this only influences the section where it is printed in CDash      |
++---------------------+--------------------------------------------------------------------+
+| ``TMPDIR``          | place to store temporary files of run (will be pruned after        |
+|                     | run; defaults to ``/tmp``)                                         |
++---------------------+--------------------------------------------------------------------+
+| ``TESTROOT``        | The place checkouts and builds take place (if unset defaults       |
+|                     | to ``TMPDIR``, which means it will be pruned; otherwise it will    |
+|                     | be reused on next run)                                             |
++---------------------+--------------------------------------------------------------------+
+| ``THREADS``         | number of threads to use (defaults to 1)                           |
++---------------------+--------------------------------------------------------------------+
+
+Please see the up-to-date variables `here <http://svn.mi.fu-berlin.de/seqan-nightly/trunk/unix/bin/misc.sh>`__.
+
+Unix cron jobs
+--------------
+
+To setup the build, checkout the subversion directory mentioned above and decide on the variables you wish to set. Remember to give ``TMPDIR`` and ``TESTROOT`` enough space.
+
+Then open your crontab with
+
+.. code-block:: console
+
+    crontab -e
+
+And add the jobs that you wish to have executed. It could look like this:
+
+.. code-block:: console
+
+    # Shell variable for cron
+    SHELL=/bin/sh
+    # PATH variable for cron
+    PATH=/usr/local/libexec/ccache:/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin
+    #m h d m w
+    5  1 * * * MODEL=Nightly TMPDIR=/tmp TESTROOT=${HOME}/nightly-builds/testroot GIT_BRANCH=master  BITS=32 COMPILERS="clang++35 clang++36 clang++37 clang++38 clang++-devel" THREADS=4 nice -n 10 ${HOME}/nightly-builds/unix/bin/run.sh >/dev/null
+    5  1 * * * MODEL=Nightly TMPDIR=/tmp TESTROOT=${HOME}/nightly-builds/testroot GIT_BRANCH=develop BITS=32 COMPILERS="clang++35 clang++36 clang++37 clang++38 clang++-devel" THREADS=4 nice -n 10 ${HOME}/nightly-builds/unix/bin/run.sh >/dev/null
+
+    5  3 * * * MODEL=Nightly TMPDIR=/tmp TESTROOT=${HOME}/nightly-builds/testroot GIT_BRANCH=master  BITS=64 COMPILERS="clang++35 clang++36 clang++37 clang++38 clang++-devel g++49 g++5 g++6" THREADS=4 nice -n 10 ${HOME}/nightly-builds/unix/bin/run.sh >/dev/null
+    5  3 * * * MODEL=Nightly TMPDIR=/tmp TESTROOT=${HOME}/nightly-builds/testroot GIT_BRANCH=develop BITS=64 COMPILERS="clang++35 clang++36 clang++37 clang++38 clang++-devel g++49 g++5 g++6" THREADS=4 nice -n 10 ${HOME}/nightly-builds/unix/bin/run.sh >/dev/null
+
+
+The first columns mean that on the 5th minute of the 1st/3rd hour (1:05am/3:05am) of every day, of every month and every week the subsequent command is executed. The variables are described above.
+
+``nice -n 10`` ensures that the cron jobs get a low priority so the system remains responsive. The path after that is the path to your svn checkout. The redirection in the end prevents output from spamming your mail account.
+
+Remember to add all folders to the PATH variable that contain binaries which you have added to ``COMPILERS=``.
+
+Windows
+-------
+
+TODO double check this.
+
+
+Now, get the build scripts:
+
+.. code-block:: console
+
+    copy seqan-src\misc\ctest\run_nightly.sh .
+    copy seqan-src\misc\ctest\Seqan_Nightly.cmake.example Seqan_Nightly.cmake
+    copy seqan-src\util\cmake\CTestConfig.cmake seqan-src\
+
+Adjust the build name and site name in ``Seqan_Nightly.cmake``.
+Now, test the setup by running:
+
+.. code-block:: console
+
+    run_nightly.bat
+
+Add ``run_nightly.bat`` to nightly Scheduled Tasks of Windows (analogously to the `CTest Tutorial <http://www.vtk.org/Wiki/CMake_Scripting_Of_CTest#On_Windows_.2F_Cygwin_.2F_MinGW>`_):
+
+   #.   Open ``Scheduled Tasks`` from Control Panel.
+   #.   Select ``Add Scheduled Task``.
+   #.   Select ``Next`` to select command.
+   #.   Click **Browse...** and select ``run_nightly.bat``.
+   #.   Click **Next** and select name and repetition date. Repetition date for Nightly dashboards should be ``Daily``.
+   #.   Click **Next** and select time to start the dashboard.
+   #.   Click **Next** and select ``Open advanced properties...`` to fine tune the scheduled task.
+   #.   Select **Next** and type password of the user.``
+   #.   Task is created. The Advanced Properties dialog should open.
+   #.   In advanced properties, specify full command name. It is very important that you use double quotes in case you have spaces in your path.
+   #.   Select ``Ok``, which will ask for password again.
+   #.   The new task should be created.
diff --git a/manual/source/Infrastructure/Manage/Releases.rst b/manual/source/Infrastructure/Manage/Releases.rst
new file mode 100644
index 0000000..10a855c
--- /dev/null
+++ b/manual/source/Infrastructure/Manage/Releases.rst
@@ -0,0 +1,79 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _infra-manage-deploy:
+
+Library and App releases
+========================
+
+There are three different "packaging targets":
+
+#. a source package of the SeqAn library (``-DSEQAN_BUILD_SYSTEM=SEQAN_RELEASE_LIBRARY``)
+#. a package containing all apps (``-DSEQAN_BUILD_SYSTEM=SEQAN_RELEASE_APPS``)
+#. a package containing a single SeqAn app (``-DSEQAN_BUILD_SYSTEM=APP:$appname``)
+
+We assume that you have read :ref:`infra-use-install` and have cloned or unzipped the **full SeqAn sources** to ``~/devel/seqan`` (not the "library sources" described in other places).
+
+The instructions for all packaging targets are the same (replace ``$pack_target`` with the above string):
+
+.. code-block:: console
+
+    ~ # mkdir -p ~/devel/seqan-build/deploy
+    ~ # cd ~/devel/seqan-build/deploy
+    deploy # cmake ../../seqan -DSEQAN_BUILD_SYSTEM=$pack_target -DSEQAN_STATIC_APPS=1 -DSEQAN_ARCH_SSE4=1
+    deploy # make package
+
+On Windows, replace the last command with
+
+.. code-block:: console
+
+    deploy # cmake --build . --target PACKAGE
+
+Depending on the platform this might create a ZIP-file, a tarball and/or a platform specific installer.
+
+Official Packages
+-----------------
+
+We provide (1) a source package of SeqAn library; and for each official application (3) single binary packages for different operating systems and architectures.
+
+.. note::
+
+    Especially when creating packages, make sure that the cmake generator and/or compiler are the ones you want!
+
+GNU/Linux, macOS & BSD
+^^^^^^^^^^^^^^^^^^^^^^
+
+* The binary packages should be built on the **oldest supported kernel** and with the **oldest supported GCC** compiler.
+* The CMake version on the building system should be at least 3.1.
+* Builds should be static (``-DSEQAN_STATIC_APPS=1``).
+* There should be a 32Bit package, built on a 32Bit system or cross-compiled (``-DCMAKE_CXX_FLAGS="-m32"``).
+* There should be a 64Bit package.
+* There should be an optimized 64Bit build (``-DSEQAN_ARCH_SSE4=1``).
+* For applications where it makes sense, a further optimized build *can* be provided (``-DSEQAN_ARCH_AVX2=1``)
+
+Windows
+^^^^^^^
+
+* The binary packages should be built with the latest **Intel C++ Compiler** for performance and compatibility reasons (see :ref:`here <infra-use-cmake-build-dirs>`).
+* There should be a 32Bit package, built on a 32Bit system or cross-compiled (see :ref:`here <infra-use-cmake-build-dirs>`).
+* There should be a 64Bit package.
+
+Downstream Packaging
+--------------------
+
+These are some guidelines for creating SeqAn packages for operating system specific packaging
+systems, like *apt* (Debian/Ubuntu) or *rpm* (Fedora/RedHat/CentOS/SUSE).
+
+Library Package
+^^^^^^^^^^^^^^^
+
+We recommend that downstream package maintainers provide one package named **seqan** that contains only the header-library and the api-docs and that is built from our *library packages* available here: http://packages.seqan.de
+
+They have the advantage of not requiring any build steps, simply copy the ``include`` and ``share`` directories to the desired locations.
+
+Application Package(s)
+^^^^^^^^^^^^^^^^^^^^^^
+
+Beyond that package maintainers have the choice to create either a single package called **seqan-apps** that contains all the applications *or* a seperate package per application (with the respective name of that app). Based on the above instructions this should be fairly easy to accomplish.
+
diff --git a/manual/source/Infrastructure/Manage/RepositoryStructure.rst b/manual/source/Infrastructure/Manage/RepositoryStructure.rst
new file mode 100644
index 0000000..34dffd4
--- /dev/null
+++ b/manual/source/Infrastructure/Manage/RepositoryStructure.rst
@@ -0,0 +1,194 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _infra-manage-repo:
+
+The SeqAn Repository
+====================
+
+This article describes the SeqAn repository structure and how to work with full SeqAn sources.
+
+Getting Started
+---------------
+
+We assume that you have read :ref:`infra-use-install` and have cloned or unzipped the **full SeqAn sources** to ``~/devel/seqan`` (not the "library sources" described in other places).
+
+SeqAn supports the usual CMake build types and we recommend :ref:`using multiple build directories <infra-use-cmake-build-dirs>`. Start like this:
+
+.. code-block:: console
+
+    # mkdir -p ~/devel/seqan-build/release
+    # cd ~/devel/seqan-build/release
+    # cmake ../../seqan -DCMAKE_BUILD_TYPE=Release
+
+
+In addition to ``CMAKE_BUILD_TYPE`` there is also the ``SEQAN_BUILD_SYSTEM`` parameter which can be one of
+
+#. ``DEVELOP`` -- all build targets (apps, demos, tests) and documentation (dox, manual) are created (the default).
+#. ``SEQAN_RELEASE_LIBRARY`` -- only dox and library targets are created.
+#. ``SEQAN_RELEASE_APPS`` -- all app targets are created, but nothing else.
+#. ``APP:$APPNAME`` -- only a single app target is created for the chosen app.
+
+All build systems other than ``DEVELOP`` are only relevant to :ref:`packaging releases <infra-manage-deploy>`.
+
+As usual, calling ``make $TARGET`` will build a single target and just ``make`` will build all targets. On Windows, run ``cmake --build . --target $TARGET`` or just ``cmake --build`` instead.
+
+
+Overview
+--------
+
+The main repository structure is shown in the following picture.
+
+::
+
+    seqan
+      |-- CMakeLists.txt    CMake script file.
+      |
+      |-- LICENSE           Top-Level Information Files
+      |-- README.rst
+      |
+      |-- apps              Applications
+      |
+      |-- demos             Demos
+      |
+      |-- dox               API documentation system
+      |
+      |-- include/seqan     SeqAn header ("the library")
+      |
+      |-- manual            Manuals
+      |
+      |-- tests             Unit tests for library modules
+      |
+      `-- util              Miscellaneous and Utility Code
+
+The repository root contains some **information files** such as the ``LICENSE`` and ``README.rst``.
+The other folders are as follows:
+
+apps
+----
+
+The apps folder contains many applications, and
+each application directory contains one ``CMakeLists.txt`` file and the files for compiling at least one binary.
+Usually, apps have tests, too.
+In this case, there is a subdirectory ``tests``.
+Writing application tests is covered in detail in the article :ref:`infra-manage-write-app-tests`.
+
+The general structure of an app is as follows:
+
+::
+
+    seqan/apps/razers
+      |-- CMakeLists.txt      CMake script file
+      |
+      |-- README              Documentation and License Files
+      |-- LICENSE
+      |
+      |-- example             Small Example Files
+      |     |-- genome.fa
+      |     |-- reads.fa
+      |     `-- ...
+      |
+      |-- razers.cpp          Source Files for Executables
+      |-- razers.h
+      |-- ...
+      |
+      `-- tests               App Tests Files
+
+
+Note that some applications have binary names (make targets) that are not identical to the app-name, e.g. yara has ``yara_mapper`` and ``yara_indexer``.
+
+
+demos
+-----
+
+The demos are short programs and code snippets that are used in the dox or the manual.
+They serve as small examples and also functions as additional unit tests.
+
+
+dox
+---
+
+The SeqAn API documentation is created using a customly-written system called *dox*.
+It is very similar to doxygen, you can find out more about the syntax in :ref:`infra-contribute-dox`.
+
+You can build the documentation in the `dox` subfolder of the *source folder*:
+
+.. code-block:: console
+
+   ~   # cd ~/devel/seqan/dox
+   dox # ./dox_only.sh
+
+This will build the documentation into the sub directory ``html``.
+
+
+include/seqan
+---------------
+
+This is the actual library consisting of multiple modules:
+
+::
+
+    include/
+      |-- seqan/
+      |     |-- basic/                       Library Module basic
+      |     |     |-- aggregate_concept.h
+      |     |     |-- debug_test_system.h
+      |     |     `-- ...
+      |     |-- basic.h
+      |     |
+      |     |-- sequence/                    Library Module sequence
+      |     |-- sequence.h
+      |     |
+      |     `-- ...                          Other Library Modules
+
+On the top level, there is the folder ``seqan`` that contains the
+library modules. Inside the folder ``seqan``, there is one directory and
+one header for each module.
+
+The folder ``<module-name>`` contains the headers for the module module-name.
+The header ``<module-name>.h`` includes the headers from the module module-name.
+Including the header makes the code in the module available.
+
+.. note:: Header only library
+
+   Remember that SeqAn is a template library that consists entirely of headers.
+   No build steps are required for building the library and no shared objects will be created.
+
+manual
+------
+
+The SeqAn manual is created using the `Sphinx <http://sphinx-doc.org/>`_ documentation system.
+
+Follow these instructions to set up a local sphinx environment and build the manual:
+
+.. code-block:: console
+
+    $ virtualenv ~/seqan-manual-env
+    $ source ~/seqan-manual-env/bin/activate
+    (seqan-manual-env) $ cd ~/seqan/manual
+    (seqan-manual-env) $ pip install -r requirements.txt
+    (seqan-manual-env) $ make html
+
+Note that you have to first build the dox documentation since plugins for generating the ``:dox:`` links rely on the generated search index for checks.
+In order to get correct dox-links within the generated manuals, you have to specify the correct branch version.
+If you are working on the develop branch there is nothing to do, since ``'develop'`` is set by default.
+But if you are working on another branch, for example ``master``, you can set the correct branch by calling
+
+.. code-block:: console
+
+    (seqan-manual-env) $ export READTHEDOCS_VERSION='master'
+
+before you call ``make html`` as described in the previous step.
+This will generate the correct links to the master's version of the dox, i.e., ``http://docs.seqan.de/seqan/master/``
+
+tests
+-----
+
+The folder ``tests`` contains the unit tests for the library modules.
+
+For each library module, there is a directory below ``tests`` with the same name that contains the tests for this module.
+Simpler modules have one tests executable, whereas there might be multiple tests executables for larger modules.
+For example, the module ``index`` has multiple test programs ``test_index_qgram``, ``test_index_shapes`` etc.
+Writing tests is explained in detail in the article :ref:`infra-manage-write-unit-tests`.
+
diff --git a/manual/source/HowTo/WriteAppTests.rst b/manual/source/Infrastructure/Manage/WriteAppTests.rst
similarity index 97%
rename from manual/source/HowTo/WriteAppTests.rst
rename to manual/source/Infrastructure/Manage/WriteAppTests.rst
index 0365b7a..0cfc536 100644
--- a/manual/source/HowTo/WriteAppTests.rst
+++ b/manual/source/Infrastructure/Manage/WriteAppTests.rst
@@ -1,17 +1,20 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _how-to-write-app-tests:
+.. _infra-manage-write-app-tests:
 
 Writing App Tests
------------------
+=================
 
 This HowTo describes the basics of writing your own app tests.
 
+.. caution::
+
+    SeqAn does not accept new apps into the repository so this document is less relevant for the future.
+
 Overview
-~~~~~~~~
+--------
 
 SeqAn application tests allow the simple testing of apps: the application is run several times, each with a different set of parameters and/or input files.
 The output to STDOUT and STDERR is captured.
@@ -48,13 +51,13 @@ Running Tests
 ^^^^^^^^^^^^^
 
 The app tests are then run in the nightly CMake builds and their results are submitted to CDash.
-There are two steps involed here: (1) Executing the programs and (2) comparing their result with the expected ones.
+There are two steps involved here: (1) Executing the programs and (2) comparing their result with the expected ones.
 There is a Python test driver program (called *run_tests.py* by convention) for each collection of app tests.
 
 These programs us the Python module *seqan.app_tests* for running and usually mirror the corresponding *generate_outputs.sh* file.
 
 Creating App Tests
-~~~~~~~~~~~~~~~~~~
+------------------
 
 We will create app tests for a small app that converts its argument to upper case and prints it to stdout.
 
@@ -170,7 +173,7 @@ It should look like the following:
 
 .. code-block:: python
 
-   #!/usr/bin/env python
+   #!/usr/bin/env python2
    """Execute the tests for upcase.
 
    The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/manual/source/HowTo/WriteTutorials.rst b/manual/source/Infrastructure/Manage/WriteTutorials.rst
similarity index 95%
rename from manual/source/HowTo/WriteTutorials.rst
rename to manual/source/Infrastructure/Manage/WriteTutorials.rst
index 509083c..6b056d3 100644
--- a/manual/source/HowTo/WriteTutorials.rst
+++ b/manual/source/Infrastructure/Manage/WriteTutorials.rst
@@ -1,8 +1,13 @@
-.. _how-to-write-tutorials:
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _infra-manage-write-tutorials:
 
 Writing Tutorials
 =================
 
+
 At the bottom, you can find a `Tutorial Template`_ for starting a new tutorial.
 
 Conventions
@@ -118,7 +123,7 @@ Place the directives for the side bar and the link target for the tutorial page
        .. contents::
 
 
-    .. _tutorial-sequences:
+    .. _tutorial-datastructures-sequences:
 
     Sequences
     ---------
@@ -177,7 +182,7 @@ Assignments
 The assignments' purpose in general is to support the reader's understanding of the topic in question.
 For this each assignment is of a special type (Review, Application and Transfer), has an objective, hints and a link to the complete solution.
 
-Depending on the assignment‘s type the reader is guided through the assignment solving by providing him with partial solutions.
+Depending on the type of assignment the reader is guided through the assignment solving by providing him with partial solutions.
 
 There must always be an assignments of type Review.
 Assignments must always appear in an ascending order concerning their types and no "type gap" must occur.
@@ -230,7 +235,7 @@ Language
 
 Make use of a simple language.
 This is neither about academic decadence nor about increasing the learning barrier.
-You are not forced to over-simplify your subject but still try to use a language that is also appropriate for those who don‘t fully meet the tutorials prerequisites.
+You are not forced to over-simplify your subject but still try to use a language that is also appropriate for those who don't fully meet the tutorials prerequisites.
 
 Mental Model
 ^^^^^^^^^^^^
@@ -260,7 +265,7 @@ Tutorial Template
     .. _tutorial-tutorial-template:
 
     Tutorial Template
-    -----------------
+    =================
 
     Learning Objective
       Describe the learning objective in your own words.
@@ -280,7 +285,7 @@ Tutorial Template
 
     Prerequisites
       A list of absolved tutorials and other requirements you expect your reader to fulfill.
-      **Example:** :ref:`tutorial-first-steps-in-seqan`, :ref:`tutorial-pattern-matching`, English language
+      **Example:** :ref:`tutorial-getting-started-first-steps-in-seqan`, :ref:`tutorial-algorithms-pattern-matching`, English language
 
     This is the place where introductory need to be in given, e.g. "This page constitutes the template for all future SeqAn tutorials".
 
@@ -298,7 +303,7 @@ Tutorial Template
        Here you can inform users about important bugs or other relevant issues.
 
     Section
-    ^^^^^^^
+    -------
 
     Use this and optional further paragraphs to give the following information:
 
@@ -322,10 +327,13 @@ Tutorial Template
 
     .. important::
 
-       What are importants for?
+       What are important blocks for?
 
        These boxes contain information that **should be kept in mind** since the described phenomenon is very likely to be encountered by the reader again and again when working with SeqAn.
 
+    Subsection
+    ^^^^^^^^^^
+
     If you give code examples tell the reader what he can see and what is crucial to your snippet.
     Link all classes and other resources to the SeqAn documentation system by using ``:dox:Item` (e.g. :dox:`String`).
     In order to include code snippets use ``.. includefrags:: path``.
diff --git a/manual/source/HowTo/WriteTests.rst b/manual/source/Infrastructure/Manage/WriteUnitTests.rst
similarity index 90%
rename from manual/source/HowTo/WriteTests.rst
rename to manual/source/Infrastructure/Manage/WriteUnitTests.rst
index 8fd6bf0..0e175cd 100644
--- a/manual/source/HowTo/WriteTests.rst
+++ b/manual/source/Infrastructure/Manage/WriteUnitTests.rst
@@ -1,20 +1,19 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
+.. _infra-manage-write-unit-tests:
 
-.. _how-to-write-tests:
-
-Writing Tests
--------------
+Writing Unit Tests
+==================
 
 This page describes how to write tests for the SeqAn library.
 Each test program defines a *Test Suite*, a collection of related *Tests*.
 
-Test Suite Skelleton / Example
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Test Suite Skeleton / Example
+------------------------------
 
-A skeleton and example for a test suite program look as follows:
+A skeleton and example for a test suite program looks as follows:
 
 .. code-block:: cpp
 
@@ -40,9 +39,9 @@ A skeleton and example for a test suite program look as follows:
 ``SEQAN_DEFINE_TEST(...)`` expands to the definition of a function that runs a test.
 
 Getting Started With Our Test Template
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+--------------------------------------
 
-To make creating tests easier the code generator ``util/bin/skel.py`` has a command to generate test skelletons for you.
+To make creating tests easier the code generator ``util/bin/skel.py`` has a command to generate test skeletons for you.
 As parameters, you give it the name of the module you want to test and the path to the repository.
 For example, use ``skel.py tests my_module .`` to create tests for the module *my_module* in the directory ``tests``:
 
@@ -66,18 +65,20 @@ Afterwards, you can compile and run the tests:
    $ ./tests/my_module/test_my_module
    ...
 
-Note that when adding new tests then you have to add them to the dependencies of the test target in *tests/my_module/CMakeLists.txt*.
+.. note::
+
+   When adding new tests you have to add them to the dependencies of the test target in *tests/my_module/CMakeLists.txt*.
 
 Test Macros
-~~~~~~~~~~~
+-----------
 
 Inside your tests, you can use the ``SEQAN_ASSERT*`` and ``SEQAN_ASSERT_*_MSG`` macros to check for assertions.
 Other useful macros are :dox:`SEQAN_PATH_TO_ROOT` and :dox:`SEQAN_TEMP_FILENAME`.
 
-The macros themselves are documented in the dox:``SeqAn API documentation AssertMacros``.
+The macros themselves are documented in the dox: ``SeqAn API documentation AssertMacros``.
 
 Assertion Caveats
-~~~~~~~~~~~~~~~~~
+-----------------
 
 When using one of the LT/GT/LEQ/GEQ/EQ/NEQ macros, the values have to provide a stream operator (``operator<<``) to write them to an output stream.
 If this is not implemented, then the assertion will not compile and something like the following will be printed by the compiler (in this case the GCC).
@@ -105,7 +106,7 @@ instead of
     SEQAN_ASSERT_EQ(end(str3), begin(str3) + 7);
 
 Best Practices
-~~~~~~~~~~~~~~
+--------------
 
 **Rules are there to make you think before you break them.**
 The following is not written into stone, but should be good guidelines.
@@ -139,7 +140,7 @@ You can fix this by changing the type of the number literal:
 Break Your Tests Down
 ^^^^^^^^^^^^^^^^^^^^^
 
-Each test should isolate target an as small as possible and/or feasible unit of your code.
+Each test should verify a part of the library as small as possible while still being meaningful.
 Having short test functions makes them easier to read and maintain.
 
 Another advantage is that bogus state does not leak into other tests: imagine, you have a test that tests a function ``assign_if_positive(a, b)`` that assigns b to a if b is positive.
@@ -161,7 +162,7 @@ Now, what happens if ``assign_if_positive(...)`` has a bug and *never* assigns a
 Both of your assertions will fail.
 This means you do not really know in which case the function works well and in which case it does not work well.
 
-Splitting the test make it more robust:
+Splitting the test makes it more robust:
 
 .. code-block:: cpp
 
@@ -255,14 +256,14 @@ Thus, make sure that your tests are well-documented.
 Not only for users who look up how to use your code but also for the next maintainer.
 
 There should be a documentation of the test itself and also inline comments.
-In your comments, you should focus on the maintainer and not so much the user.
+In your comments, you should focus on the maintainer and not so much on the user.
 Even if some things are obvious, you might want to illustrate why you call a function with the given parameters, e.g. describe the corner cases.
 
 Example:
 
 .. code-block:: cpp
 
-   // Test abs() function with 1, a representant for positive values.
+   // Test abs() function with 1, a representative for positive values.
    SEQAN_DEFINE_TEST(test_abs_with_one)
    {
        SEQAN_ASSERT_EQ(abs(1), 1);
@@ -274,7 +275,7 @@ Example:
        SEQAN_ASSERT_EQ(abs(0), 0);
    }
 
-   // Test abs() function with -1, a representant for negative values.
+   // Test abs() function with -1, a representative for negative values.
    SEQAN_DEFINE_TEST(test_abs_with_minus_one)
    {
        SEQAN_ASSERT_EQ(abs(-1), 1);
diff --git a/manual/source/HowTo/app_tests.png b/manual/source/Infrastructure/Manage/app_tests.png
similarity index 100%
rename from manual/source/HowTo/app_tests.png
rename to manual/source/Infrastructure/Manage/app_tests.png
diff --git a/manual/source/HowTo/app_tests.svg b/manual/source/Infrastructure/Manage/app_tests.svg
similarity index 100%
rename from manual/source/HowTo/app_tests.svg
rename to manual/source/Infrastructure/Manage/app_tests.svg
diff --git a/manual/source/Infrastructure/Manage/index.rst b/manual/source/Infrastructure/Manage/index.rst
new file mode 100644
index 0000000..2a22332
--- /dev/null
+++ b/manual/source/Infrastructure/Manage/index.rst
@@ -0,0 +1,19 @@
+.. _infra-manage:
+
+Team Guide
+==========
+
+This guide is aimed at all people who contribute to SeqAn on a regular basis, and especially those that are responsible for certain parts of it. Downstream package maintainers should also read some of the articles, especially the :ref:`Releases page <infra-manage-deploy>`.
+
+It includes a description of the repository structure, detailed conventions and instructions, as well as documentation of the nightly build system.
+
+.. toctree::
+   :glob:
+   :titlesonly:
+
+   RepositoryStructure
+   WriteUnitTests
+   WriteAppTests
+   WriteTutorials
+   Releases
+   NightlyBuilds
diff --git a/manual/source/HowTo/FixWhitespaceAutomatically.rst b/manual/source/Infrastructure/Misc/FixWhitespaceAutomatically.rst
similarity index 85%
rename from manual/source/HowTo/FixWhitespaceAutomatically.rst
rename to manual/source/Infrastructure/Misc/FixWhitespaceAutomatically.rst
index 932d080..67b120d 100644
--- a/manual/source/HowTo/FixWhitespaceAutomatically.rst
+++ b/manual/source/Infrastructure/Misc/FixWhitespaceAutomatically.rst
@@ -1,14 +1,13 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _how-to-fix-whitespace-automatically:
+.. _infra-misc-fix-whitespace-automatically:
 
 Fixing Whitespace Automatically
 ===============================
 
-This page describes how to use `Universal Indent GUI <http://universalindent.sourceforge.net/>`_ and `Uncrustify <http://uncrustify.sourceforge.net/>`_ to automatically fix whitespace such that code resembles the :ref:`style-guide-cpp` more closely.
+This page describes how to use `Universal Indent GUI <http://universalindent.sourceforge.net/>`_ and `Uncrustify <http://uncrustify.sourceforge.net/>`_ to automatically fix whitespace such that code resembles the :ref:`infra-contribute-style-cpp` more closely.
 
 * Uncrustify is a command line program that is given a style definition and a source file and reformats the source file according to the configuration.
 * Universal Indent GUI is a graphical front-end to Uncrustify with life preview that allows to manipulate the configuration and immediately see the results.
@@ -53,7 +52,7 @@ Using The Command Line
 Uncrustify can also be used via the command line.
 This is best done after a rough visual verification that the uncrustify.cfg yields works for your sources using the Universal Indenter UI.
 
-Work on single file:
+Work on a single file:
 
 .. code-block:: console
 
@@ -71,11 +70,11 @@ Automatically fix whitespaces in Xcode
 
 Uncrustify can also be used directly from Xcode.
 With Xcode 4 Apple introduced so called "Behaviors" that can be executed using for instance keyboard shortcuts.
-To use uncrustify you can add a new behavior in the Xcode Preferences (tab Behaviors) and select "*Run*".
+To use Uncrustify you can add a new behavior in the Xcode Preferences (tab Behaviors) and select "*Run*".
 Here you add the attached ruby script.
 
 .. figure:: Xcode - Behavior.png
 
-**Note:** The script does **not** uncrustify the currently opened source file but all source files that were changed in your current branch.
-Xcode does not provide the information which source file is currently opened.
-
+.. note::
+   The script does **not** uncrustify the currently opened source file but all source files that were changed in your current branch.
+   Xcode does not provide the information which source file is currently opened.
diff --git a/manual/source/HowTo/ProfilePrograms.rst b/manual/source/Infrastructure/Misc/ProfilePrograms.rst
similarity index 85%
rename from manual/source/HowTo/ProfilePrograms.rst
rename to manual/source/Infrastructure/Misc/ProfilePrograms.rst
index 123fc59..1a2fe31 100644
--- a/manual/source/HowTo/ProfilePrograms.rst
+++ b/manual/source/Infrastructure/Misc/ProfilePrograms.rst
@@ -1,15 +1,14 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _how-to-profile-programs:
+.. _infra-misc-profile-programs:
 
 Profiling Programs
-------------------
+==================
 
 Linux Perf Tools (Linux)
-~~~~~~~~~~~~~~~~~~~~~~~~
+------------------------
 
 *  https://perf.wiki.kernel.org/
 *  Requires ``echo '-1' > /proc/sys/kernel/perf_event_paranoid`` as root.
@@ -21,7 +20,7 @@ Useful commands:
 *  ``perf report PROGRAM`` - display report for PROGRAM
 
 Google Perftools (Linux, Mac Os X)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+----------------------------------
 
 *  Download and install http://code.google.com/p/gperftools/ (also available through Ubuntu/Debian packages)
 *  Compile your program with debug symbols (you probably want to enable optimization as well).
@@ -40,5 +39,7 @@ Interesting commands:
 *  ``disasm NAME`` - disassemble functions matching NAME
 
 Instruments (Mac Os X)
-~~~~~~~~~~~~~~~~~~~~~~
+----------------------
+
+.. todo:: Write me!
 
diff --git a/manual/source/HowTo/WriteNiceUnixPrograms.rst b/manual/source/Infrastructure/Misc/WriteNiceUnixPrograms.rst
similarity index 94%
rename from manual/source/HowTo/WriteNiceUnixPrograms.rst
rename to manual/source/Infrastructure/Misc/WriteNiceUnixPrograms.rst
index 82a81ee..48db671 100644
--- a/manual/source/HowTo/WriteNiceUnixPrograms.rst
+++ b/manual/source/Infrastructure/Misc/WriteNiceUnixPrograms.rst
@@ -1,12 +1,11 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _how-to-rite-nice-unix-programs:
+.. _infra-misc-write-nice-unix-programs:
 
 Writing Nice Unix Programs
---------------------------
+==========================
 
 In bioinformatics, many programs are of "academic" quality, i.e. they are written to present a new method.
 The implementation is often "only" used by other academics who, since they do not pay for the program, are willing to take some glitches for granted.
@@ -17,7 +16,7 @@ The focus is on C and C++ programming in a Unix (e.g. Linux, Mac Os X) environme
 The hints should also be applicable to other languages such as Java, and in some way also Windows.
 
 Program Return Codes
-~~~~~~~~~~~~~~~~~~~~
+--------------------
 
 Rationale
 ^^^^^^^^^
@@ -84,7 +83,7 @@ Links
 *  `Error Level @ Wikipedia <http://en.wikipedia.org/wiki/Exit_status>`_
 
 Assume Few Things About Paths
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-----------------------------
 
 Rationale
 ^^^^^^^^^
@@ -124,7 +123,7 @@ This is not good practice, since the current working directory is *context* depe
 While it is possible to use ``pushd`` and ``popd`` to use one directory per call to the program, it is much less error prone and more comfortable for the caller to specify the file on the comman dline.
 
 Provide Good Defaults
-~~~~~~~~~~~~~~~~~~~~~
+---------------------
 
 Rationale
 ^^^^^^^^^
@@ -147,13 +146,13 @@ The quality type of a FASTQ file can be guessed from the file contents very reli
 Nevertheless, the user should be able to override this by a command line parameter.
 
 Positional vs. Named Arguments
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+------------------------------
 
 TODO
 ^^^^
 
 Provide all-in-one-go Variants of your program
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+----------------------------------------------
 
 Rationale
 ^^^^^^^^^
@@ -174,21 +173,21 @@ For paired-end read mapping, the program *bwa* consists of multiple calls.
 
 #. Call bwa to build an index on your genome.
 #. Map the left-end reads, yielding a position file.
-#. Map the right-end reads, yielding a positon file.
+#. Map the right-end reads, yielding a position file.
 #. Combine the two position files previously created.
 
 While it is OK to first create an index file (this file can be used for many reads files), the last three steps could be combine into one umbrella command.
 This would reduce the number of intermediate files and be much more comfortable for users.
 
 Use ``stdout`` and ``stderr`` correctly
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+---------------------------------------
 
 Rationale
 ^^^^^^^^^
 
 The standard stream ``stdout`` is for the program's output while ``stderr`` is for logging and error messages.
 It should be possible to redired ``stdout`` to an output file and ``stderr`` to a log file.
-Use ``-`` as shorcuts for ``stdout`` and ``stderr``.
+Use ``-`` as shortcuts for ``stdout`` and ``stderr``.
 
 Explanation
 ^^^^^^^^^^^
@@ -209,13 +208,13 @@ Example
 *  When the program is called with a ``--help`` parameter, the return code should return ``0`` and the help should be printed to ``stdout``.
 
 Allow specifying all file names through the command line
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+--------------------------------------------------------
 
 TODO
 ^^^^
 
 Do Not Require A Specific Working Directory
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-------------------------------------------
 
 Rationale
 ^^^^^^^^^
@@ -232,7 +231,7 @@ This makes it harder to use in complex software pipelines.
 Here, additional working directories and either symbolic links or copies of the program binary have to be created for each called instance.
 
 Use ``$TMPDIR`` For Temporary Files, Fall Back to */tmp*
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+--------------------------------------------------------
 
 Rationale
 ^^^^^^^^^
@@ -253,6 +252,6 @@ Links
 *  `TMPDIR @ Wikipedia <http://en.wikipedia.org/wiki/TMPDIR>`_
 
 Misc Links
-~~~~~~~~~~
+----------
 
 *  `Heng Li's "Debugging Memory Problems" <http://lh3lh3.users.sourceforge.net/memdebug.shtml>`_ (Heng Li of BWA, samtools etc. fame)
diff --git a/manual/source/HowTo/Xcode-Behavior.png b/manual/source/Infrastructure/Misc/Xcode-Behavior.png
similarity index 100%
rename from manual/source/HowTo/Xcode-Behavior.png
rename to manual/source/Infrastructure/Misc/Xcode-Behavior.png
diff --git a/manual/source/Infrastructure/Misc/index.rst b/manual/source/Infrastructure/Misc/index.rst
new file mode 100644
index 0000000..f23d0b7
--- /dev/null
+++ b/manual/source/Infrastructure/Misc/index.rst
@@ -0,0 +1,13 @@
+.. _infra-misc:
+
+Miscellaneous Guides
+====================
+
+Here are some general guides on programming and debugging that might be helpful to you when working with or on SeqAn.
+
+.. toctree::
+    :glob:
+    :titlesonly:
+
+    *
+
diff --git a/manual/source/HowTo/uig-1.png b/manual/source/Infrastructure/Misc/uig-1.png
similarity index 100%
rename from manual/source/HowTo/uig-1.png
rename to manual/source/Infrastructure/Misc/uig-1.png
diff --git a/manual/source/HowTo/uig-2.png b/manual/source/Infrastructure/Misc/uig-2.png
similarity index 100%
rename from manual/source/HowTo/uig-2.png
rename to manual/source/Infrastructure/Misc/uig-2.png
diff --git a/manual/source/HowTo/uig-3.png b/manual/source/Infrastructure/Misc/uig-3.png
similarity index 100%
rename from manual/source/HowTo/uig-3.png
rename to manual/source/Infrastructure/Misc/uig-3.png
diff --git a/manual/source/HowTo/uig-4.png b/manual/source/Infrastructure/Misc/uig-4.png
similarity index 100%
rename from manual/source/HowTo/uig-4.png
rename to manual/source/Infrastructure/Misc/uig-4.png
diff --git a/manual/source/HowTo/uig-5.png b/manual/source/Infrastructure/Misc/uig-5.png
similarity index 100%
rename from manual/source/HowTo/uig-5.png
rename to manual/source/Infrastructure/Misc/uig-5.png
diff --git a/manual/source/Infrastructure/RepositoryStructure.rst b/manual/source/Infrastructure/RepositoryStructure.rst
deleted file mode 100644
index 31f49cd..0000000
--- a/manual/source/Infrastructure/RepositoryStructure.rst
+++ /dev/null
@@ -1,128 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _infrastructure-repository-structure:
-
-SeqAn Repository Structure
---------------------------
-
-This article describes the SeqAn repository structure.
-After reading it, you will have knowledge about the repository structure and the reasons for the design decisions.
-
-Note that this article describes the structure of the Subversion repository, not the structure of the release version of SeqAn which you can download as a ZIP archive.
-
-Overview
-~~~~~~~~
-
-The main repository structure is shown in the following picture.
-
-::
-
-    seqan
-      |-- CMakeLists.txt      CMake script file.
-      |
-      |-- LICENSE             Top-Level Information Files
-      |-- README.rst
-      |
-      |-- apps              Apps area
-      |
-      |-- demos             Demos area
-      |
-      |-- dox               Documentation System
-      |
-      |-- include/seqan     Core Library
-      |
-      |-- manual            Tutorials
-      |
-      |-- tests             Unit Tests for Library Modules
-      |                
-      `-- util				Miscellaneous and Utility Code	
-
-* The repository root contains some **information files** such as the ``LICENSE`` and ``README.rst``.
-  The file names should speak for themselves.
-* The folder ``apps`` contains the applications that are shipped together with the library.
-  Each application directory contains the source files for one or more binaries, documentation, example files, and app tests.
-  More information is available in the section `Application Structure`_.
-* The folder ``demos`` contains **demo programs**.
-* The folder ``dox`` contains the documentation building system, which builds the documentation from the API documentation.
-* The folders ``include/seqan`` contains main library code, with all modules.
-  This is described in more detail in the section `Library Modules`_.
-* The folders ``manual`` contains the tutorials and the building system to build the tutorials.
-* The folder ``tests`` contains the unit tests for the library modules. 
-  For each library module, there is a directory below ``tests`` with the same name that contains the tests for this module.
-  Simpler modules have one tests executable, whereas there might be multiple tests executables for larger modules.
-  For example, the module ``index`` has multiple test programs ``test_index_qgram``, ``test_index_shapes`` etc.
-  Writing tests is explained in detail in the article :ref:`how-to-write-tests`.
-* The folder ``util`` contains **miscellaneous files** and **utility code**.  
-
-Application Structure
-~~~~~~~~~~~~~~~~~~~~~
-
-Each application directory contains one ``CMakeLists.txt`` file and the files for compiling one binary.
-Usually, apps have tests, too.
-In this case, there is a subdirectory ``tests``.
-Writing application tests is covered in detail in the article :ref:`how-to-write-app-tests`.
-
-The general structure of an app is as follows:
-
-::
-
-    seqan/apps/razers
-      |-- CMakeLists.txt      CMake script file
-      |
-      |-- README              Documentation and License Files
-      |-- LICENSE
-      |
-      |-- example             Small Example Files
-      |     |-- genome.fa
-      |     |-- reads.fa
-      |     `-- ...
-      |
-      |-- razers.cpp          Source Files for Executables
-      |-- razers.h
-      |-- ...
-      |
-      `-- tests               App Tests Files
-
-Library Modules
-~~~~~~~~~~~~~~~
-
-The library modules area looks as follows:
-
-::
-
-    include/
-      |-- seqan/
-      |     |-- basic/                       Library Module basic
-      |     |     |-- aggregate_concept.h
-      |     |     |-- debug_test_system.h
-      |     |     `-- ...
-      |     |-- basic.h
-      |     |
-      |     |-- sequence/                    Library Module sequence
-      |     |-- sequence.h
-      |     |
-      |     `-- ...                          Other Library Modules
-
-On the top level, there is the folder ``seqan`` that contains the
-library modules. Inside the folder ``seqan``, there is one directory and
-one header for each module.
-
-The folder ``<module-name>`` contains the headers for the module module-name.
-The header ``<module-name>.h`` includes the headers from the module module-name.
-Including the header makes the code in the module available.
-
-Documentation System
-~~~~~~~~~~~~~~~~~~~~
-
-The folder ``dox`` is used for building the documentation with the old and the new documentation system.
-You can build them by going into the directory and then calling ``./dox_only.sh``.
-This will build the documentation into the sub directory ``html``:
-
-.. code-block:: console
-
-   seqan # cd dox
-   dox # ./dox_only.sh
-   ...
diff --git a/manual/source/Infrastructure/Use/CMakeBuildDirs.rst b/manual/source/Infrastructure/Use/CMakeBuildDirs.rst
new file mode 100644
index 0000000..6030bef
--- /dev/null
+++ b/manual/source/Infrastructure/Use/CMakeBuildDirs.rst
@@ -0,0 +1,162 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _infra-use-cmake-build-dirs:
+
+CMake Build directories in detail
+=================================
+
+Motivation
+----------
+
+Why would you need more than one build directory or more than one IDE project file?
+This is very useful
+
+* if you want to use the same set of source files from multiple version of the same IDE (e.g. two Visual Studio versions),
+* if you want to have both debug builds (for debugging) and release builds (for performance tests) in parallel,
+* if you have your source files stored on a shared network location and want to have build files on two computer and/or operating systems, or
+* if you want to build the sources with two different compilers or compiler versions at the same time (e.g. to see whether you can figure out compiler errors better from the messages by another compiler).
+
+The overall idea is very simple: you create one build directory for each variant and call CMake in each of it using different settings.
+
+.. tip::
+
+    A nice side-effect of separating source and build directories is also that you can just delete you build directory and recreate it if you feel that something went wrong configuring your build.
+
+CMake Parameters
+----------------
+
+A central question with CMake is the choice of the so called generator. Enter ``cmake -G`` to get a list of the supported ones. The most common generators are the **Unix Makefiles** which are default on Linux/Mac/BSD. But there are also specific generators for IDEs, such as Visual Studio, XCode or CodeBlocks.
+
+For most of the IDEs further choices like "Release or Debug" are available from the graphical user interface of the IDE, whereas, for the Unix Makefile generator, we can specify the *build types* using a command line option.
+Also, the compiler program (and version) can be switched using a command line option.
+
+Examples
+--------
+
+We assume that your project source is at ``~/devel/my_project``.
+
+Unix Makefiles
+^^^^^^^^^^^^^^
+
+Different compilers:
+
+.. code-block:: console
+
+    # mkdir -p ~/devel/my_project-build/release_gcc5
+    # cd ~/devel/my_project-build/release_gcc5
+    # cmake ../../my_project -DCMAKE_CXX_COMPILER=g++-5
+    [...]
+    # mkdir -p ~/devel/my_project-build/release_clang37
+    # cd ~/devel/my_project-build/release_clang37
+    # cmake ../../my_project -DCMAKE_CXX_COMPILER=clang++-3.7
+    [...]
+
+Please note that the above only works if your compiler is in your PATH. You can instead also specify a full path like ``-DCMAKE_CXX_COMPILER=/opt/local/bin/g++-mp-4.9``.
+
+Debug and release builds:
+
+.. code-block:: console
+
+    # mkdir -p ~/devel/my_project-build/release
+    # cd ~/devel/my_project-build/release
+    # cmake ../../my_project
+    [...]
+    # mkdir -p ~/devel/my_project-build/debug
+    # cd ~/devel/my_project-build/debug
+    # cmake ../../my_project -DCMAKE_BUILD_TYPE=Debug
+    [...]
+
+Of course the above can also be combined to have ``debug_clang37`` et cetera.
+
+Visual Studio
+^^^^^^^^^^^^^
+
+Different versions (please note that versions older than 2015 are not supported any longer):
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: console
+
+    # mkdir -p ~/devel/my_project-build/vs2015
+    # cd ~/devel/my_project-build/vs2015
+    # cmake ../../my_project -G "Visual Studio 14 2015"
+    [...]
+    # mkdir -p ~/devel/my_project-build/vs2013
+    # cd ~/devel/my_project-build/vs2013
+    # cmake ../../my_project -G "Visual Studio 12 2013"
+    [...]
+
+
+32Bit and 64Bit:
+~~~~~~~~~~~~~~~~
+
+.. code-block:: console
+
+    # mkdir -p ~/devel/my_project-build/vs2015_32
+    # cd ~/devel/my_project-build/vs2015_32
+    # cmake ../../my_project -G "Visual Studio 14 2015"
+    [...]
+    # mkdir -p ~/devel/my_project-build/vs2015_64
+    # cd ~/devel/my_project-build/vs2015_64
+    # cmake ../../my_project -G "Visual Studio 14 2015 Win64"
+    [...]
+
+.. caution::
+
+    **64Bit builds on Windows**
+
+    You almost always want 64Bit builds when using SeqAn, so don't forget to specify a generator that ends in "Win64". It is not the default, even on 64Bit Windows installations.
+
+Different Compilers:
+~~~~~~~~~~~~~~~~~~~~
+
+`Intel Compiler 2016
+<https://software.intel.com/en-us/articles/intel-parallel-studio-xe-2016-release-notes>`_:
+
+.. code-block:: console
+
+    # mkdir -p ~/devel/my_project-build/intel_32
+    # cd ~/devel/my_project-build/intel_32
+    # cmake ../../my_project -G "Visual Studio 14 2015" -T "Intel C++ Compiler 16.0"
+    [...]
+
+    # mkdir -p ~/devel/my_project-build/intel_64
+    # cd ~/devel/my_project-build/intel_64
+    # cmake ../../my_project -G "Visual Studio 14 2015 Win64" -T "Intel C++ Compiler 16.0"
+    [...]
+
+`Clang/C2 3.7 or 3.8
+<https://blogs.msdn.microsoft.com/vcblog/2015/12/04/clang-with-microsoft-codegen-in-vs-2015-update-1/>`_
+(requires CMake ≥ 3.6):
+
+.. code-block:: console
+
+    # mkdir -p ~/devel/my_project-build/clang_c2_32
+    # cd ~/devel/my_project-build/clang_c2_32
+    # cmake ../../my_project -G "Visual Studio 14 2015" -T "v140_clang_3_7"
+    [...]
+
+    # mkdir -p ~/devel/my_project-build/clang_c2_64
+    # cd ~/devel/my_project-build/clang_c2_64
+    # cmake ../../my_project -G "Visual Studio 14 2015 Win64" -T "v140_clang_3_7"
+    [...]
+
+.. note::
+
+    If Clang/C2 3.8 is installed, the tool-chain name in Visual Studio 14 is
+    still "v140_clang_3_7" even though the name says otherwise.
+
+.. caution::
+
+    Clang/C2 is currently experimental and shouldn't be used in production.
+
+XCode
+^^^^^
+
+.. code-block:: console
+
+    # mkdir -p ~/devel/my_project-build/xcode
+    # cd ~/devel/my_project-build/xcode
+    # cmake ../../my_project -G "Xcode"
+    [...]
diff --git a/manual/source/BuildManual/IntegrationWithYourOwnBuildSystem.rst b/manual/source/Infrastructure/Use/CustomBuildSystem.rst
similarity index 52%
rename from manual/source/BuildManual/IntegrationWithYourOwnBuildSystem.rst
rename to manual/source/Infrastructure/Use/CustomBuildSystem.rst
index 9cb860f..f73718a 100644
--- a/manual/source/BuildManual/IntegrationWithYourOwnBuildSystem.rst
+++ b/manual/source/Infrastructure/Use/CustomBuildSystem.rst
@@ -3,60 +3,73 @@
    .. contents::
 
 
-.. _build-manual-integration-with-your-own-build-system:
+.. _infra-use-custom:
 
 Integration with your own Build System
---------------------------------------
-
-The CMake build system that SeqAn ships with is meant for people who want to build the applications, tests, and demos that SeqAn ships with.
-It has the advantage that new such programs have only to be added by a certain convention and they get added to the Makefiles/project files on the next ``cmake`` call.
-If you just want to use SeqAn in your own project, it might not be a good fit.
-One of the disadvantages is that CMake will overwrite your project files on every call.
-Another disadvantage is that the generated project files are huge and might take a long while to load.
+======================================
 
 This page gives an example of how to use SeqAn in your application based on your own Makefiles.
-You should be able to adapt the descriptions to configuring your build system and/or IDE.
+You should be able to adapt the descriptions to configure your build system and/or IDE.
 
 .. tip::
 
-   SeqAn is a header library only.
-   Simply add ``include`` and ``include`` to your include path and you can use SeqAn, as seen in the `Short Version`_.
-   See below how to enable using zlib for BAM access, for example.
+   **SeqAn is a header-only library.**
 
-Libraries on Linux
-~~~~~~~~~~~~~~~~~~
+   Simply adding its include folder to your include path or installing it globally makes it available to your program.
 
-On Linux, you have to link against ``librt``.
-For GCC, add the flag ``-lrt`` to the ``g++`` compiler call.
+C++14 Standard
+--------------
 
-Compiler Flags
-~~~~~~~~~~~~~~
+On GNU/Linux, BSD and macOS, always add ``-std=c++14`` (or a newer standard) when building on the command line.
 
-It is recommended to compile your programs with as many warnings enabled as possible.
-This section explains which flags to set for different compilers.
+For XCode on macOS you need to set this option in the project settings.
+
+As of Visual Studio 2015 our subset of C++14 is already available in all supported compilers.
+
+OpenMP
+------
+
+On GNU/Linux, BSD and macOS, add ``-fopenmp`` unless you are using Clang versions older than 3.8.0.
+
+For XCode on macOS OpenMP is not yet available.
+
+With Visual Studio OpenMP is switched on by default.
+
+Operating System specifics
+--------------------------
+
+GNU/Linux
+^^^^^^^^^
+
+**Libraries**
+
+Add ``-lrt -lpthread`` to the compiler call.
 
-GCC
+BSD
 ^^^
 
-For GCC, the following flags are recommended:
+**Libraries**
 
-::
+Add ``-lpthread -lexecinfo -lelf`` to the compiler call.
 
-    -W -Wall -Wno-long-long -pedantic -Wno-variadic-macros
+**Misc**
 
-Explanation:
+Also define ``-D_GLIBCXX_USE_C99=1`` if you are using gcc-4.9.
+
+Warning levels
+--------------
+
+It is recommended to compile your programs with as many warnings enabled as possible.
+This section explains which flags to set for different compilers.
+
+GCC, Clang, ICC (unix)
+^^^^^^^^^^^^^^^^^^^^^^
+
+The following flags are recommended:
 
 ``-W -Wall -pedantic``
   Maximal sensitivity of compiler against possible problems.
 
-``-Wno-variadic-macros``
-  The assertion macros are variadic.
-  Variadic macros were standardized in C99 but are not part of C++98 so GCC warns against their usage.
-  Disable these warnings.
-
-``-Wno-long-long``
-  64 bit integers (``long long``) are not supported in C++98, but GCC implements them nevertheless but warns against their usage in pedantic mode.
-  We really want 64 bit integers, though.
 
 Visual Studio
 ^^^^^^^^^^^^^
@@ -81,7 +94,7 @@ Explanation:
    Replacing such calls does not have a high priority right now since SeqAn is usually not used on servers facing the outside world.
 
 Preprocessor Defines Affecting SeqAn
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+------------------------------------
 
 There are certain preprocessor symbols that affect the behaviour of SeqAn.
 
@@ -92,15 +105,15 @@ possible value
   0, 1
 
 default
-  1
+  0
 
 meaning
   If set to 1, assertions within SeqAn (``SEQAN_ASSERT...``) are enabled, they are disabled otherwise.
   Is forced to 1 if ``SEQAN_ENABLE_TESTING`` is true.
-  If not set, is set to 0 if ``NDEBUG`` is defined and set to 1 if undefind and ``NDEBUG`` is not defined.
+  This flag will internally always correspond to the inverse of ``NDEBUG``, i.e. setting it to 1 will force ``NDEBUG`` to be undefined and setting it to 0 will forcefully set ``NDEBUG``.
 
 SEQAN_ENABLE_TESTING
-^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^
 
 possible value
   0, 1
@@ -109,9 +122,33 @@ default
   0
 
 meaning
- This makes the code very slow, however, and should only be used when running the tests.
+ This makes the code very slow, and should only be used when running the SeqAn unit tests.
  Has to be set to 1 for tests to work.
 
+SEQAN_ASYNC_IO
+^^^^^^^^^^^^^^
+
+possible value
+  0, 1
+
+default
+  0 on ``FreeBSD/32Bit`` and ``OpenBSD/*``; 1 otherwise
+
+meaning
+ Whether asynchronous input/output is available.
+
+SEQAN_HAS_EXECINFO
+^^^^^^^^^^^^^^^^^^
+
+possible value
+  0, 1
+
+default
+  depends on platform / existance of ``<execinfo.h>``
+
+meaning
+ This should almost always be set to 1 on non-Windows platforms!
+
 SEQAN_HAS_BZIP2
 ^^^^^^^^^^^^^^^
 
@@ -122,7 +159,7 @@ default
   0
 
 meaning
- If set to 1 then libbzip2 is available.``
+ If set to 1 then libbzip2 is expected to be available.
  You have to link against the library (e.g. add ``-lbz2`` to your linke rflags) and ``bzlib.h`` must be in your include path.
 
 SEQAN_HAS_ZLIB
@@ -135,11 +172,11 @@ default
   0
 
 meaning
- If set to 1 then zlib is available.
+ If set to 1 then zlib is expected to be available.
  You have to link against the library (e.g. add ``-lz`` to your linker flags) and ``zlib.h`` must be in your include path.
 
 Settings Projects Using Seqan
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-----------------------------
 
 You normally want to have at least two build modes: one for debugging and one for optimized compiling.
 The following settings have to be applied to your IDE project/Makefiles (below is an example for a Makefile based project).
@@ -150,37 +187,35 @@ Debug Builds
 Besides enabling debug symbols and disabling optimization, there are the
 following SeqAn specific settings to be applied.
 
-- Add the path to the directory ``seqan`` to your include path.
+- Add SeqAn to your include path
 - Define ``SEQAN_ENABLE_DEBUG`` to be ``1``.
-  Alternatively, you can leave ``SEQAN_ENABLE_DEBUG`` undefined and not define ``NDEBUG``.
-- Define ``SEQAN_ENABLE_TESTING`` to be ``0``.
 
 This translates into the following GCC flags:
 
 ::
 
-    -g -O0 -DSEQAN_ENABLE_TESTING=0 -I${PATH_TO_CORE}/include \
-      -I${PATH_TO_EXTRAS}/include
+    -g -O0 -DSEQAN_ENABLE_DEBUG=1 -I${PATH_TO_SEQAN_INSTALL}/include
 
 Release/Optimized Builds
 ^^^^^^^^^^^^^^^^^^^^^^^^
 
 Besides disabling debug symbols, enabling optimization and disabling assertions in the standard library, there are the following SeqAn specific settings to be applied.
 
-* Add the path to the directory ``seqan`` to your include path.
-* Define ``NDEBUG``.
-  This will make ``SEQAN_ENABLE_DEBUG`` be defined as ``0`` if you don't defined ``SEQAN_ENABLE_DEBUG`` otherwise.
-* Define ``SEQAN_ENABLE_TESTING`` to be ``0``.
+- Add SeqAn to your include path
+- Define ``NDEBUG``. This will make sure that ``SEQAN_ENABLE_DEBUG`` is 0 and also other STL includes of your program are not slowed down.
 
 This translates into the following GCC flags:
 
 ::
 
-    -O3 -DNDEBUG -DSEQAN_ENABLE_TESTING=0 -I${PATH_TO_CORE}/include \
-      -I${PATH_TO_EXTRAS}/include
+    -O3 -DNDEBUG -I${PATH_TO_SEQAN_INSTALL}/include
+
+.. caution::
+
+    While some guides tell you to not use ``-O3`` this is absolutely crucial for SeqAn based applications to perform well. Unoptimized builds are slower by multiple factors!
 
 An Example Project Based On Makefiles
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-------------------------------------
 
 We will create a project with good old Makefiles and GCC.
 The program will not do much but can serve as a minimal example on how to use SeqAn with your own build process.
@@ -255,14 +290,23 @@ For good measure, we also disable assertions in the C library with ``-DNDEBUG``.
 Notes
 ^^^^^
 
-Note we that added include path to the directory ``include`` that contains the directory ``seqan``.
+Above we added the include path to SeqAn's include directory manually.
 By changing the include path, we can install the SeqAn library anywhere.
 For example, we could create a directory ``include`` parallel to ``src``, copy the release version of SeqAn into it and then change the include path of the compiler to point to this directory (value ``../include``).
 
 Short Version
-~~~~~~~~~~~~~
-
-* Add both ``include`` and ``include`` to your include path (``-I``).
-* Linux/GCC flags: ``-lrt`` (required) ``-W -Wall -Wno-long-long -pedantic -Wno-variadic-macros`` (optional).
-* Windows/MSVC flags: ``/W2 /wd4996 -D_CRT_SECURE_NO_WARNINGS`` (optional).
-* Defines: ``NDEBUG`` to also disable SeqAn assertions in release mode.
+-------------
+
++---------+---------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
+| OS      | Compiler            | Flags                                                                                                                                       |
++=========+=====================+=============================================================================================================================================+
+| Linux   | GCC/Clang≥3.8/ICC   | ``-I /path/to/seqan/include -std=c++14 -O3 -DNDEBUG -W -Wall -pedantic -fopenmp -lpthread -lrt``                                            |
++---------+---------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
+| BSD     | GCC/Clang≥3.8/ICC   | ``-I /path/to/seqan/include -std=c++14 -O3 -DNDEBUG -W -Wall -pedantic -fopenmp -lpthread -lexecinfo -lelf -D_GLIBCXX_USE_C99=1``           |
++---------+---------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
+| macOS   | system's Clang      | ``-I /path/to/seqan/include -std=c++14 -O3 -DNDEBUG -W -Wall -pedantic``                                                                    |
++---------+---------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
+| Windows | Visual Studio MSVC  | ``/W2 /wd4996 -D_CRT_SECURE_NO_WARNINGS``                                                                                                   |
++---------+---------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
+
+Adapt the include path to the actual place of SeqAn's ``include`` folder!
diff --git a/manual/source/Infrastructure/Use/FindSeqAnCMake.rst b/manual/source/Infrastructure/Use/FindSeqAnCMake.rst
new file mode 100644
index 0000000..57d950c
--- /dev/null
+++ b/manual/source/Infrastructure/Use/FindSeqAnCMake.rst
@@ -0,0 +1,232 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _infra-use-cmake:
+
+Using SeqAn in CMake-based projects
+===================================
+
+Overview
+--------
+
+`CMake <http://cmake.org/>`_ is a cross-platform build system generator where you describe different executables, binaries and their dependencies in ``CMakeLists.txt`` files.
+Then, CMake generates build systems such as Makefiles or Visual Studio projects from these files. This article describes only the most basic things about CMake in general and focuses on how to use SeqAn easily from within CMake projects.
+
+In CMake projects, one uses `modules to find libraries <http://www.vtk.org/Wiki/CMake:How_To_Find_Libraries>`_ such as SeqAn.
+SeqAn ships with such a module.
+
+In the following we assume that you have installed CMake on your operating system. If you have not yet, install it via the operating systems mechanisms (see also :ref:`Setting up SeqAn <infra-use-install>`) and/or `download from the CMake homepage <https://cmake.org/download/>`_.
+
+You should also have a valid C++-Compiler installed. Refer to the `GitHub-README <https://github.com/seqan/seqan>`_ to see which compilers are currently supported.
+
+A Running Example
+-----------------
+
+Create a folder somewhere, e.g. ``~/devel/my_project`` and in it the following two files:
+
+``my_project.cpp``
+
+.. includefrags:: util/raw_cmake_project/src/main.cpp
+
+
+``CMakeLists.txt``
+
+.. code-block:: cmake
+
+   # Minimum cmake version
+   cmake_minimum_required (VERSION 3.0.0)
+
+   # Name of project and that it is C++ only.
+   project (my_project CXX)
+
+   # ----------------------------------------------------------------------------
+   # Dependencies
+   # ----------------------------------------------------------------------------
+
+   # Search for zlib as a dependency for SeqAn.
+   find_package (ZLIB)
+
+   # Load the SeqAn module and fail if not found.
+   find_package (SeqAn REQUIRED)
+
+   # ----------------------------------------------------------------------------
+   # Build Setup
+   # ----------------------------------------------------------------------------
+
+   # Add include directories.
+   include_directories (${SEQAN_INCLUDE_DIRS})
+
+   # Add definitions set by find_package (SeqAn).
+   add_definitions (${SEQAN_DEFINITIONS})
+
+   # Add CXX flags found by find_package (SeqAn).
+   set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SEQAN_CXX_FLAGS}")
+
+   # Add executable and link against SeqAn dependencies.
+   add_executable (my_project my_project.cpp)
+   target_link_libraries (my_project ${SEQAN_LIBRARIES})
+
+Building The Project
+^^^^^^^^^^^^^^^^^^^^
+
+First you should create a build directory, i.e. for cmake-builds everything happens in a different directory, than in the source directory. In our case create the directory ``~/devel/my_project-build`` and in there a folder ``release``. More on why we use two levels :ref:`here <infra-use-cmake-build-dirs>`.
+
+.. code-block:: console
+
+   # mkdir -p ~/devel/my_project-build/release
+   # cd ~/devel/my_project-build/release
+
+By default, the ``cmake`` program will look for ``FindSeqAn.cmake`` in its module directory.
+Usually, this is located in ``/usr/share/cmake/Modules`` or a similar location that is available system-wide.
+Depending on how you :ref:`installed SeqAn <infra-use-install>` it might be found by cmake automatically. If not, you have to give the path to cmake via the ``CMAKE_MODULE_PATH`` argument on the command line.
+
+Also, CMake will look for the SeqAn include files in central locations such as ``/usr/local/include``. Again, depending on your installation this might *just work*. If not, you need to specify the location via the ``SEQAN_INCLUDE_PATH`` argument.
+
+When using operating system packages of SeqAn and the default compiler it might look like this:
+
+.. code-block:: console
+
+   # cmake ../../my_project
+
+If you instead did a full git checkout to your home-directory in the previous step, it might look like this:
+
+.. code-block:: console
+
+   # cmake ../../my_project \
+       -DCMAKE_MODULE_PATH=~/devel/seqan/util/cmake \
+       -DSEQAN_INCLUDE_PATH=~/devel/seqan/include
+
+.. tip::
+
+    Depending on your setup you might need to manually choose a more modern compiler! Please read :ref:`this page <infra-use-cmake-build-dirs>` for more information on configuring CMake builds. Don't forget to clean your CMake build directory after changing the compiler!
+
+Finally you can then build the application by calling
+
+* on Makefile-based builds (Linux/Mac/BSD):
+
+    .. code-block:: console
+
+        # make
+
+* Windows
+
+    .. code-block:: console
+
+        # cmake --build .
+
+**The above step is the only step you need to repeat when changing your source code.** You only have to run CMake again, if you have changed the ``CMakeLists.txt``.
+
+You can then execute the application in the usual way
+
+* on Makefile-based builds (Linux/Mac/BSD):
+
+    .. code-block:: console
+
+        # ./my_project
+
+* Windows
+
+    .. code-block:: console
+
+        # my_project
+
+Using IDEs
+^^^^^^^^^^
+
+On Linux and BSD many IDEs directly support cmake, just open/import the ``CMakeLists.txt`` with e.g. `KDevelop <https://www.kdevelop.org>`_ or `QtCreator <http://www.qt.io/ide/>`_.
+
+To use XCode on Mac with your CMake-based project, add ``-G Xcode`` to the cmake call above and then run ``open TODO``.
+
+On Windows a Visual Studio generator is used by default and you will find a ``.vcxproj`` in the source directory that you can open with Visual Studio.
+
+See :ref:`this page <infra-use-cmake-build-dirs>` for more details.
+
+
+Details of the FindSeqAn Module
+-------------------------------
+
+As mentioned above, this line is the important line for including SeqAn:
+
+.. code-block:: cmake
+
+    find_package (SeqAn REQUIRED)
+
+If SeqAn is only an optional dependency of your program, you can omit the ``REQUIRED`` keyword. In this case you should check the contents of the ``SEQAN_FOUND`` CMake-variable and depending on that configure your build, e.g. with custom Macros.
+
+You can also check for the definition of SeqAn's version macros from within your code:
+
+``SEQAN_VERSION_STRING``
+  Concatenated version string, ``${SEQAN_VERSION_MAJOR}.${SEQAN_VERSION_MINOR}.${SEQAN_VERSION_PATCH}``
+
+``SEQAN_VERSION_MAJOR``
+  Major version.
+
+``SEQAN_VERSION_MINOR``
+  Minor version.
+
+``SEQAN_VERSION_PATCH``
+  Patch-level version.
+
+Dependencies
+^^^^^^^^^^^^
+
+SeqAn itself has some optional dependencies.
+Certain features in SeqAn will be enabled or disabled, depending on whether the dependencies could be found.
+
+.. caution::
+
+    Optional dependencies of SeqAn have to be searched **before** the SeqAn module is searched!
+
+Currently, the following dependencies enable optional features:
+
+``ZLIB``
+  zlib compression library
+
+``BZip2``
+  libbz2 compression library
+
+``OpenMP``
+  OpenMP language extensions to C/C++
+
+An example of where you only want ZLIB and OpenMP support, but not BZip2, would look like this:
+
+.. code-block:: cmake
+
+    find_package (ZLIB)
+    find_package (OpenMP)
+    find_package (SeqAn)
+
+From within CMake you can check the variables ``ZLIB_FOUND`` or ``OpenMP_FOUND`` to see the results of these dependency searches, but you can also use the following macros from within your source code to escape certain optional code paths:
+
+``SEQAN_HAS_ZLIB``
+  ``TRUE`` if zlib was found.
+
+``SEQAN_HAS_BZIP2``
+  ``TRUE`` if libbz2 was found.
+
+``_OPENMP``
+  ``TRUE`` if OpenMP was found.
+
+CMake build variables
+^^^^^^^^^^^^^^^^^^^^^
+
+As can be seen from the example above, the following variables need to be passed to ``include_directories()``, ``target_link_directories()``, and ``add_definitions()`` in your ``CMakeLists.txt``:
+
+``SEQAN_INCLUDE_DIRS``
+  A list of include directories.
+
+``SEQAN_LIBRARIES``
+  A list of libraries to link against.
+
+``SEQAN_DEFINITIONS``
+  A list of definitions to be passed to the compiler.
+
+Required additions to C++ compiler flags are in the following variable:
+
+``SEQAN_CXX_FLAGS``
+  C++ Compiler flags to add.
+
+  .. caution::
+
+    Please note that these variables include whatever has been added by the dependencies mentioned above so **do not add** e.g. ``${OpenMP_CXX_FLAGS}`` yourself!
diff --git a/manual/source/Infrastructure/Use/Install.rst b/manual/source/Infrastructure/Use/Install.rst
new file mode 100644
index 0000000..b7108b9
--- /dev/null
+++ b/manual/source/Infrastructure/Use/Install.rst
@@ -0,0 +1,87 @@
+.. sidebar:: ToC
+
+   .. contents::
+
+
+.. _infra-use-install:
+
+Installing SeqAn
+================
+
+There are different ways to install SeqAn, we recommend to try these in the given order:
+
+#. Native package management of the operating system.
+#. Unpacking the library package from http://packages.seqan.de
+#. Using the full sources from our github repository.
+
+If possible, use the first option. If SeqAn is not available for your operating system, or if it is outdated, use the second option.
+
+Use the third option if you want to use the master or develop branch which might contain bug-fixes and new features.
+
+Native package management
+-------------------------
+
+SeqAn is available natively on the following platforms.
+
+.. tip::
+
+    Before you install, please make sure that the version supplied is not completely out of date (a difference in the third digit is ok, but if the difference is bigger use the `Library Package`_ below).
+    The current version of SeqAn is always shown on the `SeqAn-Homepage <http://www.seqan.de/>`__ and the version available on your platform is usually displayed in the info-link below.
+
+.. |br| raw:: html
+    
+    <br/>
+
++---------------------------+--------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+| Operating System          | Package Name | Command                                 | links                                                                                                                                  |
++============+==============+==============+=========================================+========================================================================================================================================+
+| **G** |br| | Arch         |              |                                         | `AUR <https://aur.archlinux.org/packages/?O=0&K=seqan>`__                                                                              |
+| **N** |br| +--------------+--------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+| **U** |br| | Debian       | seqan-dev    | ``apt install seqan-dev``               | `info <https://packages.debian.org/stable/seqan-dev>`__ | `contact <mailto:debian-med-packaging()lists.alioth.debian.org>`__           |
+| / |br|     +--------------+--------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+| **L** |br| | Fedora       | seqan-devel  | ``yum install seqan-devel``             | `info <https://apps.fedoraproject.org/packages/seqan-devel>`__ | `contact <mailto:sagitter()fedoraproject.org>`__                      |
+| **I** |br| +--------------+--------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+| **N** |br| | Gentoo       | seqan        | ``emerge sci-biology/seqan``            | `info <https://packages.gentoo.org/packages/sci-biology/seqan>`__ | `contact <mailto:sci-biology at gentoo.org>`__                        |
+| **U** |br| +--------------+--------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+| **X** |br| | Ubuntu       | seqan-dev    | ``apt install seqan-dev``               | `info <http://packages.ubuntu.com/xenial/seqan-dev>`__ | `contact <mailto:ubuntu-motu()lists.ubuntu.com>`__                            |
++------------+--------------+--------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+| **M** |br| | Homebrew     | seqan        | ``brew install homebrew/science/seqan`` | `info <http://braumeister.org/repos/Homebrew/homebrew-science/formula/seqan>`__ | `contact <mailto:tim()tim-smith.us>`__               |
+| **A** |br| +--------------+--------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+| **C** |br| | MacPorts     | seqan        | ``port install seqan``                  | `info <https://trac.macports.org/browser/trunk/dports/science/seqan/Portfile>`__ | `contact <mailto:rene.rahn()fu-berlin.de>`__        |
++------------+--------------+--------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+| **B** |br| | FreeBSD      | seqan        | ``pkg install seqan``                   | `info <http://freshports.org/biology/seqan>`__ | `contact <mailto:h2+fbsdports()fsfe.org>`__                                           |
+| **S** |br| +--------------+--------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+| **D** |br| | OpenBSD      | seqan        | ``pkg_add seqan``                       | `info <http://openports.se/biology/seqan>`__ | `contact <mailto:h2+fbsdports()fsfe.org>`__                                             |
++------------+--------------+--------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+
+You should execute the above commands in a terminal as the ``root`` user or prefix them with ``sudo``. If you have problems installing the package on your operating system, or it is outdated, please write to the contact shown above (and replace ``()`` in the e-mail-address with ``@``).
+
+
+Library Package
+---------------
+
+First you need to download the most recent "library package" from http://packages.seqan.de and extract its contents. Now copy the `include` and `share` folders to their target location. This could be one of the following:
+
+* ``/usr/local`` so they are available system-wide and automatically found by your program [requires root or sudo]
+* ``/opt/seqan`` available system-wide and easy to remove again [requires root or sudo]
+* ``~/devel/seqan`` some place in your home directory [does not require root or sudo]
+
+In any case it is important to remember where you installed it to.
+
+Full Sources
+------------
+
+Make sure that you have git installed. For the operating systems mentioned above it can usually be achieved by using the respective command with `git` as package name.
+
+For Windows there is Git client and shell available `here <https://windows.github.com/>`__.
+
+Next create the required folders and clone our master branch:
+
+.. code-block:: console
+
+    ~ # mkdir -p ~/devel
+    ~ # cd ~/devel
+    ~ # git clone https://github.com/seqan/seqan.git seqan
+
+
+You can update this branch at a later point by running ``git pull`` in ``~/devel/seqan`` .
diff --git a/manual/source/Infrastructure/Use/InstallDependencies.rst b/manual/source/Infrastructure/Use/InstallDependencies.rst
new file mode 100644
index 0000000..c0645d0
--- /dev/null
+++ b/manual/source/Infrastructure/Use/InstallDependencies.rst
@@ -0,0 +1,46 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _infra-use-install-dependencies:
+
+Installing Dependencies
+=======================
+
+SeqAn can optionally make use of ZLIB and BZip2. This is relevant mostly for Input/Output.
+Depending on your operating system you may need to install extra packages of these libraries or their headers.
+
+GNU/Linux
+---------
+
+It depends on your distribution whether these packages are installed by default or not.
+
+On Debian, Ubuntu, Mint and similar distributions:
+
+.. code-block:: console
+
+    # sudo apt install zlib1g-dev libbz2-dev
+
+Mac and BSD
+-----------
+
+Nothing needs to be done, the libraries and their headers are pre-installed.
+
+Windows
+-------
+
+The downloadable contribs contain precompiled library binaries (zlib, libbz2) for Windows by the supported compilers.
+The contribs come in 32 bit and 64 bit variants.
+
+* `Download contribs for 32 bit builds <http://ftp.seqan.de/contribs/seqan-contrib-D20160115-x86.zip>`_.
+* `Download contribs for 64 bit builds <http://ftp.seqan.de/contribs/seqan-contrib-D20160115-x64.zip>`_.
+
+You can install both variants in parallel if you want to do both 32 bit and 64 bit builds.
+Previous contribs packages are available `here <http://ftp.seqan.de/contribs/>`__ and `here <http://svn.mi.fu-berlin.de/seqan-contrib/>`__ you can find the code for building contribs with new VS versions, for example.
+
+Now, extract the downloaded ZIP file either to ``C:\Program Files`` or ``C:\``.
+
+**After downloading the 64 bit variant**, you should now have a folder named ``C:\Program Files\seqan-contrib-D20160115-x64`` or a folder named ``C:\seqan-contrib-D20130710-x64``.
+
+**After downloading the 32 bit variant**, you should now have a folder named ``C:\Program Files\seqan-contrib-D20160115-x86`` or a folder named ``C:\seqan-contrib-D20130710-x86``.
+
diff --git a/manual/source/Infrastructure/Use/index.rst b/manual/source/Infrastructure/Use/index.rst
new file mode 100644
index 0000000..6fdfe7c
--- /dev/null
+++ b/manual/source/Infrastructure/Use/index.rst
@@ -0,0 +1,49 @@
+.. _infra-use:
+
+User Guide
+==========
+
+Before you can start using the SeqAn library you have to make sure that it is installed and set up correctly. Optionally also install the dependencies:
+
+  * :ref:`Installing SeqAn <infra-use-install>`
+  * :ref:`Installing Dependencies <infra-use-install-dependencies>`
+
+Once this is done you have two choices for using SeqAn:
+
+  * :ref:`Using SeqAn in CMake-based projects <infra-use-cmake>`
+  * :ref:`Integration with your own Build System <infra-use-custom>`
+
+We highly recommend using the CMake-Module as it correctly handles many settings you otherwise need to set manually. It also provides the best cross-platform compatibility.
+
+If you choose to use CMake, the following document contains more information on build configurations and using multiple build directories in parallel:
+
+  * :ref:`CMake Build Directories <infra-use-cmake-build-dirs>`
+
+
+Some notes on using this manual
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+You will often see something like this in the manual:
+
+.. code-block:: console
+
+   # mkdir -p /tmp/mytempdir
+
+This is called a terminal and you can find it on all major operating systems, sometimes also called "Konsole" or "Shell" (although that is something different strictly speaking).
+
+You are expected to enter whatever comes right of the ``#`` (sometimes also the ``$``) and then press ``RETURN``. Knowing your way around the Terminal will make things easier, but it should be possible to just copy'n'paste.
+
+.. important::
+
+    On Windows you are expected to be using the **PowerShell**, and not the legacy command prompt. Our tutorials will only work with the PowerShell!
+
+.. toctree::
+    :glob:
+    :titlesonly:
+    :hidden:
+
+    Install.rst
+    InstallDependencies.rst
+    FindSeqAnCMake.rst
+    CustomBuildSystem.rst
+    CMakeBuildDirs.rst
diff --git a/manual/source/StyleGuide.rst b/manual/source/StyleGuide.rst
deleted file mode 100644
index 735d326..0000000
--- a/manual/source/StyleGuide.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-.. _style-guide:
-
-SeqAn Style Guides
-------------------
-
-.. toctree::
-   :glob:
-   :maxdepth: 1
-
-   StyleGuide/*
diff --git a/manual/source/StyleGuide/JavaScript.rst b/manual/source/StyleGuide/JavaScript.rst
deleted file mode 100644
index d89fe19..0000000
--- a/manual/source/StyleGuide/JavaScript.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-.. _style-guide-javascript:
-
-SeqAn JavaScript Style Guide
-----------------------------
-
-Follow the :ref:`SeqAn C++ Style Guide <style-guide-cpp>` in spirit.
diff --git a/manual/source/Tutorial.rst b/manual/source/Tutorial.rst
deleted file mode 100644
index d4dc027..0000000
--- a/manual/source/Tutorial.rst
+++ /dev/null
@@ -1,257 +0,0 @@
-.. We create this roles for putting the "Introduction: etc. headings
-   on this page without them displaying in the ToC.  This would break
-   rendering the ToC correctly on readthedocs style.  The rubric
-   headings are formatted using CSS.
-.. role:: rubric-heading1
-   :class: rubric-heading1
-.. role:: rubric-heading2
-   :class: rubric-heading2
-
-.. _tutorial:
-
-Tutorial
---------
-
-.. The inclusion order in the following determines the order in the table
-   of contents to the left.
-.. toctree::
-   :hidden:
-   :maxdepth: 2
-
-   Tutorial/GettingStarted
-   Tutorial/BackgroundAndMotivation
-   Tutorial/AFirstExample
-
-   Tutorial/Sequences
-   Tutorial/Alphabets
-   Tutorial/StringSets
-   Tutorial/SequencesInDepth
-
-   Tutorial/Iterators
-
-   Tutorial/AlignmentRepresentation
-   Tutorial/PairwiseSequenceAlignment
-   Tutorial/MultipleSequenceAlignment
-
-   Tutorial/Indices
-   Tutorial/IndexIterators
-   Tutorial/QgramIndex
-
-   Tutorial/PatternMatching
-
-   Tutorial/Graphs
-
-   Tutorial/FileIOOverview
-   Tutorial/SequenceIO
-   Tutorial/IndexedFastaIO
-   Tutorial/SamAndBamIO
-   Tutorial/VcfIO
-   Tutorial/BedIO
-   Tutorial/GffAndGtfIO
-   Tutorial/BlastIO
-
-   Tutorial/Modifiers
-
-   Tutorial/SeedAndExtend
-
-   Tutorial/ParsingCommandLineArguments
-
-   Tutorial/GenomeAnnotations
-
-   Tutorial/FragmentStore
-   Tutorial/ConsensusAlignment
-   Tutorial/Realignment
-
-   Tutorial/SimpleRnaSeq
-   Tutorial/JournaledSet
-   Tutorial/KnimeNode
-
-   Tutorial/BasicTechniques
-   Tutorial/Metafunctions
-   Tutorial/GenericProgramming
-   Tutorial/GlobalFunctionInterface
-
-   Tutorial/Basics
-   Tutorial/WritingTests
-
-The SeqAn tutorials are the best way to get started with learning how to develop using SeqAn.
-In contrast, the `API Documentation <http://docs.seqan.de/>`_ gives more comprehensive but less verbose documentation about the library while the How-Tos are strictly task driven and narrower in scope.
-
-The main audience of the tutorials are graduate students and professionals who want to learn how to use SeqAn.
-Previous programming knowledge is required, knowledge of C++ is recommended.
-
-.. rubric:: :rubric-heading1:`Introduction`
-
-These tutorials show you how to get started with SeqAn, including the :ref:`installation <tutorial-getting-started>`.
-Then, you can learn about the background and motivation of SeqAn.
-You should then definitely start your engines and read the :ref:`tutorial-first-steps-in-seqan` tutorial to see an example highlighting many important concepts in the SeqAn library.
-
-:ref:`tutorial-getting-started`
-  This tutorial will walk you through the installation of SeqAn and its dependencies.
-  Then, you will create your first minimal SeqAn application!
-
-:ref:`tutorial-background-and-motivation`
-  This tutorial gives an overview over the design aims and principles of SeqAn and a motivation for the employed mechanisms.
-
-:ref:`tutorial-first-steps-in-seqan`
-  This tutorial gives practical examples and applications of the most important basic techniques.
-  You should read this tutorial if you are starting out with SeqAn.
-
-
-We highly recommend you to follow the Getting Started instructions if you are starting out with SeqAn.
-Note that it is also possible to use SeqAn strictly as a library with your own build system.
-The article :ref:`build-manual-integration-with-your-own-build-system` contains detailed information about this.
-
-.. rubric:: :rubric-heading1:`A Stroll Through SeqAn`
-
-.. rubric:: :rubric-heading2:`Sequences`
-
-:ref:`tutorial-sequences`
-  This tutorial introduces you to the basics of fundamental concept of sequences, namely Strings and Segments.
-
-:ref:`tutorial-alphabets`
-  This tutorial introduces you to SeqAn's alphabets, or in other words, the contained types of sequences.
-
-:ref:`tutorial-string-sets`
-  StringSets This tutorial introduces you to SeqAn's ``StringSet``, an efficient data structure to store a set of sequences.
-
-:ref:`tutorial-sequences-in-depth`
-  In this tutorial you will learn how to optimize the work with sequences, using different specializations of Strings and different overflow strategies for capacity changes.
-
-.. rubric:: :rubric-heading2:`Iterators`
-
-:ref:`tutorial-iterators`
-  This tutorial explains how to use iterators in SeqAn, illustrated on containers.
-
-.. rubric:: :rubric-heading2:`Alignments`
-
-:ref:`tutorial-alignment-representation`
-  This section of the tutorial introduces you to the data structures that are used to represent alignments in SeqAn.
-
-:ref:`tutorial-pairwise-sequence-alignment`
-  In this part of the tutorial we demonstrate how to compute pairwise sequence alignments in SeqAn.
-  It shows the use of different scoring schemes, and which parameters can be used to customize the alignment algorithms.
-
-:ref:`tutorial-multiple-sequence-alignment`
-  In the last section of this tutorial we show how to compute multiple sequence alignments in SeqAn using a scoring matrix.
-
-.. rubric:: :rubric-heading2:`Indices`
-
-:ref:`tutorial-indices`
-  This tutorial introduces you to the various indices in SeqAn like extended suffix arrays or k-mer indices.
-
-:ref:`tutorial-index-iterators`
-  This tutorial introduces you to the various index iterators with which you can use indices as if traversing search trees or tries.
-
-:ref:`tutorial-q-gram-index`
-  This tutorial introduces you to SeqAn's q-gram index.
-
-.. rubric:: :rubric-heading2:`Pattern Matching`
-
-:ref:`tutorial-pattern-matching`
-  This section of the tutorial introduces you to the algorithms in SeqAn for exact and approximate pattern matching.
-
-.. rubric:: :rubric-heading2:`Graphs`
-
-:ref:`tutorial-graphs`
-  This section of the tutorial introduces you to the graph type in SeqAn.
-  We will discuss the various graph specializations and show you how to create directed and undirected graphs as well as HMMs, how to store additional information for edges and vertices and last but not least how to apply standard algorithms to the graphs.
-
-.. rubric:: :rubric-heading2:`Input/Output`
-
-:ref:`tutorial-input-output-overview`
-  This article gives an overview of the formatted file I/O functionality in SeqAn.
-
-:ref:`tutorial-sequence-io`
-  This tutorial explains how to access FASTA, FASTQ, EMBL and GenBank sequence files.
-
-:ref:`tutorial-indexed-fasta-io`
-  This tutorial explains how to use FASTA index files for quick random access within FASTA files: read contigs or just sections without having to read through whole FASTA file.
-
-:ref:`tutorial-sam-bam-io`
-  This tutorial explains how to access SAM and BAM files.
-
-:ref:`tutorial-vcf-io`
-  This tutorial explains how to access VCF files.
-
-:ref:`tutorial-bed-io`
-  This tutorial explains how to access BED files.
-
-:ref:`tutorial-gff-and-gtf-io`
-  This tutorial explains how to access GFF and GTF files.
-
-.. DISABLED :ref:`tutorial-custom-io`
-  This tutorial explains how to access files in your own format.
-
-
-.. rubric:: :rubric-heading2:`Modifiers`
-
-:ref:`tutorial-modifiers`
-  Modifiers Modifiers can be used to change the elements of a container without touching them.
-  Here you will see, what modifiers are available in SeqAn.
-
-.. rubric:: :rubric-heading2:`Seed-And-Extend`
-
-:ref:`tutorial-seed-and-extend`
-  In this part of the tutorial we will introduce SeqAn's seed class, demonstrate seed extension and banded alignment with seeds, and finally show the usage of seed chaining algorithms.
-
-.. rubric:: :rubric-heading2:`Parsing Command Line Arguments`
-
-:ref:`tutorial-parsing-command-line-arguments`
-  Parsing Command Line Arguments In this tutorial, you will learn how to use the  ArgumentParser class for parsing command line arguments.
-
-.. rubric:: :rubric-heading2:`Genome Annotations`
-
-:ref:`tutorial-genome-annotations`
-  You will learn how to work with annotations in SeqAn and analyzing them, using the :dox:`FragmentStore::annotationStore` which is part of SeqAn's :dox:`FragmentStore`.
-
-
-.. rubric:: :rubric-heading1:`Advanced Tutorials`
-
-:ref:`tutorial-fragment-store`
-  This tutorial shows how to use the fragment store which is a database for read mapping, sequence assembly or gene annotation.
-  It supports to read/write multiple read alignments in SAM or AMOS format and access and modify them.
-  It supports to read/write gene annotations in GFF/GTF and UCSC format, to create custom annotation types, and to traverse and modify the annotation tree.
-
-:ref:`tutorial-consensus-alignment`
-  This tutorial describes how to compute consensus alignments from NGS reads or other nucleic sequence, such as transcripts.
-  The DNA sequences are stored in a fragment store, such that rough alignment information is available.
-
-:ref:`tutorial-realignment`
-  This tutorial describes how to use SeqAn's realignment module for refining multi-read alignment (or other sequences) stored in a fragment store.
-
-:ref:`tutorial-simple-rna-seq`
-  In this tutorial you will learn how to implement a simple RNA-Seq based gene quantification tool, that computes RPKM expression levels based on a given genome annotation and RNA-Seq read alignments.
-
-:ref:`tutorial-data-journaling`
-  In this tutorial we demonstrate how you can handle multiple large sequence in main memory while the data structures themself support a certain parallel sequence analysis.
-
-:ref:`tutorial-knime-nodes`
-  Here you can learn how to use SeqAn apps in KNIME.
-
-.. rubric:: :rubric-heading1:`Developer's Corner`
-
-First, congratulations on becoming an offical SeqAn developer!
-After you went through the tutorials and before you actually start to develop your own application with SeqAn you might want to learn :ref:`how-to-write-tests` and read about the :ref:`API documentation <style-guide-dox-api-docs>`.
-In addition, we follow a SeqAn specific :ref:`style-guide`.
-Information like this can be found on the section site.
-There are plenty of information completing your knowledge about SeqAn so have a look!
-
-.. rubric:: :rubric-heading2:`Frequently used Software Techniques`
-
-We assume that the user is acquainted with the basic data types of SeqAn, the introductory example and the demo programs.
-Also you should be acquainted with the STL and template programming.
-In this Section we introduce the three main techniques of programming in SeqAn, namely the *global function interface*, the use of
-*Metafunctions*, and the concept of *Template subclassing*.
-
-:ref:`tutorial-basic-techniques`
-  Here we remind you of the basics of template programming and the use of the STL.
-
-:ref:`tutorial-metafunctions`
-  In this section you find an introductory explanation how Metafunctions are used in SeqAn to obtain information about data types used which will only be instantiated at compile time.
-
-:ref:`tutorial-template-subclassing`
-  In this section you find a short example that illustrates the power of template subclassing.
-
-:ref:`tutorial-global-function-interface`
-  In this section you find a useful piece of code that shows you the flexibility of the global function interface.
diff --git a/manual/source/Tutorial/MultipleSequenceAlignment.rst b/manual/source/Tutorial/Algorithms/Alignment/MultipleSequenceAlignment.rst
similarity index 93%
rename from manual/source/Tutorial/MultipleSequenceAlignment.rst
rename to manual/source/Tutorial/Algorithms/Alignment/MultipleSequenceAlignment.rst
index f1535c4..4d72fae 100644
--- a/manual/source/Tutorial/MultipleSequenceAlignment.rst
+++ b/manual/source/Tutorial/Algorithms/Alignment/MultipleSequenceAlignment.rst
@@ -1,9 +1,8 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-multiple-sequence-alignment:
+.. _tutorial-algorithms-alignment-multiple-sequence-alignment:
 
 Multiple Sequence Alignment
 ===========================
@@ -18,15 +17,15 @@ Duration
   30 min
 
 Prerequisites
-  :ref:`tutorial-first-steps-in-seqan`, :ref:`tutorial-sequences`, :ref:`tutorial-alphabets`, :ref:`tutorial-alignment-representation`, :ref:`tutorial-pairwise-sequence-alignment`
+  :ref:`tutorial-datastructures-sequences`, :ref:`tutorial-datastructures-alignment`
 
 Alignments are at the core of biological sequence analysis and part of the "bread and butter" tasks in this area.
-As you have learned in the :ref:`pairwise alignment tutorial <tutorial-pairwise-sequence-alignment>`, SeqAn offers powerful and flexible functionality for coputing such pairwise alignments.
+As you have learned in the :ref:`pairwise alignment tutorial <tutorial-algorithms-alignment-pairwise-sequence-alignment>`, SeqAn offers powerful and flexible functionality for coputing such pairwise alignments.
 This tutorial shows how to compute multiple sequence alignments (MSAs) using SeqAn.
 First, some background on MSA will be given and the tutorial will then explain how to create multiple sequence alignments.
 
 Note that this tutorial focuses on the ``<seqan/graph_msa.h>`` module whose purpose is the computation of **global** MSAs, i.e. similar to SeqAn::T-Coffe :cite:`Rausch2008` or ClustalW :cite:`Thompson1994`.
-If you are interested in computing consensus sequences of multiple overlapping sequences (e.g. NGS reads), similar to assembly after the layouting step, then have a look at the :ref:`tutorial-consensus-alignment` tutorial.
+If you are interested in computing consensus sequences of multiple overlapping sequences (e.g. NGS reads), similar to assembly after the layouting step, then have a look at the :ref:`tutorial-algorithms-consensus-alignment` tutorial.
 
 While the pairwise alignment of sequences can be computed exactly in quadratic time usind dynamic programming, the computation of exact MSAs is harder.
 Given :math:`n` sequences of length :math:`\ell`, the exact computation of an MSA is only feasible in time :math:`\mathcal{O}(\ell^n)`.
diff --git a/manual/source/Tutorial/PairwiseSequenceAlignment.rst b/manual/source/Tutorial/Algorithms/Alignment/PairwiseSequenceAlignment.rst
similarity index 83%
rename from manual/source/Tutorial/PairwiseSequenceAlignment.rst
rename to manual/source/Tutorial/Algorithms/Alignment/PairwiseSequenceAlignment.rst
index a59ce56..e9ad9e3 100644
--- a/manual/source/Tutorial/PairwiseSequenceAlignment.rst
+++ b/manual/source/Tutorial/Algorithms/Alignment/PairwiseSequenceAlignment.rst
@@ -1,12 +1,11 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-pairwise-sequence-alignment:
+.. _tutorial-algorithms-alignment-pairwise-sequence-alignment:
 
 Pairwise Sequence Alignment
----------------------------
+===========================
 
 Learning Objective
   You will learn how to compute global and local alignments, how you can use different scoring schemes, and how you can customize the alignments to fulfill your needs.
@@ -18,54 +17,20 @@ Duration
   1h
 
 Prerequisites
-  :ref:`tutorial-first-steps-in-seqan`, :ref:`tutorial-iterators`, :ref:`tutorial-alphabets`, :ref:`tutorial-sequences`, :ref:`tutorial-alignment-representation`
+  :ref:`tutorial-getting-started-first-steps-in-seqan`, :ref:`tutorial-datastructures-sequences`, :ref:`tutorial-datastructures-alignment-scoringschemes`, :ref:`tutorial-datastructures-graphs`
 
 Alignments are one of the most basic and important ways to measure similarity between two or more sequences.
 In general, a pairwise sequence alignment is an optimization problem which determines the best transcript of how one sequence was derived from the other.
 In order to give an optimal solution to this problem, all possible alignments between two sequences are computed using a **Dynamic Programming** approach.
-Scoring schemes allow the comparison of the alignments such that the one with the best score can be picked.
+:dox:`Score Scoring schemes` allow the comparison of the alignments such that the one with the best score can be picked.
 Despite of the common strategy to compute an alignment, there are different variations of the standard DP algorithm laid out for special purposes.
 
-We will first introduce you to the scoring schemes followed by the global alignments.
+We will first introduce you to the global alignments.
 Subsequent, you will learn how to compute local alignments.
 Finally, we will demonstrate how you can reduce the search space using a band.
 
-Scoring Schemes
-~~~~~~~~~~~~~~~
-
-Scoring schemes define the score for aligning two characters of a given alphabet and the score for gaps within alignments.
-Given an alignment between two sequences and a scoring scheme, the score of the alignment can be computed as the sum of the scores for aligned character pairs plus the sum of the scores for all gaps.
-
-An example for a scoring scheme is the Levenshtein distance, for which each mismatch between two aligned characters costs 1 and each character that is aligned with a gap costs 1.
-Translated into scores instead of costs, misalignments get a score of -1 and gaps a score of -1 per character, while matches costs nothing.
-This scoring scheme is the default for :dox:`SimpleScore`.
-
-SeqAn offers two kinds of scoring scheme:
-
-:dox:`SimpleScore Simple Score`
-  This scoring scheme differentiates between "match" (the two aligned characters are the same), "mismatch" (the two aligned characters are different), and gaps.
-
-  The score for a gap of length :math:`k` is :math:`gapOpen + (k - 1) \cdot gapExtend`.
-  If :math:`gapOpen` equals :math:`gapExtend` the score scheme uses linear gap costs, otherwise it uses affine gap costs.
-
-  The functions :dox:`SimpleScore#scoreMatch` and :dox:`SimpleScore#scoreMismatch` access values for match and mismatch.
-  The function :dox:`SimpleScore#scoreGap`, or :dox:`SimpleScore#scoreGapExtend` and :dox:`SimpleScore#scoreGapOpen` access values for gaps.
-
-Scoring Matrices
-
-  These scoring schemes store a score value for each pair of characters.
-  This value can be accessed using :dox:`Score#score`.
-  Examples for this kind of scoring scheme are :dox:`Pam120` and :dox:`Blosum62`.
-  The class :dox:`MatrixScore` can be used to store arbitrary scoring matrices.
-  Also see the :ref:`how-to-work-with-custom-score-matrices` on custom scoring matrices.
-
-.. tip::
-
-   The order of the different costs in the scoring scheme is ``match``, ``mismatch``, ``gapExtend`` and ``gapOpen``.
-   If you want to use linear gap costs you could also omit the last parameter ``gapOpen`` and the scoring scheme would automatically choose the linear gap cost function.
-
 Global Alignments
-~~~~~~~~~~~~~~~~~
+-----------------
 
 In this section, we want to compute a global alignment using the Needleman-Wunsch algorithm.
 We will use the Levenshtein distance as our scoring scheme.
@@ -76,7 +41,7 @@ We tell the program that it has to use the ``seqan`` namespace and write the ``m
 
 A good programming practice is to define all types that shall be used by the function at the beginning of the function body.
 In our case, we define a ``TSequence`` type for our input sequences and an :dox:`Align` object (``TAlign``) type to store the alignment.
-For more information on the Align datastructure, please read the tutorial :ref:`tutorial-alignment-representation`.
+For more information on the Align datastructure, please read the tutorial :ref:`tutorial-datastructures-alignment-alignment-gaps`.
 
 .. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp
    :fragment: main
@@ -110,17 +75,15 @@ Assignment 1
 
    Objective
 
-     Compute a global alignment between the DNA sequences ``"AAATGACGGATTG"``.
-     ``"AGTCGGATCTACTG"`` using the Gotoh algorithm with the following scoring parameters: ``match = 4``, ``mismatch = -2``, ``gapOpen = -4`` and ``gapExtend = -2``.
-     Store the alignment in an Align object and and print it together with the score.
+     Compute two global alignments between the DNA sequences ``"AAATGACGGATTG"``.
+     ``"AGTCGGATCTACTG"`` using the Gotoh algorithm :cite:`gotoh1982improved`, implementing the Affine Gap model, with the following scoring parameters: ``match = 4``, ``mismatch = -2``, ``gapOpen = -4`` and ``gapExtend = -2``.
+     Store the alignments in two Align objects and print them together with the scores.
 
    Hints
      .. container:: foldable
 
-        The Gotoh algorithm uses an affine gap function.
-        In SeqAn you can switch between linear and affine gap functions using the scoring scheme by setting different parameters for ``gapOpen`` and ``gapExtend``.
-        Note, the order of the scoring parameters is important.
-        Have a look on the scoring scheme section above if you are not sure about the correct ordering.
+        The Gotoh algorithm uses the Affine Gap function. In SeqAn you can switch between Linear, Affine and Dynamic gap functions by customizing your scoring scheme with one of the three tags ``LinearGaps()``, ``AffineGaps()`` or ``DynamicGaps()`` and relative penalty values ``gapOpen`` and ``gapExtend``. When a single gap value is provided the Linear Gap model is selected as default while the Affine Gap model is chosen as standard when two different gap costs are set. If the Dynamic Ga [...]
+        Have a look on the :ref:`tutorial-datastructures-alignment-scoringschemes` section if you are not sure about the correct ordering.
 
    Solution
      .. container:: foldable
@@ -160,7 +123,7 @@ Assignment 1
 
 
 Overlap Alignments
-^^^^^^^^^^^^^^^^^^
+------------------
 
 .. image:: alignment_AlignConfig.png
    :width: 300px
@@ -194,7 +157,7 @@ Then we simply pass ``strings`` as an argument to the constructor of the Alignme
 
 Now we are ready to compute the alignment.
 This time we change two things when calling the ``globalAlignment`` function.
-First, we use an :dox:`AlignmentGraph` to store the computed alignment and second we use the :dox:`AlignConfig` object to compute the overlap alignment.
+First, we use an :dox:`AlignmentGraph` to store the computed alignment and second we use the :dox:`AlignConfig` object to compute the overlap alignment. The gap model tag can be provided as last argument.
 
 .. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_overlap.cpp
    :fragment: alignment
@@ -219,7 +182,7 @@ Assignment 2
    Hint
      .. container:: foldable
 
-        A semi-global alignment is a special form of an overlap alignment often used when aligning short sequences again a long sequence.
+        A semi-global alignment is a special form of an overlap alignment often used when aligning short sequences against a long sequence.
         Here we only allow free end-gaps at the beginning and the end of the shorter sequence.
 
    Solution
@@ -255,7 +218,7 @@ Assignment 2
         .. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment2.cpp.stdout
 
 Specialized Alignments
-^^^^^^^^^^^^^^^^^^^^^^
+----------------------
 
 SeqAn offers specialized algorithms that can be selected using a tag.
 Note that often these specializations are restricted in some manner.
@@ -319,7 +282,7 @@ Assignment 3
      .. container:: foldable
 
         As usual, first the necessary includes and typedefs.
-        Our sequence type is ``String<Dna>``.
+        Our sequence type is ``String<Rna>``.
         ``TAlign`` and ``TRow`` are defined as in the previous example program.
         The type ``Iterator<TRow>::Type`` will be used to iterate over the rows of the alignment.
 
@@ -347,7 +310,7 @@ Assignment 3
 
 
 Local Alignments
-~~~~~~~~~~~~~~~~
+----------------
 
 Now let's look at local pairwise alignments.
 
@@ -363,7 +326,7 @@ Let's start with initializing the :dox:`Align` object to contain the two sequenc
 .. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_local.cpp
    :fragment: init1
 
-Now the best alignment given the scoring parameters is computed by the function :dox:`localAlignment`.
+Now the best alignment given the scoring parameters is computed using the Dynamic Gap model by the function :dox:`localAlignment`.
 The returned score value is printed directly, and the alignment itself in the next line.
 The functions :dox:`Gaps#clippedBeginPosition` and :dox:`Gaps#clippedEndPosition` can be used to retrieve the begin and end position of the matching subsequences within the original sequences.
 
@@ -400,7 +363,7 @@ Assignment 4
      Write a program which computes the 3 best local alignments of the two :dox:`AminoAcid` sequences "``PNCFDAKQRTASRPL``" and "``CFDKQKNNRTATRDTA``" using the following scoring parameters: ``match = 3``, ``mismatch = -2``, ``gap open = -5``, ``gap extension = -1``.
 
    Hint
-     Use an extra variable to enumerate the <tt>k</tt> best alignments.
+     Use an extra variable to enumerate the k best alignments.
 
    Solution
      .. container:: foldable
@@ -426,7 +389,7 @@ Assignment 4
 
 
 Banded Alignments
-~~~~~~~~~~~~~~~~~
+-----------------
 
 .. image:: alignment_band.png
    :width: 300px
@@ -438,7 +401,7 @@ To define a band we have to pass two additional parameters to the alignment func
 The first one specifies the position where the lower diagonal of the band crosses the vertical axis.
 The second one specifies the position where the upper diagonal of the band crosses the horizontal axis.
 You can imagine the matrix as the fourth quadrant of the Cartesian coordinate system.
-Then the main diagonal of an alignment matrix is described by the function ``f(x) = -x`` and all diagonals that crosses the vertical axis below this point are specified with negative values and all diagonals that crosses the horizontal axis right of it are specified with positive values (see image).
+Then the main diagonal of an alignment matrix is described by the function ``f(x) = -x``, all diagonals that crosses the vertical axis below this point are specified with negative values while all diagonals that crosses the horizontal axis are specified with positive values (see image).
 A given band is valid as long as the relation ``lower diagonal <= upper diagonal`` holds.
 In case of equality, the alignment is equivalent to the hamming distance problem, where only substitutions are considered.
 
@@ -484,15 +447,15 @@ Assignment 5
     * Use the :dox:`SegmentableConcept#infix` function to return a subsequence of a string.
     * A CIGAR string is a different representation of an alignment.
       It consists of a number followed by an operation.
-      The number indicates how many consecutive operations of the same type are executed.
-      Operations can be <tt>M</tt> for match, <tt>S</tt> for mismatch, <tt>I</tt> for insertion and <tt>D</tt> for deletion.
+      The number indicates how many operations are executed.
+      Operations can be **M** for match or mismatch, **I** for insertion and **D** for deletion.
       Here is an example:
 
       ::
 
           ref: AC--GTCATTT
           r01: ACGTCTCA---
-          Cigar of r01: 2M2I1X3M3D
+          Cigar of r01: 2M2I4M3D
 
     Solution (Step 1)
       .. container:: foldable
@@ -538,8 +501,8 @@ Assignment 5
          .. includefrags:: demos/tutorial/pairwise_sequence_alignment/assignment5.cpp
             :fragment: main
 
-         In the first part of the algorithm we implement am alignment based verification process to identify positions in the `database` at which we can find our pattern with at most `2` errors.
-         We slide the `5*5` alignment matrix position by position over the `database` and use the `MeyersBitVector` to verify the hits.
+         In the first part of the algorithm we implement an alignment based verification process to identify positions in the `subject sequence` at which we can find our pattern with at most `2` errors.
+         We slide the `5*5` alignment matrix position by position over the `subject sequence` and use the `MeyersBitVector` to verify the hits.
          If the score is greater or equal than `-2`, then we have found a hit.
          We store the begin position of the hit in `locations`.
 
@@ -571,16 +534,11 @@ Assignment 5
          .. includefrags:: demos/tutorial/pairwise_sequence_alignment/assignment5.cpp
             :fragment: cigarDeletion
 
-         If there is neither an insertion nor a deletion, then there must be a match or a mismatch. As long as we encounter matches we move forward in the Gaps structures and count the number of consecutive matches. When we are done we report the match count.
-
-         .. includefrags:: demos/tutorial/pairwise_sequence_alignment/assignment5.cpp
-            :fragment: cigarMatch
-
-         In a similar procedure we determine the consecutive substitutions.
+         If there is neither an insertion nor a deletion, then there must be a match or a mismatch. As long as we encounter matches and mismatches we move forward in the Gaps structures.
          Finally we print out the position of the hit, its total number of edits and the corresponding cigar string.
 
          .. includefrags:: demos/tutorial/pairwise_sequence_alignment/assignment5.cpp
-            :fragment: cigarMismatch
+            :fragment: cigarMatchAndMismatch
 
          Here is the output of this program.
 
diff --git a/manual/source/Tutorial/Algorithms/Alignment/align_transcript.png b/manual/source/Tutorial/Algorithms/Alignment/align_transcript.png
new file mode 100644
index 0000000..fe42a88
Binary files /dev/null and b/manual/source/Tutorial/Algorithms/Alignment/align_transcript.png differ
diff --git a/manual/source/Tutorial/alignment_AlignConfig.png b/manual/source/Tutorial/Algorithms/Alignment/alignment_AlignConfig.png
similarity index 100%
rename from manual/source/Tutorial/alignment_AlignConfig.png
rename to manual/source/Tutorial/Algorithms/Alignment/alignment_AlignConfig.png
diff --git a/manual/source/Tutorial/alignment_band.png b/manual/source/Tutorial/Algorithms/Alignment/alignment_band.png
similarity index 100%
rename from manual/source/Tutorial/alignment_band.png
rename to manual/source/Tutorial/Algorithms/Alignment/alignment_band.png
diff --git a/manual/source/Tutorial/alignment_example.png b/manual/source/Tutorial/Algorithms/Alignment/alignment_example.png
similarity index 100%
rename from manual/source/Tutorial/alignment_example.png
rename to manual/source/Tutorial/Algorithms/Alignment/alignment_example.png
diff --git a/manual/source/Tutorial/Algorithms/Alignment/index.rst b/manual/source/Tutorial/Algorithms/Alignment/index.rst
new file mode 100644
index 0000000..802c12a
--- /dev/null
+++ b/manual/source/Tutorial/Algorithms/Alignment/index.rst
@@ -0,0 +1,38 @@
+.. _tutorial-algorithms-alignment:
+
+DP Alignment
+============
+
+..  toctree::
+    :hidden:
+    :titlesonly:
+
+    PairwiseSequenceAlignment
+    MultipleSequenceAlignment
+
+
+In bioinformatics, we often search for similarities between sequences.
+You might know the problem already from the pattern matching section.
+However, when we want to put a sequence in its evolutionary context, a simple pattern matching algorithm will not suffice, as it rather looks for small identical parts with some errors.
+But, if we have two sequences at hand, we don't actually know which patterns we are looking for.
+
+.. image:: align_transcript.png
+    :align: right
+    :width: 400 px
+    :alt: A transcript between two aligned sequences.
+
+To solve this problem, one computes a global pairwise sequence alignment to obtain an optimal transcript, that describes how these two sequences are related to each other.
+The transcript describes the edit operations (match, substitution, insertion and deletion) necessary to translate the one sequence into the other, as can be seen in the picture above.
+
+
+
+The alignment problem is solved with a dynamic programming (DP) algorithm which runs in :math:`\mathcal{O}(n^2)` time and space.
+Besides the global alignment approach many, many more variations of this DP based algorithm have been developed over time.
+SeqAn unified all of these approaches into a single DP core implementation which can be extended pretty easily and thus with all possible configurations is a very versatile and powerful tool to compute many desired alignment variants.
+
+In the :ref:`pairwise sequence alignment tutorial <tutorial-algorithms-alignment-pairwise-sequence-alignment>` you will learn more about the different alignment algorithms that are implemented and how to compute them.
+
+A more complex problem then the pairwise sequence alignment is the multiple sequence alignment, where the optimal alignment between many sequences is sought.
+Solving the problem exactly would be infeasible, since the combinations would explode. In fact the runtime is :math:`\mathcal{O}(n^k)`, where :math:`k` is the number of sequences.
+Instead, one rather builds up a multiple sequence alignment by progressively computing pairwise alignments.
+The :ref:`multiple sequence alignment tutorial <tutorial-algorithms-alignment-multiple-sequence-alignment>` teaches you how to compute a multiple sequence alignment in SeqAn.
diff --git a/manual/source/Tutorial/ConsensusAlignment.rst b/manual/source/Tutorial/Algorithms/ConsensusAlignment.rst
similarity index 95%
rename from manual/source/Tutorial/ConsensusAlignment.rst
rename to manual/source/Tutorial/Algorithms/ConsensusAlignment.rst
index 28e01a3..e6c9b75 100644
--- a/manual/source/Tutorial/ConsensusAlignment.rst
+++ b/manual/source/Tutorial/Algorithms/ConsensusAlignment.rst
@@ -1,9 +1,8 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-consensus-alignment:
+.. _tutorial-algorithms-consensus-alignment:
 
 Consensus Alignment
 ===================
@@ -20,7 +19,7 @@ Duration
   1 h
 
 Prerequisites
-  :ref:`tutorial-fragment-store`
+  :ref:`tutorial-datastructures-store-fragment-store`
 
 The SeqAn module ``<seqan/consensus.h>`` allows the computation of consensus alignments based on the method by Rausch et al. :cite:`Rausch2009`.
 It can be used for the consensus step in Overlap-Layout-Consensus assemblers.
diff --git a/manual/source/Tutorial/GlobalChaining.png b/manual/source/Tutorial/Algorithms/GlobalChaining.png
similarity index 100%
rename from manual/source/Tutorial/GlobalChaining.png
rename to manual/source/Tutorial/Algorithms/GlobalChaining.png
diff --git a/manual/source/Tutorial/GlobalChaining.svg b/manual/source/Tutorial/Algorithms/GlobalChaining.svg
similarity index 100%
rename from manual/source/Tutorial/GlobalChaining.svg
rename to manual/source/Tutorial/Algorithms/GlobalChaining.svg
diff --git a/manual/source/Tutorial/Algorithms/GraphAlgorithms.rst b/manual/source/Tutorial/Algorithms/GraphAlgorithms.rst
new file mode 100644
index 0000000..1ae3fa1
--- /dev/null
+++ b/manual/source/Tutorial/Algorithms/GraphAlgorithms.rst
@@ -0,0 +1,201 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _tutorial-algorithms-graph-algorithms:
+
+Graph Algorithms
+================
+
+Learning Objective
+  This tutorial shows how to use some graph algorithms in SeqAn. In particular we will use the dijkstra algorithm to find shortest path and viterbi Algorithm to compute Viterbi path of a sequence.
+
+Difficulty
+  Average
+
+Duration
+  1 h
+
+Prerequisites
+  :ref:`tutorial-datastructures-graphs`
+
+Overview
+--------
+
+The following graph algorithms are currently available in SeqAn:
+
+Elementary Graph Algorithms
+  * Breadth-First Search (:dox:`breadthFirstSearch`)
+  * Depth-First Search (:dox:`depthFirstSearch`)
+  * Topological Sort (:dox:`topologicalSort`)
+  * Strongly Connected Components (:dox:`stronglyConnectedComponents`)
+
+Minimum Spanning Tree
+  * Prim's Algorithm  (:dox:`primsAlgorithm`)
+  * Kruskal's Algorithm (:dox:`kruskalsAlgorithm`)
+
+Single-Source Shortest Path
+  * DAG Shortest Path (:dox:`dagShortestPath`)
+  * Bellman-Ford (:dox:`bellmanFordAlgorithm`)
+  * Dijkstra (:dox:`dijkstra`)
+
+All-Pairs Shortest Path
+ * All-Pairs Shortest Path (:dox:`allPairsShortestPath`)
+ * Floyd Warshall (:dox:`floydWarshallAlgorithm`)
+
+Maximum Flow
+ * Ford-Fulkerson (:dox:`fordFulkersonAlgorithm`)
+
+Transitive Closure
+ * Transitive Closure (:dox:`transitiveClosure`)
+
+Bioinformatics Algorithms
+ * Needleman-Wunsch (:dox:`globalAlignment`)
+ * Gotoh (:dox:`globalAlignment`)
+ * Hirschberg with Gotoh (:dox:`globalAlignment`)
+ * Smith-Waterman (:dox:`localAlignment`)
+ * Multiple Sequence Alignment (:dox:`globalMsaAlignment`)
+ * UPGMA (:dox:`upgmaTree`)
+ * Neighbor Joining (:dox:`njTree`)
+
+The biological algorithms use heavily the alignment graph.
+Most of them are covered in the tutorial :ref:`tutorial-datastructures-alignment`.
+All others use the appropriate standard graph.
+All algorithms require some kind of additional input, e.g., the Dijkstra algorithm requires a distance property map, alignment algorithms sequences and a score type and the network flow algorithm capacities on the edges.
+
+Generally, only a single function call is sufficient to carry out all the calculations of a graph algorithm.
+In most cases you will have to define containers that store the algorithms results prior to the function call.
+
+In our example, we apply the shortest-path algorithm of Dijkstra. It is implemented in the function :dox:`dijkstra`.
+
+Let's have a look at the input parameters.
+The first parameter is of course the graph, ``g``.
+Second, you will have to specify a vertex descriptor.
+The function will compute the distance from this vertex to all vertices in the graph.
+The last input parameter is an edge map containing the distances between the vertices.
+One may think that the distance map is already contained in the graph.
+Indeed this is the case for our graph type but it is not in general.
+The cargo of a graph might as well be a string of characters or any other type.
+So, we first have to find out how to access our internal edge map.
+We do not need to copy the information to a new map.
+Instead we can define an object of the type :dox:`InternalPropertyMap` of our type ``TCargo``.
+It will automatically find the edge labels in the graph when the function :dox:`PropertyMapConcept#property` or :dox:`PropertyMapConcept#getProperty` is called on it with the corresponding edge descriptor.
+
+The output containers of the shortest-path algorithm are two property maps, ``predMap`` and ``distMap``.
+The ``predMap`` is a vertex map that determines a shortest-paths-tree by mapping the predecessor to each vertex.
+Even though we are not interested in this information, we have to define it and pass it to the function.
+The ``distMap`` indicates the length of the shortest path to each vertex.
+
+.. includefrags:: demos/tutorial/graph/graph_dijkstra.cpp
+   :fragment: dijkstra-containers
+
+Having defined all these property maps, we can then call the function :dox:`dijkstra`:
+
+.. includefrags:: demos/tutorial/graph/graph_dijkstra.cpp
+   :fragment: dijkstra
+
+Finally, we have to output the result.
+Therefore, we define a second vertex iterator ``itV2`` and access the distances just like the city names with the function :dox:`PropertyMapConcept#property` on the corresponding property map.
+
+.. includefrags:: demos/tutorial/graph/graph_dijkstra.cpp
+   :fragment: dijkstra-output
+
+Assignment 1
+^^^^^^^^^^^^
+
+.. container:: assignment
+
+   Type
+     Application
+
+   Objective
+     Write a program which calculates the connected components of the graph defined in :ref:`tutorial-datastructures-graphs-assignment-2` of the Graphs tutorial and Output the connected component for each vertex.
+
+   Solution
+     .. container:: foldable
+
+        SeqAn provides the function :dox:`stronglyConnectedComponents` to compute the connected components of a directed graph.
+        The first parameter of this function is of course the graph.
+        The second parameter is an output parameter.
+        It is a vertex map that will map a component id to each vertex. Vertices that share the same id are in the same component.
+
+        .. includefrags:: demos/tutorial/graph/graph_algo_scc.cpp
+            :fragment: connected-components
+
+        Now, the only thing left to do is to walk through our graph and ouput each vertex and the corresponding component using the function :dox:`PropertyMapConcept#getProperty`.
+        One way of doing so is to define a :dox:`VertexIterator`.
+
+        .. includefrags:: demos/tutorial/graph/graph_algo_scc.cpp
+            :fragment: output-connected-components
+
+        .. includefrags:: demos/tutorial/graph/graph_algo_scc.cpp
+            :fragment: return
+
+        The output for the graph defined in the `Assignment 1`_ looks as follows:
+
+        .. includefrags:: demos/tutorial/graph/graph_algo_scc.cpp.stdout
+            :fragment: output-connected-components
+
+        The graph consists of four components.
+        The first contains vertex ``a``, ``b``, and ``e``, the second contains vertex ``c`` and ``d``, the third
+        contains vertex ``f`` and ``g`` and the last contains only vertex ``h``.
+
+
+Assignment 2
+^^^^^^^^^^^^
+
+.. container:: assignment
+
+   Type
+     Application
+
+   Objective
+      Extend the program from the :ref:`tutorial-datastructures-graphs-assignment-3` of the Graphs tutorial.
+      Given the sequence ``s = "CTTCATGTGAAAGCAGACGTAAGTCA"``.
+
+      #. calculate the Viterbi path of ``s`` and output the path as well as the probability of the path and
+      #. calculate the probability that the HMM generated ``s`` with the forward and backward algorithm.
+
+   Solution
+     .. container:: foldable
+
+        In :ref:`tutorial-datastructures-graphs-assignment-3` of the Graphs tutorial we defined an HMM with three states: exon, splice, and intron.
+
+        The Viterbi path is the sequence of states that is most likely to produce a given output.
+        In SeqAn, it can be calculated with the function :dox:`HmmAlgorithms#viterbiAlgorithm`.
+        The produced output for this assignment is the DNA sequence ``s``.
+
+        The first parameter of the function :dox:`HmmAlgorithms#viterbiAlgorithm` is of course the HMM, and the second parameter is the sequence ``s``.
+        The third parameter is an output parameter that will be filled by the function.
+        Since we want to compute a sequence of states, this third parameter is a :dox:`String` of :dox:`VertexDescriptor VertexDescriptors` which assigns a state to each character of the sequence ``s``.
+
+        The return value of the function :dox:`HmmAlgorithms#viterbiAlgorithm` is the overall probability of this sequence of states, the Viterbi path.
+
+        The only thing left is to output the path.
+        The path is usually longer than the given sequence.
+        This is because the HMM may have silent states, e.g. the begin and end state.
+        To check if a state is silent SeqAn provides the function :dox:`HmmGraph#isSilent`.
+
+        .. includefrags:: demos/tutorial/graph/graph_hmm.cpp
+            :fragment: viterbi
+
+        The output of the above piece of code is:
+
+        .. includefrags:: demos/tutorial/graph/graph_hmm.cpp.stdout
+            :fragment: viterbi
+
+        It is even simpler to use the forward algorithm in SeqAn since it needs only the HMM and the sequence as parameters and returns a single probability.
+        This is the probability of the HMM to generate the given sequence. The corresponding function is named :dox:`HmmAlgorithms#forwardAlgorithm`.
+
+        .. includefrags:: demos/tutorial/graph/graph_hmm.cpp
+            :fragment: forward-algorithm
+
+        Analogously, the function :dox:`HmmAlgorithms#backwardAlgorithm` implements the backward algorithm in SeqAn.
+
+        .. includefrags:: demos/tutorial/graph/graph_hmm.cpp
+            :fragment: backward-algorithm
+
+        The output of these two code fragments is:
+
+        .. includefrags:: demos/tutorial/graph/graph_hmm.cpp.stdout
+            :fragment: forward-backward
diff --git a/manual/source/Tutorial/Algorithms/PatternMatching/IndexedPatternMatching.rst b/manual/source/Tutorial/Algorithms/PatternMatching/IndexedPatternMatching.rst
new file mode 100644
index 0000000..cfd0da3
--- /dev/null
+++ b/manual/source/Tutorial/Algorithms/PatternMatching/IndexedPatternMatching.rst
@@ -0,0 +1,143 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _tutorial-algorithms-pattern-matching-indexed:
+
+Indexed Pattern Matching
+========================
+
+Learning Objective
+  In this tutorial you will learn how to use the SeqAn classes finder and pattern to search a known pattern in a string or :dox:`StringSet`.
+
+Difficulty
+  Average
+
+Duration
+  30 min
+
+Prerequisites
+  :ref:`tutorial-datastructures-sequences`, :ref:`tutorial-datastructures-indices`, :ref:`tutorial-algorithms-pattern-matching-online`
+
+Overview
+--------
+
+The :dox:`Finder` is an object that stores all necessary information for searching for a pattern. We have learned how to use it in :ref:`tutorial-algorithms-pattern-matching-online` tutorial.
+
+The following line of code shows how the :dox:`Finder` is initialized with an index. In this example, we search for the pattern ``ACGT``.
+
+.. includefrags:: demos/tutorial/indices/base.cpp
+      :fragment: finder
+
+Calling the function :dox:`Finder#find` invokes the localization of all occurrences of a given pattern.
+It works by modifying pointers of the ``Finder`` to tables of the index.
+For example, the :dox:`Finder` of ``esaIndex`` stores two pointers, pointing to the first and last suffix array entry that stores an occurrence of the pattern. The return value of the :dox:`Finder#find` function tells us whether or not a given pattern occurs in the text. Furthermore, if there are several instances of a pattern, consecutive calls of :dox:`Finder#find` will modify the :dox:`Finder` such that it points to the next occurrence after each call:
+
+.. includefrags:: demos/tutorial/indices/base.cpp
+      :fragment: finder_multiple
+
+The above code is not very useful, since we do not know the locations of the first, second or third pattern occurrence.
+The function :dox:`Finder#position` will help here.
+:dox:`Finder#position` called on a finder returns the location of the ``x``\ th pattern, where ``x`` can be the first, second, or any other occurrence of the pattern.
+
+.. includefrags:: demos/tutorial/indices/base.cpp
+      :fragment: finder_position
+
+.. tip::
+
+   Indices in SeqAn are built on demand.
+   That means that the index tables are not build when the constructor is called, but when we search for a pattern for the first time.
+
+Exact Search
+------------
+
+For the index based search the :dox:`Finder` needs to be specialized with an :dox:`Index` of the ``haystack`` in the first template argument.
+The index itself requires two template arguments, the ``haystack`` type and a index specialization.
+In contrast, since the ``needle`` is not preprocessed the second template argument of the :dox:`Pattern` has to be omitted.
+The following source illustrates the usage of an index based search in SeqAn using the example of the :dox:`IndexEsa` index (an enhanced suffix array index).
+This is the default index specialization if no second template argument for the index is given.
+We begin to create an index object of our ``haystack`` ``"tobeornottobe"`` and a ``needle`` ``"be"``.
+
+.. includefrags:: demos/tutorial/pattern_matching/find_index.cpp
+   :fragment: initialization
+
+We proceed to create a :dox:`Pattern` of the needle and conduct the search in the usual way.
+
+.. includefrags:: demos/tutorial/pattern_matching/find_index.cpp
+   :fragment: output
+
+Instead of creating and using a pattern solely storing the ``needle`` we can pass the needle directly to :dox:`Finder#find`.
+Please note that an :dox:`Index` based :dox:`Finder` has to be reset with :dox:`Finder#clear` before conducting another search.
+
+.. includefrags:: demos/tutorial/pattern_matching/find_index.cpp
+   :fragment: output_short
+
+Program output:
+
+.. includefrags:: demos/tutorial/pattern_matching/find_index.cpp.stdout
+
+
+All indices also support :dox:`StringSet` texts and can therefore be used to search multiple ``haystacks`` as the following example shows.
+We simply exchange the :dox:`CharString` of the haystack with a :dox:`StringSet` of :dox:`CharString` and append some strings to it.
+
+.. includefrags:: demos/tutorial/pattern_matching/find_index_multiple.cpp
+   :fragment: initialization
+
+The rest of the program remains unchanged.
+
+.. includefrags:: demos/tutorial/pattern_matching/find_index_multiple.cpp
+   :fragment: output
+
+.. includefrags:: demos/tutorial/pattern_matching/find_index_multiple.cpp.stdout
+
+
+The following index specializations support the :dox:`Finder` interface as described above.
+
+Specialization :dox:`IndexEsa`
+  Enhanced suffix array based index.
+  Supports arbitrary needles.
+
+Specialization :dox:`IndexQGram`
+  Q-gram index.
+  Needle mustn't exceed the size of the q-gram.
+
+Specialization :dox:`OpenAddressingQGramIndex Open Adressing QGram Index`
+  Q-gram index with open addressing.
+  Supports larger q-grams.
+  Needle and q-gram must have the same size.
+
+Besides the :dox:`Finder#find` interface there is another interface for indices using suffix tree iterators to search exact ``needle`` occurrences described in the tutorial :ref:`tutorial-datastructures-indices`.
+
+Assignment 1
+^^^^^^^^^^^^
+
+.. container:: assignment
+
+     Type
+       Application
+
+     Objective
+       Modify the example above to search with a :dox:`OpenAddressingQGramIndex Open Adressing QGram Index` q-gram index for matches of "tobe" in "tobeornottobe".
+
+     Solution
+      Click **more...** to see the solution.
+
+      .. container:: foldable
+
+         .. includefrags:: demos/tutorial/pattern_matching/assignment3_solution.cpp
+
+	 We simply add a second template argument to the definition of the :dox:`Index` as described in the documentation of the :dox:`OpenAddressingQGramIndex Open Adressing QGram Index`.
+	 As shape we can use an :dox:`UngappedShape` of length 4.
+
+	 Program output:
+
+         .. includefrags:: demos/tutorial/pattern_matching/assignment3_solution.cpp.stdout
+
+Approximate Filtration
+----------------------
+
+Currently there are no indices directly supporting an approximate search.
+But nevertheless, there are approximate search filters available that can be used to filter out regions of the ``haystack`` that do not contain an approximate match, see :dox:`SwiftFinder` and :dox:`SwiftPattern`.
+The regions found by these filters potentially contain a match and must be verified afterwards.
+:dox:`Finder#beginPosition`, :dox:`Finder#endPosition` and :dox:`Finder#infix` can be used to return the boundaries or sequence of such a potential match.
+For more details on using filters, see the article :ref:`how-to-recipes-filter-similar-sequences`.
diff --git a/manual/source/Tutorial/PatternMatching.rst b/manual/source/Tutorial/Algorithms/PatternMatching/OnlinePatternMatching.rst
similarity index 53%
rename from manual/source/Tutorial/PatternMatching.rst
rename to manual/source/Tutorial/Algorithms/PatternMatching/OnlinePatternMatching.rst
index b6a8bf9..5524ec0 100644
--- a/manual/source/Tutorial/PatternMatching.rst
+++ b/manual/source/Tutorial/Algorithms/PatternMatching/OnlinePatternMatching.rst
@@ -2,11 +2,10 @@
 
    .. contents::
 
+.. _tutorial-algorithms-pattern-matching-online:
 
-.. _tutorial-pattern-matching:
-
-Pattern Matching
-================
+Online Pattern Matching
+=======================
 
 Learning Objective
   In this tutorial you will learn how to use the SeqAn classes finder and pattern to search a known pattern in a string or :dox:`StringSet`.
@@ -18,42 +17,14 @@ Duration
   40 min
 
 Prerequisites
-  :ref:`tutorial-sequences`, :ref:`tutorial-indices`
-
-Pattern matching is about searching a known string or :dox:`StringSet` (``needle``) in another string or :dox:`StringSet` (``haystack``).
-This tutorial will introduce you into the SeqAn classes finder and pattern.
-It will demonstrate how to use the spezializations of the class finder to perform either an online search or an index based seach.
-And you will learn how to specify the search algorithm, which can be exact or approximate.
-
-Overview
---------
-
-In the case of approximate searching errors are allowed, which are either only mismatches or also indels.
-Additionally there are filtration algorithms which return potential matches, i.e. ``haystack`` segments possibly containing a pattern match.
-All searching is done by calling the function :dox:`Finder#find`, which takes at least two arguments:
-
-#. A :dox:`Finder` that stores all necessary information about the ``haystack`` and the last found position of the ``needle`` within the haystack.
-#. A :dox:`Pattern` that stores all information about the ``needle``.
-   Some variants of :dox:`Finder#find` support further arguments.
-   The :dox:`Finder` and :dox:`Pattern` classes expect the underlying ``haystack`` and ``needle`` types as first template arguments.
-   In addition, a second template argument specifies the search algorithm.
-
-Each call of :dox:`Finder#find` finds only one match (or potential match) of the ``needle`` within the haystack.
-The :dox:`Finder` can be asked for the begin and end position of the last found match.
-The :dox:`Pattern` can be asked for the number of the found sequence if the ``needle`` is a :dox:`StringSet`.
-Subsequent calls of find can be used to find more occurrences of the ``needle``, until no more occurrences can be found and find returns ``false``.
-
-In general, search algorithms can be divided into algorithms that preprocess the ``needle`` (online search) or preprocess the ``haystack`` (index search).
-
-Online Search
--------------
+  :ref:`tutorial-datastructures-sequences`, :ref:`tutorial-datastructures-indices`
 
 For all online search algorithms, the :dox:`Finder` is an iterator that scans over the ``haystack``.
 The :dox:`Pattern` is a search algorithm dependent data structure preprocessed from the ``needle``.
 The second template argument of the :dox:`Pattern` selects the search algorithm.
 
 Exact Search
-^^^^^^^^^^^^
+------------
 
 The following code snippet illustrates the usage of online search algorithms in SeqAn using the example of the Hoorspool algorithm :cite:`Horspool1980`.
 We begin by creating two strings of type ``char`` containing the ``haystack`` and the ``needle``.
@@ -108,7 +79,7 @@ Currently the following exact online algorithms for searching a single sequence
   Extension of :dox:`ShiftAndPattern ShiftAnd`, should only be used if the sum of needle lengths doesn't exceed the machine word size.
 
 Assignment 1
-""""""""""""
+^^^^^^^^^^^^
 
 .. container:: assignment
 
@@ -140,7 +111,7 @@ Assignment 1
          .. includefrags:: demos/tutorial/pattern_matching/assignment1_solution.cpp.stdout
 
 Approximate Search
-^^^^^^^^^^^^^^^^^^
+------------------
 
 The approximate search can be used to find segments in the ``haystack`` that are similar to a ``needle`` allowing errors, such as mismatches or indels.
 Note that if only mismatches are allowed, the difference of the end and begin position of a match is the length of the found ``needle``.
@@ -185,7 +156,7 @@ Specialization :dox:`AbndmAlgoPattern AbndmAlgo`
   Approximate Backward Nondeterministic DAWG Matching, adaption of :dox:`AbndmAlgoPattern AbndmAlgo`
 
 Assignment 2
-""""""""""""
+^^^^^^^^^^^^
 
 .. container:: assignment
 
@@ -211,101 +182,3 @@ Assignment 2
 	 The program's output is as follows.
 
          .. includefrags:: demos/tutorial/pattern_matching/assignment2_solution.cpp.stdout
-
-
-Index Search
-------------
-
-Exact Search
-^^^^^^^^^^^^
-
-For the index based search the :dox:`Finder` needs to be specialized with an :dox:`Index` of the ``haystack`` in the first template argument.
-The index itself requires two template arguments, the ``haystack`` type and a index specialization.
-In contrast, since the ``needle`` is not preprocessed the second template argument of the :dox:`Pattern` has to be omitted.
-The following source illustrates the usage of an index based search in SeqAn using the example of the :dox:`IndexEsa` index (an enhanced suffix array index).
-This is the default index specialization if no second template argument for the index is given.
-We begin to create an index object of our ``haystack`` ``"tobeornottobe"`` and a ``needle`` ``"be"``.
-
-.. includefrags:: demos/tutorial/pattern_matching/find_index.cpp
-   :fragment: initialization
-
-We proceed to create a :dox:`Pattern` of the needle and conduct the search in the usual way.
-
-.. includefrags:: demos/tutorial/pattern_matching/find_index.cpp
-   :fragment: output
-
-Instead of creating and using a pattern solely storing the ``needle`` we can pass the needle directly to :dox:`Finder#find`.
-Please note that an :dox:`Index` based :dox:`Finder` has to be reset with :dox:`Finder#clear` before conducting another search.
-
-.. includefrags:: demos/tutorial/pattern_matching/find_index.cpp
-   :fragment: output_short
-
-Program output:
-
-.. includefrags:: demos/tutorial/pattern_matching/find_index.cpp.stdout
-
-
-All indices also support :dox:`StringSet` texts and can therefore be used to search multiple ``haystacks`` as the following example shows.
-We simply exchange the :dox:`CharString` of the haystack with a :dox:`StringSet` of :dox:`CharString` and append some strings to it.
-
-.. includefrags:: demos/tutorial/pattern_matching/find_index_multiple.cpp
-   :fragment: initialization
-
-The rest of the program remains unchanged.
-
-.. includefrags:: demos/tutorial/pattern_matching/find_index_multiple.cpp
-   :fragment: output
-
-.. includefrags:: demos/tutorial/pattern_matching/find_index_multiple.cpp.stdout
-
-
-The following index specializations support the :dox:`Finder` interface as described above.
-
-Specialization :dox:`IndexEsa`
-  Enhanced suffix array based index.
-  Supports arbitrary needles.
-
-Specialization :dox:`IndexQGram`
-  Q-gram index.
-  Needle mustn't exceed the size of the q-gram.
-
-Specialization :dox:`OpenAddressingQGramIndex Open Adressing QGram Index`
-  Q-gram index with open addressing.
-  Supports larger q-grams.
-  Needle and q-gram must have the same size.
-
-Besides the :dox:`Finder#find` interface there is another interface for indices using suffix tree iterators to search exact ``needle`` occurrences described in the tutorial :ref:`tutorial-indices`.
-
-Assignment 3
-""""""""""""
-
-.. container:: assignment
-
-     Type
-       Application
-
-     Objective
-       Modify the example above to search with a :dox:`OpenAddressingQGramIndex Open Adressing QGram Index` q-gram index for matches of "tobe" in "tobeornottobe".
-
-     Solution
-      Click **more...** to see the solution.
-
-      .. container:: foldable
-
-         .. includefrags:: demos/tutorial/pattern_matching/assignment3_solution.cpp
-
-	 We simply add a second template argument to the definition of the :dox:`Index` as described in the documentation of the :dox:`OpenAddressingQGramIndex Open Adressing QGram Index`.
-	 As shape we can use an :dox:`UngappedShape` of length 4.
-
-	 Program output:
-
-         .. includefrags:: demos/tutorial/pattern_matching/assignment3_solution.cpp.stdout
-
-Approximate Filtration
-^^^^^^^^^^^^^^^^^^^^^^
-
-Currently there are no indices directly supporting an approximate search.
-But nevertheless, there are approximate search filters available that can be used to filter out regions of the ``haystack`` that do not contain an approximate match, see :dox:`SwiftFinder` and :dox:`SwiftPattern`.
-The regions found by these filters potentially contain a match and must be verified afterwards.
-:dox:`Finder#beginPosition`, :dox:`Finder#endPosition` and :dox:`Finder#infix` can be used to return the boundaries or sequence of such a potential match.
-For more details on using filters, see the article :ref:`how-to-filter-similar-sequences`.
diff --git a/manual/source/Tutorial/Algorithms/PatternMatching/index.rst b/manual/source/Tutorial/Algorithms/PatternMatching/index.rst
new file mode 100644
index 0000000..4d3a8e2
--- /dev/null
+++ b/manual/source/Tutorial/Algorithms/PatternMatching/index.rst
@@ -0,0 +1,36 @@
+.. _tutorial-algorithms-pattern-matching:
+
+Pattern Matching
+================
+
+..  toctree::
+    :hidden:
+    :titlesonly:
+
+    OnlinePatternMatching
+    IndexedPatternMatching
+
+Pattern matching is about searching a known string or :dox:`StringSet` (``needle``) in another string or :dox:`StringSet` (``haystack``).
+This tutorial will introduce you into the SeqAn classes :dox:`Finder` and :dox:`Pattern`.
+It will demonstrate how to use the spezializations of the class finder to perform either an online search or an index based seach.
+And you will learn how to specify the search algorithm, which can be either exact or approximate.
+
+Overview
+--------
+
+In the case of approximate searching errors are allowed, which are either only mismatches or also indels.
+Additionally there are filtration algorithms which return potential matches, i.e. ``haystack`` segments possibly containing a pattern match.
+All searching is done by calling the function :dox:`Finder#find`, which takes at least two arguments:
+
+#. A :dox:`Finder` that stores all necessary information about the ``haystack`` and the last found position of the ``needle`` within the haystack.
+#. A :dox:`Pattern` that stores all information about the ``needle``.
+   Some variants of :dox:`Finder#find` support further arguments.
+   The :dox:`Finder` and :dox:`Pattern` classes expect the underlying ``haystack`` and ``needle`` types as first template arguments.
+   In addition, a second template argument specifies the search algorithm.
+
+Each call of :dox:`Finder#find` finds only one match (or potential match) of the ``needle`` within the haystack.
+The :dox:`Finder` can be asked for the begin and end position of the last found match.
+The :dox:`Pattern` can be asked for the number of the found sequence if the ``needle`` is a :dox:`StringSet`.
+Subsequent calls of find can be used to find more occurrences of the ``needle``, until no more occurrences can be found and find returns ``false``.
+
+In general, search algorithms can be divided into algorithms that preprocess the ``needle`` (online search) or preprocess the ``haystack`` (index search).
diff --git a/manual/source/Tutorial/ReadLayout.png b/manual/source/Tutorial/Algorithms/ReadLayout.png
similarity index 100%
copy from manual/source/Tutorial/ReadLayout.png
copy to manual/source/Tutorial/Algorithms/ReadLayout.png
diff --git a/manual/source/Tutorial/ReadLayout.svg b/manual/source/Tutorial/Algorithms/ReadLayout.svg
similarity index 100%
copy from manual/source/Tutorial/ReadLayout.svg
copy to manual/source/Tutorial/Algorithms/ReadLayout.svg
diff --git a/manual/source/Tutorial/Realignment.rst b/manual/source/Tutorial/Algorithms/Realignment.rst
similarity index 89%
rename from manual/source/Tutorial/Realignment.rst
rename to manual/source/Tutorial/Algorithms/Realignment.rst
index dea6497..b51d345 100644
--- a/manual/source/Tutorial/Realignment.rst
+++ b/manual/source/Tutorial/Algorithms/Realignment.rst
@@ -1,9 +1,8 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-realignment:
+.. _tutorial-algorithms-realignment:
 
 Realignment
 ===========
@@ -22,13 +21,13 @@ Duration
   30 min
 
 Prerequisites
-  :ref:`tutorial-fragment-store`
+  :ref:`tutorial-datastructures-store-fragment-store`
 
 A common task in NGS data analysis is small variant calling (SNVs or indels with a length of up to 10 bp) after the read mapping step.
 Usually, one considers the "pileup" of the reads and looks for variant signatures (e.g. a certain number of non-reference characters in the aligned reads).
 Usually, read mappers compute pairwise alignments of each read and the reference and store them in a SAM or BAM file.
-In the absence of indels, such pairwise alignments can be converted to a multi-read alignment without larger problems.
-However, when multiple alignments are close, something as in the following figure can happen.
+In the absence of indels, such pairwise alignments can be converted to a multi-read alignment without problems.
+However, there can be an undesired multi-read alignment around indels (Figure 1).
 
 .. 
    Commented out because of missing picture in source dir.
@@ -42,7 +41,7 @@ Getting Started
 ---------------
 
 Consider the following program.
-It creates a fragment store and then reads a small reference (with a length of 2kb) from a FASTA file and also a SAM file with reads spanning a complex indel region at position ~920.
+It creates a fragment store and then reads a small reference (with a length of 2kb) from a FASTA file and also a SAM file with reads spanning a complex indel region at 1060 ~ 1140. 
 Finally, it prints the multi-read alignment around this position using :dox:`AlignedReadLayout`.
 
 .. includefrags:: demos/tutorial/realignment/step1.cpp
@@ -51,6 +50,8 @@ The output of the program is as follows:
 
 .. includefrags:: demos/tutorial/realignment/step1.cpp.stdout
 
+**Figure 1:** An example of a multi-read alignment from pairwise alignments
+
 Performing the Realignment
 --------------------------
 
diff --git a/manual/source/Tutorial/SeedAndExtend.rst b/manual/source/Tutorial/Algorithms/SeedExtension.rst
similarity index 73%
rename from manual/source/Tutorial/SeedAndExtend.rst
rename to manual/source/Tutorial/Algorithms/SeedExtension.rst
index cbd8084..328ce3c 100644
--- a/manual/source/Tutorial/SeedAndExtend.rst
+++ b/manual/source/Tutorial/Algorithms/SeedExtension.rst
@@ -1,17 +1,15 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
+.. _tutorial-algorithms-seed-extension:
 
-.. _tutorial-seed-and-extend:
-
-Seed-and-Extend
----------------
+Seed Extension
+==============
 
 Learning Objective
-  In this tutorial, you will learn about the seeds-related SeqAn functionality.
   You will learn how to do seed-and-extend with SeqAn, how to do local and global chaining of seeds.
-  Finally, we will show how to create a banded alignment around a seed chain.
+  Finally, you will learn how to create a banded alignment around a seed chain.
 
 Difficulty
   Average
@@ -20,77 +18,34 @@ Duration
   2 h
 
 Prerequisites
-  :ref:`tutorial-sequences`
+  :ref:`tutorial-datastructures-sequences`, :ref:`tutorial-datastructures-seeds`
+
+Overview
+--------
 
 Many efficient heuristics to find high scoring, but inexact, local alignments between two sequences start with small exact (or at least highly similar) segments, so called **seeds**, and extend or combine them to get larger highly similar regions.
 Probably the most prominent tool of this kind is BLAST :cite:`Altschul1990`, but there are many other examples like FASTA :cite:`Pearson1990` or LAGAN :cite:`Brudno2003`.
 
 SeqAn's header file for all data structures and functions related to two-dimensional seeds is ``<seqan/seeds.h>``.
 
-The Seed Class
-~~~~~~~~~~~~~~
-
-.. image:: Seeds.png
-   :align: right
-   :width: 300px
-
-The :dox:`Seed` class allows to store seeds. Seeds have a begin and end position in each sequence. Often, two or more close seeds are combined into a larger seed, possibly causing a shift in horizontal or vertical direction between the begin position of the upper left seed and the end position of the lower right seed. For this reason, the :dox:`Seed` class also stores an upper and a lower diagonal to reflect the expansion between those shifted seeds.
-
-The image to the right shows an example where three smaller seeds (black diagonals) were combined (or "chained locally") into one larger seed (green nine-sided area).
-The first seed lies on the begin diagonal, the lowermost seed on the lower diagonal and the uppermost seed on the upper diagonal.
-
-The :dox:`SimpleSeed Simple Seed` specialization only stores the begin and end positions of the seed (left-uppermost and right-lowermost corners of green surface) in both sequences and the upper and lower diagonal.
-The initial diagonals are not stored. The :dox:`ChainedSeed` specialization additionally stores these information.
-In most cases, the :dox:`SimpleSeed Simple Seed` class is sufficient since the best alignment around the seeds has to be determined using a banded alignment algorithm of the seed infixes anyway.
-
-You can get/set the begin and end position in the horizontal/vertical sequences using the functions :dox:`Seed#beginPositionH`, :dox:`Seed#beginPositionV`, :dox:`Seed#setBeginPositionH`, and :dox:`Seed#setBeginPositionV`.
-The band information can be queried and updated using :dox:`Seed#lowerDiagonal`, :dox:`Seed#upperDiagonal`, :dox:`Seed#setLowerDiagonal`, and :dox:`Seed#setUpperDiagonal`.
-Note, we use the capital letters 'H' and 'V' to indicate horizontal direction and vertical direction, respectively, while the database is always considered as the horizontal sequence and the query as the vertical sequence in the context of sequence alignments.
-
-The following program gives an example of creating seeds as well as setting and reading properties.
-
-.. includefrags:: demos/tutorial/seed_and_extend/example1.cpp
-   :fragment: example
-
-The output to the console is as follows.
-
-.. includefrags:: demos/tutorial/seed_and_extend/example1.cpp.stdout
-
-Assignment 1
-""""""""""""
-
-.. container:: assignment
-
-   Type
-     Review
-
-   Objective
-     Extend the program above such that ``seed1`` is updated from ``seed2`` and all members (begin positions, end positions, diagonals) are equal to the corresponding member of ``seed`` times two.
-     For example, the lower diagonal of ``seed2`` should be ``2 * lowerDiagonal(seed1)``.
-
-   Solution
-     .. container:: foldable
-
-        .. includefrags:: demos/tutorial/seed_and_extend/solution1.cpp
-
 Seed Extension
-~~~~~~~~~~~~~~
+--------------
 
 Seeds are often created quickly using a *k*-mer index: When a *k*-mer of a given length is found in both sequences, we can use it as a seed.
 However, the match can be longer than just *k* characters. To get longer matches, we use **seed extension**.
 
 In the most simple case we simply look for matching characters in both sequences to the left and right end of the seed.
-This is called **match extension** and available through the :dox:`Seed#extendSeed` function using the ``MatchExtend`` tag.
+This is called **match extension** and available through the :dox:`Seed#extendSeed` function using the ``MatchExtend`` tag. Below example shows how to extend seeds to the right end.
 
-.. includefrags:: demos/tutorial/seed_and_extend/example2.cpp
+.. includefrags:: demos/tutorial/seed_and_extend/example1.cpp
    :fragment: example
 
-.. includefrags:: demos/tutorial/seed_and_extend/example2.cpp.stdout
+.. includefrags:: demos/tutorial/seed_and_extend/example1.cpp.stdout
 
-Assignment 2
+Assignment 1
 """"""""""""
 
-.. container:: console
+.. container:: assignment
 
    Type
      Review
@@ -101,25 +56,25 @@ Assignment 2
    Solution
      .. container:: foldable
 
-        .. includefrags:: demos/tutorial/seed_and_extend/solution2.cpp
+        .. includefrags:: demos/tutorial/seed_and_extend/solution1.cpp
 
-A more complex case is the standard bioinformatics approach of **x-drop extension**:
+A more complex case is the standard bioinformatics approach of **x-drop extension**.
 
-In the ungapped case, we extend the seed by comparing the *i*-th character to the left/right of the seed of the horizontal sequence with the *j*-th character to the left/right of the seed in the vertical sequence.
+In the ungapped case, we extend the seed by comparing the *i*-th character to the left/right of the seed of the horizontal sequence (subject sequence) with the *j*-th character to the left/right of the seed in the vertical sequence (query sequence).
 Matches and mismatches are assigned with scores (usually matches are assigned with positive scores and mismatches are assigned with negative scores).
 The scores are summed up.
 When one or more mismatches occur, the running total will drop.
-When the sum drops more strongly than a value *x*, the extension is stopped.
+When the sum drops more than a value *x*, the extension is stopped.
 
 This approach is also available in the gapped case in the SeqAn library.
 Here, creating gaps is also possible but also assigned negative scores.
 
-.. includefrags:: demos/tutorial/seed_and_extend/example3.cpp
+.. includefrags:: demos/tutorial/seed_and_extend/example2.cpp
    :fragment: example
 
-.. includefrags:: demos/tutorial/seed_and_extend/example3.cpp.stdout
+.. includefrags:: demos/tutorial/seed_and_extend/example2.cpp.stdout
 
-Assignment 3
+Assignment 2
 """"""""""""
 
 .. container:: assignment
@@ -133,18 +88,18 @@ Assignment 3
    Solution
      .. container:: foldable
 
-        .. includefrags:: demos/tutorial/seed_and_extend/solution3.cpp
+        .. includefrags:: demos/tutorial/seed_and_extend/solution2.cpp
 
 After extending a seed, we might wish to actually get the resulting alignment.
 When using gapped x-drop extension, we need to perform a banded global alignment of the two sequence infixes that correspond to the seed.
 This is shown in the following example:
 
-.. includefrags:: demos/tutorial/seed_and_extend/example4.cpp
+.. includefrags:: demos/tutorial/seed_and_extend/example3.cpp
    :fragment: example
 
-.. includefrags:: demos/tutorial/seed_and_extend/example4.cpp.stdout
+.. includefrags:: demos/tutorial/seed_and_extend/example3.cpp.stdout
 
-Assignment 4
+Assignment 3
 """"""""""""
 
 .. container:: assignment
@@ -154,7 +109,6 @@ Assignment 4
 
    Objective
      Change the example from above to a gap open score of ``-2`` and a gap extension score of ``-2``.
-     Use this scoring scheme for the global alignment as well and thus Gotoh's algorithm.
 
    Solution
      .. container:: foldable
@@ -162,10 +116,10 @@ Assignment 4
 	Note that we do not have to explicitely call Gotoh's algorithm in ``globalAlignment()``.
 	The fact that the gap extension score is different from the gap opening score is enough.
 
-        .. includefrags:: demos/tutorial/seed_and_extend/solution4.cpp
+        .. includefrags:: demos/tutorial/seed_and_extend/solution3.cpp
 
 Local Chaining using Seed Sets
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+------------------------------
 
 Usually, we quickly determine a large number of seeds.
 When a seed is found, we want to find a "close" seed that we found previously and combine it to form a longer seed.
@@ -174,12 +128,12 @@ This combination is called **local chaining**. This approach has been pioneered
 SeqAn provides the :dox:`SeedSet` class as a data structure to efficiently store seeds and combine new seeds with existing ones.
 The following example creates a :dox:`SeedSet` object ``seeds``, adds four seeds to it and then prints its contents.
 
-.. includefrags:: demos/tutorial/seed_and_extend/example5.cpp
+.. includefrags:: demos/tutorial/seed_and_extend/example4.cpp
    :fragment: example
 
 The output of the program above can be seen below.
 
-.. includefrags:: demos/tutorial/seed_and_extend/example5.cpp.stdout
+.. includefrags:: demos/tutorial/seed_and_extend/example4.cpp.stdout
 
 Note that we have used the ``Single()`` tag for adding the seeds.
 This forces the seeds to be added independent of the current seed set contents.
@@ -193,21 +147,21 @@ By using different overloads of the :dox:`SeedSet#addSeed`, we can use various l
   If there is a seed ``B`` whose distance in both sequences is smaller than a given threshold then ``A`` can be chained to ``B``.
 
 ``Chaos``
-  Following the strategy of Chaos :cite:`Brudno2003b`, if ``A`` is within a certain distance to ``B`` in both sequences and the distance in diagonals is smaller than a given threshold then ``A`` can be chained to ``B``.
+  Following the strategy of CHAOS :cite:`Brudno2003b`, if ``A`` is within a certain distance to ``B`` in both sequences and the distance in diagonals is smaller than a given threshold then ``A`` can be chained to ``B``.
 
 The :dox:`SeedSet#addSeed` function returns a boolean value indicating success in finding a suitable partner for chaining.
 A call using the ``Single`` strategy always yields ``true``.
 
 The following example shows how to use the ``SimpleChain`` strategy.
 
-.. includefrags:: demos/tutorial/seed_and_extend/example7.cpp
+.. includefrags:: demos/tutorial/seed_and_extend/example5.cpp
    :fragment: example
 
 As we can see, the seed ``TSeed(4, 2, 3)`` has been chained to ``TSeed(0, 0, 2)``.
 
-.. includefrags:: demos/tutorial/seed_and_extend/example7.cpp.stdout
+.. includefrags:: demos/tutorial/seed_and_extend/example5.cpp.stdout
 
-Assignment 5
+Assignment 4
 """"""""""""
 
 .. container:: assignment
@@ -221,10 +175,10 @@ Assignment 5
    Solution
      .. container:: foldable
 
-        .. includefrags:: demos/tutorial/seed_and_extend/solution5.cpp
+        .. includefrags:: demos/tutorial/seed_and_extend/solution4.cpp
 
 Global Chaining
-~~~~~~~~~~~~~~~
+---------------
 
 .. image:: GlobalChaining.png
    :align: right
@@ -247,7 +201,7 @@ The following shows a simple example.
 .. includefrags:: demos/tutorial/seed_and_extend/example6.cpp
    :fragment: example
 
-Assignment 6
+Assignment 5
 """"""""""""
 
 .. container:: assignment
@@ -262,13 +216,13 @@ Assignment 6
    Solution
      .. container:: foldable
 
-        .. includefrags:: demos/tutorial/seed_and_extend/solution6.cpp
+        .. includefrags:: demos/tutorial/seed_and_extend/solution5.cpp
 
 Banded Chain Alignment
-~~~~~~~~~~~~~~~~~~~~~~
+----------------------
 
 After obtaining such a valid seed chain, we would like to obtain an alignment along the chain.
-For this, we can use the so-called banded chain alignment algorithm (introduced by Brudno's LAGAN).
+For this, we can use the so-called banded chain alignment algorithm :cite:`Brudno2003`.
 Around seeds, we can use banded DP alignment and the spaces between seeds can be aligned using standard DP programming alignment.
 
 In SeqAn you can compute the banded chain alignment by calling the function :dox:`bandedChainAlignment`.
@@ -288,15 +242,15 @@ The default value is 15 and conforms the default value in the LAGAN-algorithm :c
 
     At the moment the specified value for the band extension must be at least one.
 
-.. includefrags:: demos/tutorial/seed_and_extend/example8.cpp
+.. includefrags:: demos/tutorial/seed_and_extend/example7.cpp
    :fragment: example
 
 The output of the example above.
 
-.. includefrags:: demos/tutorial/seed_and_extend/example8.cpp.stdout
+.. includefrags:: demos/tutorial/seed_and_extend/example7.cpp.stdout
 
 
-Assignment 7
+Assignment 6
 """"""""""""
 
 .. container:: assignment
@@ -313,7 +267,7 @@ Assignment 7
    Solution
      .. container:: foldable
 
-        .. includefrags:: demos/tutorial/seed_and_extend/solution7.cpp
+        .. includefrags:: demos/tutorial/seed_and_extend/solution6.cpp
 
 
 .. TODO: LAGAN demo should be refered to from here when it's done.
diff --git a/manual/source/Tutorial/Algorithms/fionaalg-150x150.png b/manual/source/Tutorial/Algorithms/fionaalg-150x150.png
new file mode 100644
index 0000000..40dc721
Binary files /dev/null and b/manual/source/Tutorial/Algorithms/fionaalg-150x150.png differ
diff --git a/manual/source/Tutorial/Algorithms/index.rst b/manual/source/Tutorial/Algorithms/index.rst
new file mode 100644
index 0000000..a5aa479
--- /dev/null
+++ b/manual/source/Tutorial/Algorithms/index.rst
@@ -0,0 +1,46 @@
+.. We create this roles for putting the "Introduction: etc. headings
+    on this page without them displaying in the ToC.  This would break
+    rendering the ToC correctly on readthedocs style.  The rubric
+    headings are formatted using CSS.
+
+.. role:: rubric-heading1
+    :class: rubric-heading1
+.. role:: rubric-heading2
+    :class: rubric-heading2
+
+.. _tutorial-algorithms:
+
+Algorithms
+==========
+
+.. toctree::
+    :hidden:
+    :titlesonly:
+
+    PatternMatching/index
+    Alignment/index
+    ConsensusAlignment
+    Realignment
+    SeedExtension
+    GraphAlgorithms
+
+SeqAn contains many efficient implementations of core bioinformatics algorithms. This starts with the standard dynamic programming based alignment algorithms with all its subtypes.
+Global alignment, local alignment, banded and unbanded, for proteins or DNA, using seeds or not, needing a traceback or not. Check out nearly 200 combinations of this module which incidentally will soon be fully multithreaded and SIMD accelerated.
+
+.. image:: ./stellarextension-150x150.png
+
+A depiction of the extension phase of the Stellar algorithm.
+
+.. image:: ./fionaalg-150x150.png
+
+A depiction of the error correcting algorithm in the Fiona algorithm.
+
+SeqAn contains algorithms for read mapping based on q-gram or string indices, multiple alignment algorithms, filter algorithms for string search as well es error correction methods.
+
+The algorithms are usually generic in the sense that they can be configured via template arguments and usually work for many, if not arbitrary  alphabets. SeqAn applications are usually short, very maintainable combinations of those core algorithmic components. Being well defined, the SeqAn components are quite amenable to optimisation and acceleration using multicore computing, vectorisation or accelerators.
+
+On the right you will find several tutorials about SeqAn's algorithms. Under :ref:`tutorial-algorithms-pattern-matching` you will find tutorials for online or indexed pattern search.
+Under :ref:`tutorial-algorithms-alignment` you will find tutorials for all versions of DP based alignments (pairwise and multiple) and as special cases consensus alignment under :ref:`tutorial-algorithms-consensus-alignment` and realignment algorithms under :ref:`tutorial-algorithms-realignment`.
+
+Under :ref:`tutorial-algorithms-seed-extension` you will find tutorials for SeqAn's seed module and various extension algorithms. And finally you can find under :ref:`tutorial-algorithms-graph-algorithms` algorithms that work on SeqAn's graph type.
+
diff --git a/manual/source/Tutorial/Algorithms/stellarextension-150x150.png b/manual/source/Tutorial/Algorithms/stellarextension-150x150.png
new file mode 100644
index 0000000..47b7ec2
Binary files /dev/null and b/manual/source/Tutorial/Algorithms/stellarextension-150x150.png differ
diff --git a/manual/source/Tutorial/Applications/Lambda.rst.bak b/manual/source/Tutorial/Applications/Lambda.rst.bak
new file mode 100644
index 0000000..0afe257
--- /dev/null
+++ b/manual/source/Tutorial/Applications/Lambda.rst.bak
@@ -0,0 +1,10 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _tutorial-apps-lambda:
+
+Lambda
+======
+
+.. image:: ../../under_construction.jpg
diff --git a/manual/source/Tutorial/Applications/Yara.rst.bak b/manual/source/Tutorial/Applications/Yara.rst.bak
new file mode 100644
index 0000000..2c0dd89
--- /dev/null
+++ b/manual/source/Tutorial/Applications/Yara.rst.bak
@@ -0,0 +1,10 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _tutorial-apps-yara:
+
+Yara
+====
+
+.. image:: ../../under_construction.jpg
diff --git a/manual/source/Tutorial/Applications/index.rst.bak b/manual/source/Tutorial/Applications/index.rst.bak
new file mode 100644
index 0000000..9aa7421
--- /dev/null
+++ b/manual/source/Tutorial/Applications/index.rst.bak
@@ -0,0 +1,13 @@
+.. _tutorial-apps:
+
+Applications
+============
+
+.. toctree::
+    :hidden:
+    :glob:
+    :titlesonly:
+
+    *
+
+.. image:: ../../under_construction.jpg
diff --git a/manual/source/Tutorial/BackgroundAndMotivation.rst b/manual/source/Tutorial/BackgroundAndMotivation.rst
deleted file mode 100644
index 9084ef8..0000000
--- a/manual/source/Tutorial/BackgroundAndMotivation.rst
+++ /dev/null
@@ -1,143 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _tutorial-background-and-motivation:
-
-Background and Motivation
--------------------------
-
-Learning Objective
-  You will learn about the design goals and fundamental ideas used in the SeqAn library.
-  Also, you will see how the SeqAn library obtains genericity while still retaining high performance.
-
-Difficulty
-  Very basic
-
-Duration
-  1h
-
-Prerequisites
-  Basic C or C++ knowledge
-
-This tutorial is meant to be the first chapter you read in the SeqAn Tutorial.
-It will give you an overview about the design goals, design decisions, and explain the motivation for these decisions.
-The next chapter :ref:`A First Example <tutorial-first-steps-in-seqan>` will flesh out the most important points of this chapter with code examples of everyday SeqAn use.
-
-Library Design Aims
-~~~~~~~~~~~~~~~~~~~
-
-The following lists some library design aims of the SeqAn library.
-Note that they are contradicting.
-The focus is on efficiency but small trade-offs are allowed to improve consistency and ease of use.
-
-#. **Efficiency**.
-   The focus of SeqAn is to provide a library of efficient and reuseable algorithmic components for biological sequence analysis.
-   Algorithms should have good practical implementations with low overhead, even at the cost of being harder to use.
-#. **Consistency**.
-   Be consistent wherever possible, even at slight costs of efficiency.
-#. **Ease of use**.
-   The library should be easily usable wherever possible, even at slight costs of efficiency.
-#. **Reuseability and Generosity**.
-   The algorithms in SeqAn should be reuseable and generic, even at small costs of efficiency.
-
-Modern C++ (C++98)
-~~~~~~~~~~~~~~~~~~
-
-C++ is sometimes described as a language that most people know only 20% of but everyone knows a different 20%.
-This section gives an overview over some C++98 idioms we use.
-This might be no news if you are a seasoned C++ programmer who is apt at using the STL and Boost libraries.
-However, programmers coming from C and Java might find them interesting.
-
-References
-  References are alternatives to pointers in C++ to construct value aliases.
-  Also see `Wikipedia on C++ references <http://en.wikipedia.org/wiki/Reference_(C%2B%2B)>`_.
-
-Templates
-  C++ allows you to perform `generic programming <http://en.wikipedia.org/wiki/Generic_programming>`_ using templates.
-  While similar to generics in Java (C++ templates are more than a decade older), C++ templates are designed to write zero-overhead abstractions that can be written to be as efficient as hand-written code while retaining a high level of abstraction.
-  See `cplusplus.com on C++ templates <http://www.cplusplus.com/doc/tutorial/templates/>`_.
-  Note that there is no way to restrict the type that can be used in templates, there is no mechanism such as Java's ``? extends T`` in C++.
-  Using an incompatible type leads to compiler errors because some operator or function could not be found.
-
-Memory Management / No Pointers
-  Instead of using raw pointers and memory, memory management should be done using containers.
-  The STL provides containers such as `std::vector <http://www.cplusplus.com/reference/stl/vector/>`_ and SeqAn offers :dox:`String`.
-
-Memory Management in SeqAn
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-C++ allows to allocate complex objects on the stack (in contrast to Java where objects are always constructed on the heap).
-The objects are constructed when the code execution enters the scope/block they are defined in and freed when the block is left.
-Allocation of resources (e.g. memory) happens on construction and deallocation happens when the current block is left.
-This is best explained in an example.
-
-.. includefrags:: demos/tutorial/background_and_motivation/example.cpp
-
-``seqan::String<char>`` is a class (actually an instantiation of the class template :dox:`String`) that allows to store strings of ``char`` values, similar to ``std::vector<char>`` or ``std::string``.
-
-When the variable ``programName`` is allocated, the constructor of the ``String<char>`` class is called.
-It allocates sufficient memory to store the value of ``argv[0]`` and then copies over the values from this string.
-The variable exists until the current block is left.
-Since it is defined in the ``main()`` function, this can only happen in the last line of ``main()`` at the ``return 0``.
-When the variable goes out of scope, its value is deconstructed and all allocated memory is freed.
-
-If an argument was given to the program, the block in the ``if`` clause is entered.
-When this happens, the variable ``firstArg`` is constructed, memory is allocated and the value of ``argv[1]`` is copied into the buffer.
-When the block is left, the variable is deconstructed and all memory is deallocated.
-
-Note that all memory is released when the ``main()`` function is left, regardless whether it is left in the ``return 0`` or the ``return 1``.
-Corresponding code in C would be (arguably) more messy, either requiring ``goto`` or multiple ``free()`` calls, one before either ``return``.
-
-Motivation for Template Programming
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In this section, we will give a short rationale why C++ with heavy use of template programming was used for SeqAn.
-
-Any sequence analysis will have sequence data structures and algorithms on sequences at its heart.
-Even when only considering DNA and amino acid alphabets, there are various variants for alphabets that one has to consider.
-Otherwise, important applications in bioinformatics cannot be covered:
-
-* 4-character DNA,
-* 5-character DNA with ``N``,
-* 15-character IUPAC, and
-* 27-character amino acids.
-
-A simple implementation could simply store such strings as ASCII characters.
-However, there are some implementation tricks that can lead to great reduction of memory usage (e.g. encoding eight 4-character DNA characters in one byte) or running time (fast lookup tables for characters or q-grams) for small alphabets.
-Thus, simply using a ``std::string`` would come at high costs to efficiency.
-
-Given that in the last 10-15 years, Java and C# have gained popularity, one could think about an object oriented solution: strings could simply be arrays of ``Character`` objects.
-Using polymorphism (e.g. overwriting of functions in subclasses), one could then write generic and reuseable algorithms.
-For example, the Java 2 platform defines the sort function for all objects implementing a ``Comparable`` interface.
-Note that such an implementation would have to rely on `virtual functions <http://en.wikipedia.org/wiki/Virtual_function>`_ of some sort.
-However, as we will see in the section OOP vs. Template Subclassing, **this comes at a high performance cost, being in conflict with efficiency**.
-For a sequence library, we could implement functions that map values from an alphabet to an ordinal value between ``0`` and ``S - 1`` where ``S`` is the number of elements in the alphabet.
-
-Generic programming offers one way out: C++ templates allow to define template classes, e.g. the STL's ``std::vector<T>`` or SeqAn's :dox:`String`.
-Here, instead of creating a string class around an array of ``char`` values (or objects), we can leave the type of the array's elements open.
-We can then introduce different types, e.g. ``Dna`` or ``Dna5`` for 4- and 5-character DNA alphabets.
-
-Algorithms can be implemented using templated functions and the template types are fixed at compile time.
-Thus, the compiler does not have to use virtual function tables and other "crutches", less indirection is involved, and more code can be inlined and aggressively optimized.
-When written appropriately, such algorithms can also work on different string implementations! Also, when defining our own alphabet types, we can directly influence how their abstractions (and APIs) work.
-
-Thus, C++ allows us to implement (1) a generic and reuseable library with (2) high level abstractions (and thus ease of use) that still allows the compiler to employ aggressive optimization and thus achieves (3) efficiency.
-With the words of the C++ inventor `Bjarne Stroustrup <http://www.artima.com/intv/abstreffi.html>`_:
-
-   A high level of abstraction is good, not just in C++, but in general.
-   We want to deal with problems at the level we are thinking about those problems.
-   When we do that, we have no gap between the way we understand problems and the way we implement their solutions.
-   We can understand the next guy's code. We don't have to be the compiler.
-
-OOP vs. Generic Programming
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In SeqAn, we use a technique called `template subclassing <tutorial-template-subclassing>`_ which is based on generic programming.
-This technique provides `polymorphism <http://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming>`_ into C++ programs at **compile time** using templates.
-Such static polymorphism is different from **runtime polymorphism** which is supported in C++ using subclassing and virtual functions.
-It comes at the cost of some additional typing but has the advantage that the compiler can inline all function calls and thus achieve better performance.
-An example will be given in `the section "From OOP to SeqAn" in the First Steps Tutorial <tutorial-first-steps-in-seqan>`_.
-
-The important point is that in contrast to runtime polymorphism such static polymorphism allows the compiler to inline functions.
diff --git a/manual/source/Tutorial/BasicTechniques.rst b/manual/source/Tutorial/BasicTechniques.rst
deleted file mode 100644
index 71d0ae7..0000000
--- a/manual/source/Tutorial/BasicTechniques.rst
+++ /dev/null
@@ -1,55 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _tutorial-basic-techniques:
-
-Basic Techniques
-----------------
-
-.. todo::
-
-   Here should come an easy introduction into STL code. Has low priority
-
-Generic Programming
-~~~~~~~~~~~~~~~~~~~
-
-SeqAn adopts **generic programming**, a paradigm that was proven to be an efficient design strategy in the C++ standard.
-The standard template library (STL) as part of the C++ standard is a prototypical example for generic programming.
-Generic programming designs algorithms and data structures in a way that they work on all types that meet a minimal set of requirements.
-An example for a generic data structure in the STL is the class ``vector``: It is a container for storing objects of a type ``T`` that are assignable, which means that we can assign one instance ``s`` of ``T`` to another instance ``t`` of ``T``, i.e. the code ``T t = s`` is valid.
-
-This kind of requirement to the interface of a type ``T`` is called a ``concept``, and we say that a type ``T`` *implements* a concept, if it fulfills all requirements stated by that concept; for example the concept assignable is implemented by all built-in types and every class that has both a copy assignment operator and a copy constructor.
-
-Generic programming has two implications:
-
-#. Data structures and algorithms work on *all* types ``T`` that implement the relevant concept, i.e. relevant is not the type ``T`` itself but its interface, and
-#. this concept is *minimal* in the sense that it contains only those requirements that are essential for the data structure or algorithm to work on ``T``.
-
-This way data structures and algorithms can be applied to as many types as possible, and hence generic programming promotes the generality of the library.
-
-Generic data types and algorithms can be implemented in C++ using templates.
-A class template parameterizes a class with a list of types or constants.
-For example, a declaration for the class ``vector`` could be:
-
-.. includefrags:: demos/tutorial/basic_techniques/base.cpp
-    :fragment: class
-
-where ``T`` stands for the *value type*, i.e. the type of the values that will be stored in ``vector``.
-The template is generic, it can be applied to any type ``T``.
-For example, a vector for storing ``int`` values is instantiated by:
-
-.. includefrags:: demos/tutorial/basic_techniques/base.cpp
-    :fragment: vector
-
-That is we use ``int`` as template argument for ``T``, and the result of the instantiation is an object ``my_vector`` of the complete type ``vector<int>``.
-The compiler employs the same template, i.e. the same piece of code, for different template argument types.
-The compilation succeeds if the applied template argument type supports all uses of the parameter ``T`` within the template code, so the C++ template instantiation process implies the minimality of the concepts.
-
-Further reading
-^^^^^^^^^^^^^^^
-
-For more information about generic programming and the STL we recommend reading:
-
-* Vandervoorde, Josuttis: C++ Templates - The complete guide, Addison-Wesley
diff --git a/manual/source/Tutorial/Basics.rst b/manual/source/Tutorial/Basics.rst
deleted file mode 100644
index d8febbd..0000000
--- a/manual/source/Tutorial/Basics.rst
+++ /dev/null
@@ -1,212 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _tutorial-basics:
-
-Basics
-------
-
-Alphabets
-~~~~~~~~~
-
-In SeqAn, alphabets are value types that can take a limited number of values and which hence can be mapped to a range of natural numbers.
-We can retrieve the number of different values of an alphabet, the alphabet size, by the metafunction :dox:`FiniteOrderedAlphabetConcept#ValueSize`.
-Another useful metafunction called :dox:`AlphabetConcept#BitsPerValue` can be used to determine the number of bits needed to store a value of a given alphabet.
-The order of a character in the alphabet (i.e. its corresponding natural number) can be retrieved by calling the function :dox:`FiniteOrderedAlphabetConcept#ordValue`.
-In SeqAn, several standard alphabets are already predefined, for example :dox:`Dna` :dox:`Dna5`, :dox:`Rna`, :dox:`Rna5`, :dox:`Iupac`, :dox:`AminoAcid`, ....
-
-Let's start with a simple task. We want to write a program that outputs all letters of the predefined :dox:`AminoAcid` alphabet.
-First we include the corresponding header files and specify that we are using the namespace ``seqan``.
-
-.. includefrags:: demos/tutorial/basics/show_alphabets.cpp
-   :fragment: includes
-
-Next, we will define a template function ``template<typename TAlphabet> void showAllLettersOfMyAlphabet(TAlphabet const&)`` which will iterate over all the characters of the alphabet and outputs them.
-For this, we need to determine the alphabet size using the metafunction :dox:`FiniteOrderedAlphabetConcept#ValueSize ValueSize<TAlphabet>::VALUE`.
-Then we increment a counter from 0 to the alphabet size minus one and output the counter as well as the corresponding letter of the alphabet using a conversion constructor.
-
-.. includefrags:: demos/tutorial/basics/show_alphabets.cpp
-   :fragment: showAllLettersOfMyAlphabet
-
-In the main program we simply call the above function using a number of alphabets that are predefined in SeqAn.
-
-.. includefrags:: demos/tutorial/basics/show_alphabets.cpp
-   :fragment: main
-
-This program produces the following output:
-
-.. includefrags:: demos/tutorial/basics/show_alphabets.cpp.stdout
-
-Iterators
-~~~~~~~~~
-
-An iterator is an object that is used to browse through the values of a container.
-The metafunction :dox:`ContainerConcept#Iterator` can be used to determine an appropriate iterator type given a container.
-Some containers offer several kinds of iterators, which can be selected by an optional argument of Iterator.
-For example, the tag :dox:`ContainerIteratorTags#Standard` can be used to get an iterator type that resembles the C++ standard random access iterator.
-The more elaborated :dox:`RootedIteratorConcept Rooted\ Iterator`, i.e., an iterator that knows its container, can be selected by specifying the :dox:`ContainerIteratorTags#Rooted` tag.
-
-Rooted iterators offer some convenience for the user: They offer additional functions like :dox:`RootedIteratorConcept#container` for determining the container on which the iterator works, and they simplify the interface for other functions like :dox:`RootedIteratorConcept#atEnd`.
-Moreover, rooted iterators may change the container’s length or capacity, which makes it possible to implement a more intuitive variant of a remove algorithm.
-
-While rooted iterators can usually be converted into standard iterators, it is not always possible to convert standard iterators back into rooted iterators, since standard iterators may lack the information about the container they work on.
-Therefore, many functions that return iterators like :dox:`ContainerConcept#begin` or :dox:`ContainerConcept#end` return rooted iterators instead of standard iterators; this way, they can be used to set both rooted and standard iterator variables.
-Alternatively it is possible to specify the returned iterator type explicitly by passing the iterator kind as a tag argument.
-
-The following code piece shows examples for creating Iterators for :dox:`ContainerConcept Containers`.
-If no iterator kind is specified, the metafunction :dox:`ContainerConcept#Iterator` assumes :dox:`ContainerIteratorTags#Standard` and the function :dox:`ContainerConcept#begin` assumes :dox:`ContainerIteratorTags#Rooted`.
-Both ``it1`` and ``it2`` are standard iterators, whereas ``it3`` and ``it4`` are rooted iterators.
-
-.. includefrags:: demos/tutorial/basics/base.cpp
-   :fragment: iterators
-
-.. comment
-
-    An iterator is stable if it stays valid even if its container is expanded, otherwise it is unstable. For example, the standard iterator of :dox:`AllocString` – which is a simple pointer to a value in the string – is unstable, since during the expansion of an Alloc String, all values are moved to new memory addresses.
-    A typical implementation of stable iterators for strings stores the position instead of a pointer to the current value.
-    The :dox:`Iterator` metafunction called with the [seqan:"Tag.Iterator Spec" Stable] tag returns a type for stable iterators.
-
-    Stable tag does not appear in Doku. Clarify with Andreas.
-
-Assignment 1
-^^^^^^^^^^^^
-
-.. container:: assignment
-
-   Type
-     Transfer
-
-   Objective
-
-      Write a program which does the following:
-        #. Create an amino acid string of the following sequence: "MQDRVKRPMNAFIVWSRDQRRKMALEN".
-        #. Iterate through the sequence and replace all ‘R’ with ‘A’.
-        #. Create a second string where you count the number of occurrences of each amino acid.
-        #. Iterate through the latter string and output the frequency table.
-
-   Hints
-
-      After a few hours browsing through the demos you should be able to solve this.
-
-   Solution
-
-      .. container:: foldable
-
-         In this assignment we practice the use of alphabets, iterators and metafunctions in SeqAn. We start by including the seqan basic header and enter the namespace ``seqan`` to avoid writing it as a prefix (as we do with the namespace ``std`` in this example).
-         In the ``main`` function we first define a a type ``TAmincoAcidString`` which is a ``String<AminoAcid>`` (Note the SeqAn naming conventions).
-         Then we define a variable ``sourceSeq`` of this type and initialize it with a string constant.
-
-         .. comment
-
-            Add link to naming conventions
-
-         .. includefrags:: demos/tutorial/basics/strings.cpp
-            :fragment: create-string
-
-         Then we define an iterator type using the SeqAn metafunction :dox:`ContainerConcept#Iterator`.
-         Using the correct iterator we iterate over our amino acid string using the SeqAn functions :dox:`ContainerConcept#begin`, :dox:`ContainerConcept#end`, and :dox:`InputIteratorConcept#goNext`.
-         In the body of the while loop we use the SeqAn function :dox:`IteratorAssociatedTypesConcept#value` to access the value the iterator is pointing to.
-         Note that this function returns a reference which allows us to replace the occurrence of all ``R``'s with ``A``'s.
-         So at this point we have solved parts a) and b) of the assignment.
-
-         .. includefrags:: demos/tutorial/basics/strings.cpp
-            :fragment: iterate-and-replace
-
-         In the next part of the code we want to count, how often a specific letter of the alphabet occurs in the string.
-         To obtain the size type of the used alphabet we call the SeqAn metafunction :dox:`ContainerConcept#Size Size` and define a :dox:`String` of that type to hold the counters.
-         The :dox:`String` has here basically the same functionality as a STL ``vector``.
-         Since alphabets are mapped to a contiguous interval of the natural numbers, we can initialize the counter up to the size of the alphabet which we obtain by a call to the SeqAn metafunction :dox:`FiniteOrderedAlphabetConcept#ValueSize ValueSize`.
-         We then iterate over the amino acid string and increment the counter for the corresponding letter of the alphabet.
-         In order to know the corresponding natural number of an alphabet letter, we use the SeqAn function :dox:`FiniteOrderedAlphabetConcept#ordValue`.
-         Note the use of the :dox:`IteratorAssociatedTypesConcept#value` function.
-         In this example one could also use the ``operator[]`` to write ``counter[ordValue(value(it))]++``.
-
-         .. includefrags:: demos/tutorial/basics/strings.cpp
-            :fragment: count-occurrences
-
-         Finally we iterate through the counter String and output the i-th aminoacid (by calling a constructor with the letter's ordinal value) ad its frequency.
-
-         .. includefrags:: demos/tutorial/basics/strings.cpp
-            :fragment: frequency-table
-
-         The result looks like this:
-
-         .. includefrags:: demos/tutorial/basics/strings.cpp.stdout
-
-
-Memory Allocation
-~~~~~~~~~~~~~~~~~
-
-Controlling memory allocation is one of the big advantages of C++ compared to other programming languages as for example Java.
-Depending on the size of objects and the pattern they are allocated during the program execution, certain memory allocation strategies have advantages compared to others.
-SeqAn supports a variety of memory allocation strategies.
-
-The two functions :dox:`Allocator#allocate` and :dox:`Allocator#deallocate` are used in SeqAn to allocate and deallocate dynamic memory.
-Both functions take an allocator as an argument.
-An :dox:`Allocator` is an object that is responsible for allocated memory.
-The default implementations of :dox:`Allocator#allocate` and :dox:`Allocator#deallocate` completely ignore the allocator but simply call the basic operators ``new`` and ``delete``.
-Although in principle every kind of object can be used as allocator, typically the object that stores the pointer to the allocated memory is used as allocator.
-For example, if memory is allocated for an :dox:`AllocString Alloc String`, this string itself acts as allocator.
-A memory block should be deallocated using the same allocator object as it was allocated for.
-The following allocators are available in SeqAn and support the :dox:`Allocator#clear` function.
-This function deallocates at once all memory blocks that were previously
-allocated.
-
-| :dox:`SimpleAllocator Simple Allocator`
-|    General purpose allocator.
-| :dox:`SinglePoolAllocator Single Pool Allocator`
-|    Allocator that pools memory blocks of specific size. Blocks of different sizes are not pooled.
-| :dox:`MultiPoolAllocator Multi Pool Allocator`
-|    Allocator that pools memory blocks. Only blocks up to a certain size are pooled. The user can specify the size limit in a template argument.
-
-The function :dox:`Allocator#allocate` has an optional argument to specify the intended allocator usage for the requested memory.
-The user can
-thereby specialize :dox:`Allocator#allocate` for different allocator applications.
-For example, the tag :dox:`AllocatorUsageTags#TagAllocateTemp` specifies that the memory will only be used temporarily, whereas :dox:`AllocatorUsageTags#TagAllocateStorage` indicates that the memory will be used in the long run for storing values of a container.
-
-SeqAn also offers more complex allocators which support the function :dox:`Allocator#clear`.
-The library predefines some allocator specializations for different uses (see above).
-Most of these allocators are pool allocators.
-A pool allocator implements its own memory management.
-It reserves storage for multiple memory blocks at a time and recycles deallocated blocks.
-This reduces the number of expensive ``new`` and ``delete`` calls and speeds up the allocation and deallocation.
-
-Assignment 2
-^^^^^^^^^^^^
-
-.. container:: assignment
-
-   Type
-     Application
-
-   Objective
-
-      Write a program which compares the runtimes of the :dox:`SimpleAllocator Simple Allocator` and the :dox:`MultiPoolAllocator Multi Pool Allocator` for pool sizes (10,100,1000) for allocating and deallocating memory.
-
-   Hint
-
-      .. container:: foldable
-
-         For timing the allocation you can use :dox:`sysTime`.
-
-   Solution
-
-      .. container:: foldable
-
-         We start in this assignment by including the ``basic.h`` SeqAn header and defining two different allocators, one :dox:`MultiPoolAllocator Multi Pool Allocator` and one :dox:`SimpleAllocator Simple Allocator`.
-
-         .. includefrags:: demos/tutorial/basics/allocator.cpp
-            :fragment: definitions
-
-         Given these fixed allocators we allocate now various size blocks, namely of size 10, 100, and 1000.
-         We repeat the allocation a number of times and then clear the allocated memory.
-         For each of the block sizes we output the system time needed to allocate and clear the memory.
-
-         .. includefrags:: demos/tutorial/basics/allocator.cpp
-            :fragment: time-measurements
-
-         Running this program results in the following output which shows the advantage of the :dox:`MultiPoolAllocator Multi Pool Allocator`:
-
-         .. includefrags:: demos/tutorial/basics/allocator.cpp.stdout
diff --git a/manual/source/Tutorial/AlignmentRepresentation.rst b/manual/source/Tutorial/DataStructures/Alignment/AlignmentGaps.rst
similarity index 51%
rename from manual/source/Tutorial/AlignmentRepresentation.rst
rename to manual/source/Tutorial/DataStructures/Alignment/AlignmentGaps.rst
index fcf11d4..0cb4f1f 100644
--- a/manual/source/Tutorial/AlignmentRepresentation.rst
+++ b/manual/source/Tutorial/DataStructures/Alignment/AlignmentGaps.rst
@@ -1,38 +1,35 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
+.. _tutorial-datastructures-alignment-alignment-gaps:
 
-.. _tutorial-alignment-representation:
-
-Alignment Representation
-------------------------
+Alignment Representation (Gaps)
+=================================
 
 Learning Objective
-  This tutorial introduces you to the two data structures that can be used to represent an alignment in SeqAn.
+  This tutorial introduces you to the gaps data structures that can be used to represent an alignment in SeqAn.
   You will learn basic techniques to create and modify such data structures and how to access certain information from these data structures.
 
 Difficulty
   Basic
 
 Duration
-  0:45h
+  15 min
 
 Prerequisites
-  :ref:`tutorial-first-steps-in-seqan`, :ref:`tutorial-alphabets`, :ref:`tutorial-sequences`, :ref:`tutorial-string-sets`, :ref:`tutorial-iterators`
-
-Before we want to explain SeqAn's alignment algorithms in detail, we will give you an insight in the underlying data structures that are used to actually represent an alignment in SeqAn.
-First, we put our focus on the possible representations of alignments and the ways to access and edit different information of an alignment.
-The two main objects for this purpose are the :dox:`Align` and the :dox:`AlignmentGraph Alignment Graph` data structure.
+  :ref:`tutorial-getting-started-first-steps-in-seqan`, :ref:`tutorial-datastructures-sequences`
 
-Align Data Structure
-~~~~~~~~~~~~~~~~~~~~
+------------------------------------------
 
 The :dox:`Align` data structure is simply a set of multiple :dox:`Gaps` data structures.
 A Gaps data structure is a container storing gap information for a given source sequence.
 The gap information is put on top of the source sequence (coordinates of the gapped sequence refer to the **gap space**) without directly applying them to the source (coordinates of the ungapped sequence refer to the **source space**).
 This way operating with gaps sustains very flexible.
 
+Gaps data structures
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
 There are two specializations available for the Gaps data structures:
 :dox:`ArrayGaps Array Gaps` and :dox:`AnchorGaps Anchor Gaps`.
 They differ in the way they implement the gap space.
@@ -44,22 +41,26 @@ They differ in the way they implement the gap space.
    Thus, it is quite efficient to extend existing gaps while it is more expensive to search within the gapped sequence or insert new gaps.
    Alternatively, one should prefer :dox:`AnchorGaps Anchor Gaps` if many conversions between coordinates of the gap and the source space are needed as binary search can be conducted to search for specific positions.
 
+
+Constructing an alignment
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
 Now, let's start by constructing our first alignment.
 Before we can make use of any of the mentioned data structures, we need to tell the program where to find the definitions.
 This can be achieved by including the header file ``<seqan/align.h>`` which contains the necessary data structures and functions associated with the alignments.
 The next steps would be to implement the main function of our program and to define the types that we want to use.
 
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignment/align.cpp
    :fragment: main
 
 We first define the type of the input sequences (``TSequence``).
 Then we can define the type of our actual Align object we want to use.
 In an Align object, the gapped sequences are arranged in rows.
 You can use the Metafunction :dox:`Align#Row` to get the correct type of the used Gaps objects.
-In the following we use the term ``row`` to explicitly refer to a gapped sequence as a member of the Align object.
-We will use the term ``gapped sequence`` to describe functionalities that is related to the Gaps data structure independent of the Align object.
+In the following we use the term ``row`` to explicitly refer to a single gapped sequence in the Align object.
+We will use the term ``gapped sequence`` to describe functionalities that are related to the Gaps data structure independent of the Align object.
 
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignment/align.cpp
    :fragment: typedefs
 
 After defining the types, we can continue to actually construct our own Align object.
@@ -69,59 +70,81 @@ With the function :dox:`Align#row`, we get access to the gapped sequence at a sp
 This is similar to the :dox:`RandomAccessContainerConcept#value` function used in :dox:`StringSet String Sets`.
 Now, we can assign the source to the corresponding gapped sequence.
 
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignment/align.cpp
    :fragment: init
 
-After assigning the sources to the gapped sequences, we need to add some gaps to make it to look like a real alignment.
-You can use the functions :dox:`Gaps#insertGap insertGap()` and :dox:`Gaps#removeGap` to insert and delete one gap or :dox:`Gaps#insertGaps insertGaps()` and :dox:`Gaps#removeGaps` to insert and delete multiple gaps in a gapped sequence.
+.. includefrags:: demos/tutorial/alignment/align.cpp.stdout
+   :fragment: output_init
+
+.. note::
+
+   The second string ``CDEFGAHGC`` of the alignment is cropped in the output to
+   ``CDEFGA``, such that they are of equal length. Note that the string itself
+   is not modified, i.e. not shortened.
+
+After assigning the sources to the gapped sequences, we need to add some gaps to make it look like a real alignment.
+You can use the functions :dox:`Gaps#insertGap insertGap()` and :dox:`Gaps#removeGap removeGap()` to insert and delete one gap or :dox:`Gaps#insertGaps insertGaps()` and :dox:`Gaps#removeGaps removeGaps()` to insert and delete multiple gaps in a gapped sequence.
 
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignment/align.cpp
    :fragment: manipulation
 
+.. includefrags:: demos/tutorial/alignment/align.cpp.stdout
+   :fragment: output_manipulation
+
 Congratulations!
 You have created your first alignment.
 Note that we used a reference declaration ``TRow &`` for the variables ``row1`` and ``row2``.
 Without the reference, we would only modify copies of rows and the changes would not effect our ``align`` object.
 
+
 Gap Space vs. Source Space
 ^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+.. image:: ../../../../../dox/images/docs2/gaps_illustration.png
+
 In the next steps, we want to dig a little deeper to get a feeling for the gap space and the source space.
-As mentioned above, the gaps are not inserted into the source but put on top of them in a separate space, the gap space.
+As mentioned above, the gaps are not inserted into the source but put on top of it in a separate space, the gap space.
 When inserting gaps, the gap space is modified and all coordinates right of the inserted gap are shifted to the right by the size of the gap.
 At the same time, the coordinates of the source remain unchanged.
-Using the function :dox:`Gaps#toSourcePosition toSourcePosition()`, we can determine to which position in the source space our current position in the gapped sequence (gap space) maps.
+Using the function :dox:`Gaps#toSourcePosition toSourcePosition()`, we can determine which position of the current gapped sequence (gap space) corresponds to the position in the source space.
 
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignment/align.cpp
    :fragment: printingSourcePos
 
+.. includefrags:: demos/tutorial/alignment/align.cpp.stdout
+   :fragment: output_source_positions
+
 If the position in the gap space is actually a gap, then :dox:`Gaps#toSourcePosition toSourcePosition()` returns the source position of the next character to the right that is not a gap.
 Vice versa, we can determine where our current source position maps into the gap space using the function :dox:`Gaps#toViewPosition toViewPosition()`.
 
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignment/align.cpp
    :fragment: printingViewPos
 
-And here is the output of this short example program so far:
-
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp.stdout
-   :fragment: output_manipulation
+.. includefrags:: demos/tutorial/alignment/align.cpp.stdout
+   :fragment: output_view_positions
 
 In the first alignment, it seems that the end of the second row is cropped off to match the size of the first one.
 This effect takes place only in the visualization but is not explicitly applied to the gapped sequence.
 The second alignment is the one we manually constructed.
 Here, you can see that the second row is expanded to its full size while it matches the size of the first row.
-However, it is possible to explicitly crop off the ends of a gapped sequence by using the functions :dox:`Gaps#setClippedBeginPosition` and :dox:`Gaps#setClippedEndPosition`.
+However, it is possible to explicitly crop off the ends of a gapped sequence by using the functions :dox:`Gaps#setClippedBeginPosition setClippedBeginPosition()` and :dox:`Gaps#setClippedEndPosition setClippedEndPosition()`.
 These functions shrink the gap space and can be understood as defining an infix of the gapped sequence.
 After the clipping, the relative view position changes according to the clipping and so does the mapping of the source positions to the gap space.
 The mapping of the view positions to the source space does not change.
 
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignment/align.cpp
    :fragment: clipping
 
+.. includefrags:: demos/tutorial/alignment/align.cpp.stdout
+   :fragment: output_clipping
+
 Here the output of the clipping procedure.
 
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp.stdout
-   :fragment: output_clipping
+.. includefrags:: demos/tutorial/alignment/align.cpp
+   :fragment: clipping_positions
+
+.. includefrags:: demos/tutorial/alignment/align.cpp.stdout
+   :fragment: output_clipping_positions
 
 .. note::
    It is important to understand the nature of the clipping information.
@@ -137,29 +160,32 @@ In the last part of this section, we are going to iterate over a :dox:`Gaps` obj
 This can be quite useful if one needs to parse the alignment rows to access position specific information.
 First, we have to define the type of the ``Iterator``, which can be easily done by using the metafunction :dox:`ContainerConcept#Iterator`.
 Remember that we iterate over an ``TRow`` object.
-Then we have to construct the iterators ``it`` which points to the begin of ``row1`` using the :dox:`ContainerConcept#begin` function and ``itEnd`` which points behind the last value of ``row1`` using the :dox:`ContainerConcept#end` function.
-If you need to refresh the **Iterator Concept** you can read the Tutorial :ref:`tutorial-iterators`.
+Then we have to construct the iterators ``it`` which points to the begin of ``row1`` using the :dox:`ContainerConcept#begin begin()` function and ``itEnd`` which points behind the last value of ``row1`` using the :dox:`ContainerConcept#end end()` function.
+If you need to refresh the **Iterator Concept** you can read the iterator section :ref:`tutorial-datastructures-sequences-strings-and-segments-iterators`.
 While we iterate over the gapped sequence, we can ask if the current value, at which the iterator ``it`` points to, is a gap or not by using the function :dox:`Gaps#isGap isGap()`.
 Use :dox:`AlphabetWithGapsConcept#gapValue` to print the correct gap symbol.
 
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignment/align.cpp
    :fragment: iteratingRowClipped
 
+.. includefrags:: demos/tutorial/alignment/align.cpp.stdout
+   :fragment: output_iteratingRowClipped
+
 We will now reset the clipping of ``row1`` using :dox:`Gaps#clearClipping` and iterate again over it to see its effect.
 
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignment/align.cpp
    :fragment: iteratingRowClipped2
 
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignment/align.cpp
    :fragment: return
 
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp.stdout
-   :fragment: output_gaps
+.. includefrags:: demos/tutorial/alignment/align.cpp.stdout
+   :fragment: output_iteratingRowClipped2
 
 Here you can see how resetting the clipping positions brings back our complete row.
 
 Assignment 1
-^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 .. container:: assignment
 
@@ -177,91 +203,17 @@ Assignment 1
 
         You can use the function :dox:`Gaps#countGaps` to count the number of consecutive gaps starting from the current position of the iterator.
 
-   Solution
-       .. container:: foldable
-
-          .. includefrags :: demos/tutorial/alignment_representation/align_assignmen1.cpp
-             :fragment: solution
-
-AlignmentGraph Data Structure
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Another very useful representation of alignments is given by the :dox:`AlignmentGraph Alignment Graph`.
-It is a graph in which each vertex corresponds to a sequence segment, and each edge indicates an ungapped alignment between the connected vertices, or more precisely between the sequences stored in those vertices.
-Here is an example of such a graph:
+        The resulting alignment should look like:
+         .. code-block:: console
 
-.. image:: alignment_example.png
+            AC--GTC-ACCTC
 
-In the following we will actually construct this example step by step.
-First we include the ``iostream`` header from the STL and the ``<seqan/align.h>`` header to include all necessary functions and data structures we want to use.
-We use the namespace ``seqan`` and write the ``main`` function with an empty body.
-
-.. includefrags:: demos/tutorial/alignment_representation/graph.cpp
-   :fragment: main
-
-At the begin of the function we define our types we want to use later on.
-We define ``TSequence`` as the type of our input strings.
-Since we work with a :dox:`Dna` alphabet we define ``TSequence`` as a :dox:`String` over a Dna alphabet.
-For the AlignmentGraph we need two StringSets.
-The ``TStringSet`` is used to actually store the input sequences and the ``TDepStringSet`` is internally used by the AlignmentGraph.
-That is the AlignmentGraph does not copy the sources into its data structure but rather stores a reference to each of the given input strings as it does not modify the input sequences.
-The :dox:`DependentStringSet Dependent StringSet` facilitates this behavior.
-In the end we define the actual AlignmentGraph type.
-
-.. includefrags:: demos/tutorial/alignment_representation/graph.cpp
-   :fragment: typedef
-
-We first create our two input sequences ``TTGT`` and ``TTAGT`` append them to the StringSet ``strings`` using the :dox:`StringConcept#appendValue` function and pass the initialized ``strings`` object as a parameter to the constructor of the AlignmentGraph ``alignG``.
-
-.. includefrags:: demos/tutorial/alignment_representation/graph.cpp
-   :fragment: init
-
-Before we construct the alignment we print the unmodified AlignmentGraph.
-Then we add some alignment information to the graph.
-In order to add an ungapped alignment segment we have to add an edge connecting two nodes of different input sequences.
-To do so we can use the function :dox:`Graph#addEdge` and specify the two vertices that should be connected.
-Since we do not have any vertices yet, we create them on the fly using the function :dox:`Graph#addVertex`.
-The function addVertex gets as second parameter the id which points to the the correct input sequence within the ``strings`` object.
-We can use the function :dox:`StringSet#positionToId positionToId()` to receive the id that corresponds to a certain position within the underlying Dependent StringSet of the AlignmentGraph.
-We can access the Dependent StringSet using the function :dox:`Align#stringSet stringSet()`.
-The third parameter of addVertex specifies the begin position of the segment within the respective input sequence and the fourth parameter specifies its length.
-Now, we add an edge between the two vertices of each input sequence which covers the first two positions.
-In the next step we have to add a gap.
-We can do this simply by just adding a vertex that covers the inserted string.
-Finally we have to add the second edge to represent the last ungapped sequence and then we print the constructed alignment.
-
-.. includefrags:: demos/tutorial/alignment_representation/graph.cpp
-   :fragment: construct
-
-Here the output of the program.
-The first output prints the empty adjacency and edge list.
-The second output prints our desired alignment.
-
-.. includefrags:: demos/tutorial/alignment_representation/graph.cpp.stdout
-
-The general usage of graphs is explained in the :ref:`tutorial-graphs` tutorial.
-
-Assignment 2
-^^^^^^^^^^^^
-
-.. container:: assignment
-
-   Type
-     Review
-
-   Objective
-     Construct a multiple sequence alignment using the Alignment Graph data structure.
-     Use the three sequences ``GARFIELDTHECAT``, ``GARFIELDTHEBIGCAT`` and ``THEBIGCAT`` and align them such that you obtain the maximal number of matches.
-
-   Hints
-     .. container :: foldable
-
-        The function :dox:`AlignmentGraph#findVertex` returns the vertex of an AlignmentGraph that covers the given position in the given sequence.
+            ACGGGCCTA--TC
 
    Solution
-     .. container :: foldable
+       .. container:: foldable
 
-        .. includefrags :: demos/tutorial/alignment_representation/graph_assignment1.cpp
-           :fragment: main
+          .. includefrags :: demos/tutorial/alignment/align_assignment1.cpp
+             :fragment: solution
 
-        .. includefrags :: demos/tutorial/alignment_representation/graph_assignment1.cpp.stdout
+          .. includefrags :: demos/tutorial/alignment/align_assignment1.cpp.stdout
diff --git a/manual/source/Tutorial/DataStructures/Alignment/AlignmentGraph.rst b/manual/source/Tutorial/DataStructures/Alignment/AlignmentGraph.rst
new file mode 100644
index 0000000..56bc13e
--- /dev/null
+++ b/manual/source/Tutorial/DataStructures/Alignment/AlignmentGraph.rst
@@ -0,0 +1,115 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _tutorial-datastructures-alignment-alignment-graph:
+
+Alignment Representation (Graph)
+==================================
+
+Learning Objective
+  This tutorial introduces you to the graph data structures that can be used to represent an alignment in SeqAn.
+  You will learn basic techniques to create and modify such data structures and how to access certain information from these data structures.
+
+Difficulty
+  Basic
+
+Duration
+  15 min
+
+Prerequisites
+  :ref:`tutorial-getting-started-first-steps-in-seqan`, :ref:`tutorial-datastructures-sequences`
+
+------------------------------------------
+
+Another very useful representation of alignments is given by the :dox:`AlignmentGraph Alignment Graph`.
+It is a graph in which each vertex corresponds to a sequence segment, and each edge indicates an ungapped alignment between the connected vertices, or more precisely between the sequences stored in those vertices.
+Here is an example of such a graph:
+
+.. image:: ../../../../../dox/images/docs2/alignmentExample.png
+
+In the following we will actually construct this example step by step.
+First we include the ``iostream`` header from the STL and the ``<seqan/align.h>`` header to include all necessary functions and data structures we want to use.
+We use the namespace ``seqan`` and write the ``main`` function with an empty body.
+
+.. includefrags:: demos/tutorial/alignment/graph.cpp
+   :fragment: main
+
+At the begin of the function we define our types we want to use later on.
+We define ``TSequence`` as the type of our input strings.
+Since we work with a :dox:`Dna` alphabet we define ``TSequence`` as a :dox:`String` over a Dna alphabet.
+For the AlignmentGraph we need two StringSets.
+The ``TStringSet`` is used to actually store the input sequences and the ``TDepStringSet`` is internally used by the AlignmentGraph.
+That is the AlignmentGraph does not copy the sources into its data structure but rather stores a reference to each of the given input strings as it does not modify the input sequences.
+The :dox:`DependentStringSet Dependent StringSet` facilitates this behavior.
+In the end we define the actual AlignmentGraph type.
+
+.. includefrags:: demos/tutorial/alignment/graph.cpp
+   :fragment: typedef
+
+We first create our two input sequences ``TTGT`` and ``TTAGT`` append them to the StringSet ``strings`` using the :dox:`StringConcept#appendValue` function and pass the initialized ``strings`` object as a parameter to the constructor of the AlignmentGraph ``alignG``.
+
+.. includefrags:: demos/tutorial/alignment/graph.cpp
+   :fragment: init
+
+Before adding vertices to the graph ``align`` prints the empty adjacency and edge
+list.
+
+.. includefrags:: demos/tutorial/alignment/graph.cpp.stdout
+   :fragment: output_init
+
+Before we construct the alignment we print the unmodified AlignmentGraph.
+Then we add some alignment information to the graph.
+In order to add an ungapped alignment segment we have to add an edge connecting two vertices of different input sequences.
+To do so we can use the function :dox:`Graph#addEdge` and specify the two vertices that should be connected.
+Since we do not have any vertices yet, we create them on the fly using the function :dox:`Graph#addVertex addVertex()`.
+The function addVertex gets as second parameter the id which points to the the correct input sequence within the ``strings`` object.
+We can use the function :dox:`StringSet#positionToId positionToId()` to receive the id that corresponds to a certain position within the underlying Dependent StringSet of the AlignmentGraph.
+
+We can access the Dependent StringSet using the function :dox:`Align#stringSet stringSet()`.
+The third parameter of addVertex specifies the begin position of the segment within the respective input sequence and the fourth parameter specifies its length.
+Now, we add an edge between the two vertices of each input sequence which covers the first two positions.
+In the next step we have to add a gap.
+We can do this simply by just adding a vertex that covers the inserted string.
+Finally we have to add the second edge to represent the last ungapped sequence and then we print the constructed alignment.
+
+Note that we use :dox:`AlignmentGraph#findVertex findVertex()` to find the the
+last two inserted vertices. The syntax is the same as :dox:`Graph#addVertex
+addVertex()`, but omits the length parameter.
+
+.. includefrags:: demos/tutorial/alignment/graph.cpp
+   :fragment: construct
+
+Now ``align`` prints the desired alignment.
+
+.. includefrags:: demos/tutorial/alignment/graph.cpp.stdout
+   :fragment: output_construct
+
+The general usage of graphs is explained in the :ref:`tutorial-datastructures-graphs` tutorial.
+
+Assignment 1
+^^^^^^^^^^^^
+
+.. container:: assignment
+
+   Type
+     Review
+
+   Objective
+     Construct a multiple sequence alignment using the Alignment Graph data structure.
+     Use the three sequences ``GARFIELDTHECAT``, ``GARFIELDTHEBIGCAT`` and ``THEBIGCAT`` and align them such that you obtain the maximal number of matches.
+
+   Hints
+     .. container :: foldable
+
+        ``TSequence`` should be ``String<char>`` instead of ``String<Dna>``.
+
+        The function :dox:`AlignmentGraph#findVertex` returns the vertex of an AlignmentGraph that covers the given position in the given sequence.
+
+   Solution
+     .. container :: foldable
+
+        .. includefrags :: demos/tutorial/alignment/graph_assignment1.cpp
+           :fragment: main
+
+        .. includefrags :: demos/tutorial/alignment/graph_assignment1.cpp.stdout
diff --git a/manual/source/Tutorial/DataStructures/Alignment/ScoringSchemes.rst b/manual/source/Tutorial/DataStructures/Alignment/ScoringSchemes.rst
new file mode 100644
index 0000000..00b0854
--- /dev/null
+++ b/manual/source/Tutorial/DataStructures/Alignment/ScoringSchemes.rst
@@ -0,0 +1,188 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _tutorial-datastructures-alignment-scoringschemes:
+
+Scoring Schemes
+===============
+
+Learning Objective
+  This tutorial introduces you to the scoring systems that can be used in SeqAn to quantify the sequence similarity.
+  You will learn basic techniques to create and modify standard and custom scoring systems capable to satisfy the requirements of a wide range of applications.
+
+Difficulty
+  Basic
+
+Duration
+  45 min
+
+Prerequisites
+  :ref:`tutorial-getting-started-first-steps-in-seqan`, :ref:`tutorial-datastructures-sequences`, :ref:`tutorial-datastructures-alignment-alignment-gaps`
+
+The alignment procedures are usually based on the sequences similarity computation described by an alignment scoring system that gives countable information used to determine which sequences are related and which are not.
+
+Four main biological events must be considered during the sequence alignment:
+Conservation, substitution, insertion and deletion.
+We could have a Conservation when the two compared letters are the same and a Match is detected, a Substitution when we detect a Mismatch where a letter is aligned with another, and Insertion or Deletion when in one of the two aligned sequences a letter is aligned with a Gap.
+Matches, mismatches and gaps detected during the alignment do not guarantee to be the most representative biological truth since their dispositions is dependent of the chosen scoring schemes and the selected alignment algorithm. In order to improve the correlation between computed sequence alignment and biological similarity, specific combinations of scoring schemes and alignment algorithms have been developed during the years and are usually adopted for the alignment of different types  [...]
+
+.. image:: alig_ins_del.png
+   :width: 500px
+   :align: center
+
+Given an alignment structure that store the two sequences and a scoring scheme, the score of the alignment can be computed as the sum of the scores for aligned character pairs plus the sum of the scores for all gaps.
+
+With refer to the alignment procedure a Scoring Scheme can be defined as the set of rules used to assess the possible biological events that must be considered during the alignment procedure.
+
+In SeqAn are available several :dox:`Score scoring schemes` to evaluate matches and mismatches, while three different gap models can be applied to consider insertions and deletions events.
+We will first introduce you to the scoring schemes used to evaluate match and mismatch. Subsequently, you will learn how to chose the gap model to be implemented in the chosen scoring scheme.
+
+Match/Mismatch Evaluation
+-------------------------
+
+:dox:`SimpleScore Simple Score`
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The simplest example of Scoring Scheme, usually applied to score the similarity among nucleotide sequences, is the Levenshtein distance model that assigns a score of 0 and -1 respectively if a match or a mismatch occurs, whereas a penalty value equal to -1 in case of gaps representing insertions or deletions (this scoring scheme is the default for :dox:`SimpleScore`).
+Alternatively, also the Hamming distance model can be used for some simple tasks that do not require the gap evaluations.
+
+Now, let's start by constructing our first scoring function for the global alignment algorithm called with the function :dox:`globalAlignment`.
+As first step we need to include the header file ``<seqan/align.h>`` which contains the necessary data structures and functions associated with the alignments.
+The next steps would be to implement the main function of our program and to define the types that we want to use.
+
+.. includefrags:: demos/tutorial/alignment/scoring_scheme_simple.cpp
+   :fragment: main
+
+We first define the type of the input sequences (``TSequence``) and an :dox:`Align` object (``TAlign``) type to store the alignment.
+For more information on the Align datastructure, please read the tutorial :ref:`tutorial-datastructures-alignment-alignment-gaps`.
+After defining the types, we can continue to construct our own Align object.
+First, we create two input sequences ``seq1 = "TELKDD"`` and ``seq2 = "LKTEL"``, then we define the scoring values for match, mismatch, gap.
+As last we create the 'align' object and resize it to manage two :dox:`Gaps` objects, at this point we filled it with the sequences to be aligned.
+
+.. includefrags:: demos/tutorial/alignment/scoring_scheme_simple.cpp
+   :fragment: init
+
+Now, we can compute the global alignment that makes use of the simple scoring function.
+To do so, we simply call the function :dox:`globalAlignment` and give as input parameters the ``align`` object and the scoring scheme representing the Levenshtein distance.
+The globalAlignment function fills the ``align`` object with the best computed alignment and returns the maximum score which we store in the ``score`` variable.
+Afterwards, we print the computed score and the corresponding alignment.
+
+.. includefrags:: demos/tutorial/alignment/scoring_scheme_simple.cpp
+   :fragment: alignment
+
+Congratulations!
+You have created your global alignment implementing the simple scoring function, the output is as follows:
+
+.. includefrags:: demos/tutorial/alignment/scoring_scheme_simple.cpp.stdout
+
+However, in the evaluation of protein similarity or for advanced nucleotide alignments a more complex scoring model is generally applied.
+It is based on the usage of a Substitution Matrix, proven to better describe from a biological point of view, events such as matches and mismatches.
+
+Substitutional Matrices Score
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Substitutional Matrices are built on the basis of the probability that a particular amino acid or nucleotide is replaced with another during the evolution process.
+They assign to each pair a value that indicates their degree of similarities, obtained thanks to statistical methods reflecting the frequency of a particular substitution in homologous protein or RNA families. A positive value in the Substitutional Matrix means that the two letters share identical or similar properties.
+
+These scoring schemes store a score value for each pair of characters. This value can be accessed using :dox:`Score#score`.
+Examples for this kind of scoring scheme are :dox:`Pam120` and :dox:`Blosum62`.
+Anyway the class :dox:`MatrixScore` can be used to store arbitrary scoring matrices for the creation of custom scoring systems, as shown in the example proposed in the :ref:`how-to-recipes-work-with-custom-score-matrices`.
+
+Blosum matrix, is one of the most used Substitutional Matrix implemented by considering multiple alignments of evolutionarily divergent proteins, while Ribosum is the RNA counterpart computed using ribosomal sequences.
+
+In the following example it is proposed the construction of a scoring function for a global alignment algorithm that uses the Blosum62 matrix to score the matched and mismatched letters.
+As first we include the header file ``<seqan/align.h>`` which contains the necessary data structures and functions associated with the alignments, then we implement the main function of our program and define the types that we want to use.
+
+.. includefrags:: demos/tutorial/alignment/scoring_scheme_matrix.cpp
+   :fragment: main
+
+The input sequences type ``TSequence`` and the :dox:`Align` object of type ``TAlign`` are defined and the two input sequences ``seq1 = "TELKDD"`` and ``seq2 = "LKTEL"`` together with the gap penalty are assigned. In this case we define only the gap value since the Blosum matrix will be used to score matches and mismatches.
+Then the sequences are associated with the alignment object.
+
+.. includefrags:: demos/tutorial/alignment/scoring_scheme_matrix.cpp
+   :fragment: init
+
+Now, we compute the global alignment function, providing as second parameter the tag referred to the Blosum62 matrix together with the gap costs.
+To do so, we simply call the function :dox:`globalAlignment` and give as input parameters the ``align`` object and the Blosum62 scoring scheme.
+The globalAlignment function returns the score of the best alignment, which we store in the ``score`` variable that is then printed together with the corresponding alignment.
+
+.. includefrags:: demos/tutorial/alignment/scoring_scheme_matrix.cpp
+   :fragment: alignment
+
+The output of a global alignment implementing the Blosum62 scoring function is as follows:
+
+.. includefrags:: demos/tutorial/alignment/scoring_scheme_matrix.cpp.stdout
+
+.. note::
+   As can be noted the output of this scoring scheme is completely different with respect to the output generated with the simple scoring scheme confirming that the scoring scheme choice is one of the most important step to achieve high quality alignments.
+
+Gap Evaluation
+--------------
+
+In the previous sections we proposed two simple code examples useful to highlight the differences between two scoring schemes capable to evaluate match and mismatch events. In this section we will see the three gap models, implemented in the SeqAn library, to evaluate the insertion and deletion events.
+
+Linear Gap Model
+^^^^^^^^^^^^^^^^
+
+The easiest is the Linear gap model that considers, for the alignment score computation, the gap length (g) giving the possibility to evaluate with different scores gaps of different sizes;
+
+.. image:: linear.png
+   :width: 160px
+   :align: center
+
+This gap model is chosen as standard when only a gap value is provided in the scoring function or when the two provided gaps have the same value. For instance, this gap model as been adopted during the alignment computation of the two proposed examples.
+
+Affine Gap Model
+^^^^^^^^^^^^^^^^
+
+It has been proven that the first amino acid or nucleotide inserted/deleted (identified as gap open) found during the alignment operations is more significant, from a biological point of view, than the subsequent ones (called gap extension), making the so called Affine Gap model a viable solution for the alignment of biomolecules :cite:`cartwright2006logarithmic`.
+Affine gap model that attribute different costs to the gap open (d) and the gap extension (e) events, is able to assign an higher penalty to the gap presence with respect to its relative length (g).
+
+.. image:: affine.png
+   :width: 240px
+   :align: center
+
+The Affine Gap model implemented in the DP alignment algorithms is however quite expensive both in terms of computational time as well as in terms of memory requirements with respect to other less demanding solutions such as the Linear Gap model application.
+
+Dynamic Gap Model
+^^^^^^^^^^^^^^^^^
+
+In SeqAn is provided an optimised version of the Affine Gap model called Dynamic Gap Selector (DGS) designed by Urgese et al. :cite:`Urgese2014`. This new gap model can be used to reduce the computational time and the memory requirement while keeping the alignment scores close to those computed with the Affine Gap model.
+The usage of Dynamic Gap model in the Global alignment computation of long strings can give results slightly different from those computed using Affine Gap model since the alignment matrix became bigger and different alignment paths can be chosen during the alignment procedure. Score variation are rare when Dynamic Gap model is used in the Local alignments.
+
+Example Affine vs Dynamic
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. tip::
+
+   The order of the different costs in the scoring scheme is ``match``, ``mismatch``, ``gapExtend`` and ``gapOpen``.
+   The gap model selection can be done providing one of the three specific tags (``LinearGaps()``, ``AffineGaps()`` or ``DynamicGaps()``) as last parameter in the scoring function creation. If you want to use Linear Gap costs you could also omit the last parameter ``gapOpen`` and the scoring scheme would automatically choose the Linear Gap cost function.
+   The Affine Gap model is chosen as standard when the gap costs are different and the gap model tag is not provided. If the Dynamic Gap model is required the relative tag must be supplied.
+
+In the following we propose an example where two different scoring functions have been created to show how to call a global alignment algorithm that uses the Blosum62 plus the ``AffineGaps()`` and ``DynamicGaps()`` specializations.
+The inclusion of the header and the type definition is identical to the previous examples.
+
+.. includefrags:: demos/tutorial/alignment/scoring_scheme_affine_dgs.cpp
+   :fragment: main
+
+The input sequences type and the :dox:`Align` object of type ``TAlign`` are then create and initialized. As can be noted we define two different gap values, one for the gap extension and one for the gap open. Even in this example the Blosum62 will be used to score match and substitutions events.
+
+.. includefrags:: demos/tutorial/alignment/scoring_scheme_affine_dgs.cpp
+   :fragment: init
+
+Now, we can compute the global alignment function providing as second parameter the tag referred to the Blosum62 matrix filled with the two different gap costs. Moreover, the tag for the gap model selection is provided.
+To do so, we simply call the function :dox:`globalAlignment` and give as input parameters the ``align`` object, the Blosum62 scoring scheme and the ``AffineGaps()`` or ``DynamicGaps()`` tag.
+The globalAlignment function output is then printed.
+
+.. includefrags:: demos/tutorial/alignment/scoring_scheme_affine_dgs.cpp
+   :fragment: alignment
+
+The output of a global alignment implementing the Blosum62 with the two gap models is as follows:
+
+.. includefrags:: demos/tutorial/alignment/scoring_scheme_affine_dgs.cpp.stdout
+
+.. tip::
+
+  The functions :dox:`SimpleScore#scoreMatch` and :dox:`SimpleScore#scoreMismatch` access values for match and mismatch.
+  The function :dox:`SimpleScore#scoreGap`, or :dox:`SimpleScore#scoreGapExtend` and :dox:`SimpleScore#scoreGapOpen` access values for gaps.
diff --git a/manual/source/Tutorial/DataStructures/Alignment/affine.png b/manual/source/Tutorial/DataStructures/Alignment/affine.png
new file mode 100644
index 0000000..ade646c
Binary files /dev/null and b/manual/source/Tutorial/DataStructures/Alignment/affine.png differ
diff --git a/manual/source/Tutorial/DataStructures/Alignment/alig_ins_del.png b/manual/source/Tutorial/DataStructures/Alignment/alig_ins_del.png
new file mode 100644
index 0000000..3c56498
Binary files /dev/null and b/manual/source/Tutorial/DataStructures/Alignment/alig_ins_del.png differ
diff --git a/manual/source/Tutorial/DataStructures/Alignment/index.rst b/manual/source/Tutorial/DataStructures/Alignment/index.rst
new file mode 100644
index 0000000..0c3cd95
--- /dev/null
+++ b/manual/source/Tutorial/DataStructures/Alignment/index.rst
@@ -0,0 +1,24 @@
+.. _tutorial-datastructures-alignment:
+
+Alignment
+========================
+
+..  toctree::
+    :hidden:
+    :titlesonly:
+
+    ScoringSchemes
+    AlignmentGaps
+    AlignmentGraph
+
+Alignment Algorithms ( e.g.
+:ref:`Pairwise <tutorial-algorithms-alignment-pairwise-sequence-alignment>` and
+:ref:`Multiple <tutorial-algorithms-alignment-multiple-sequence-alignment>` )
+are one of the core algorithms in SeqAn. In this section you can learn how SeqAn
+represents alignments as C++ Objects and how you could use those data structures
+for your own alignment algorithm. Furthermore, you can learn which different
+kinds of :ref:`tutorial-datastructures-alignment-scoringschemes` exist,
+i.e. which combinations of Match/Mismatch Evaluation (e.g. Simple Score,
+Substitutional Matrices Score) and Insertion/Deletion Evaluation (e.g. Linear
+Gap Model, Affine Gap Model and Dynamic Gap Model) are possible and how you can
+define your own Scoring Matrices.
diff --git a/manual/source/Tutorial/DataStructures/Alignment/linear.png b/manual/source/Tutorial/DataStructures/Alignment/linear.png
new file mode 100644
index 0000000..a8db196
Binary files /dev/null and b/manual/source/Tutorial/DataStructures/Alignment/linear.png differ
diff --git a/manual/source/Tutorial/Graphs.rst b/manual/source/Tutorial/DataStructures/Graphs.rst
similarity index 53%
rename from manual/source/Tutorial/Graphs.rst
rename to manual/source/Tutorial/DataStructures/Graphs.rst
index 341d3f2..298c1f2 100644
--- a/manual/source/Tutorial/Graphs.rst
+++ b/manual/source/Tutorial/DataStructures/Graphs.rst
@@ -1,12 +1,11 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-graphs:
+.. _tutorial-datastructures-graphs:
 
 Graphs
-------
+======
 
 Learning Objective
   This tutorial shows how to use graphs in SeqAn and their functionality.
@@ -18,12 +17,15 @@ Duration
   1 h
 
 Prerequisites
-  :ref:`tutorial-sequences`, :ref:`tutorial-alignment-representation`, :ref:`tutorial-pairwise-sequence-alignment`
+  :ref:`tutorial-datastructures-sequences`, :ref:`tutorial-datastructures-alignment`, :ref:`tutorial-algorithms-alignment-pairwise-sequence-alignment`
+
+Overview
+--------
 
 A graph in computer science is an ordered pair :math:`G = (V, E)` of a set of vertices V and a set of edges E.
-SeqAn provides different :dox:`Graph Graph types of graphs` and the most well-known graph algorithms as well as some specialized alignment graph algorithms.
+SeqAn provides different :dox:`Graph types of graphs` and the most well-known graph algorithms as well as some specialized alignment graph algorithms.
 In this part of the tutorial, we demonstrate how to construct a graph in SeqAn and show the usage of some algorithms.
-Alignment graphs are described in the tutorial :ref:`tutorial-alignment-representation`.
+Alignment graphs are described in the tutorial :ref:`tutorial-datastructures-alignment`.
 
 Let us follow a simple example.
 We have given the following network of five cities and in this network we want to compute the shortest path from Hannover to any other city.
@@ -33,16 +35,15 @@ We have given the following network of five cities and in this network we want t
    :width: 240px
 
 In the section `Graph Basics`_, we will create the network and write the graph to a `.dot` file.
-The section `Property Maps and Iterators`_ assigns city names to the vertices and demonstrates the usage of a vertex iterator.
-Finally, in `Graph Algorithms`_ we will compute the shortest path by calling a single function.
+The section `Property Maps`_ assigns city names to the vertices and `Graph Iterators`_ demonstrates the usage of a vertex iterator.
 
-After having worked through these sections you should be familiar with the general usage of graphs in SeqAn.
+After having worked through these sections you should be familiar with the general usage of graphs in SeqAn. You are then prepared to proceed with :ref:`tutorial-algorithms-graph-algorithms`, where we will compute the shortest path by calling a single function.
 
 Graph Basics
-~~~~~~~~~~~~
+------------
 
 The general header file for all types of graphs is ``<seqan/graph_types.h>``.
-It comprises the class :dox:`Graph` and its specializations, all functions for basic graph operations, and different iterators.
+It comprises the :dox:`Graph` class, its specializations, every function for basic graph operations and different iterators.
 Later, for computing the shortest path we will also need ``<seqan/graph_algorithms.h>`` which includes the implementations of most of SeqAn's graph algorithms.
 
 .. includefrags:: demos/tutorial/graph/graph_dijkstra.cpp
@@ -51,7 +52,7 @@ Later, for computing the shortest path we will also need ``<seqan/graph_algorith
 We want to model the network of cities as an undirected graph and label the edges with distances.
 Before we start creating edges and vertices, we need some typedefs to specify the graph type.
 
-SeqAn offers different specializations of the class :dox:`Graph`:, :dox:`UndirectedGraph Undirected Graph`, :dox:`DirectedGraph`, :dox:`Tree`, :dox:`Automaton`, :dox:`HmmGraph`, and :dox:`AlignmentGraph Alignment Graph`.
+SeqAn offers different specializations of the class :dox:`Graph`: :dox:`UndirectedGraph Undirected Graph`, :dox:`DirectedGraph`, :dox:`Tree`, :dox:`WordGraph Word Graph`, :dox:`Automaton`, :dox:`HmmGraph`, and :dox:`AlignmentGraph Alignment Graph`.
 For our example, an undirected graph will be sufficient, so we define our own graph type ``TGraph`` with the specialization :dox:`UndirectedGraph Undirected Graph` of the class :dox:`Graph`.
 Luckily, this specialization has an optional cargo template argument, which attaches any kind of object to the edges of the graph.
 This enables us to store the distances between the cities, our edge labels, using the cargo type ``TCargo`` defined as ``unsigned int``.
@@ -103,7 +104,7 @@ Alternatively, you can use the standard output to print the graph to the screen:
    :fragment: alternatively-graph-io
 
 Assignment 1
-""""""""""""
+^^^^^^^^^^^^
 
 .. container:: assignment
 
@@ -127,8 +128,10 @@ Assignment 1
 
 		.. includefrags:: demos/tutorial/graph/solution_1.cpp.stdout
 
+.. _tutorial-datastructures-graphs-assignment-2:
+
 Assignment 2
-""""""""""""
+^^^^^^^^^^^^
 
 .. container:: assignment
 
@@ -137,7 +140,9 @@ Assignment 2
 
    Objective
       Write a program which creates a directed graph with the following edges:
-      ``(1,0), (0,4), (2,1), (4,1), (5,1), (6,2), (3,2), (2,3), (7,3), (5,4), (6,5), (5,6), (7,6), (7,7)``
+
+      **(1,0), (0,4), (2,1), (4,1), (5,1), (6,2), (3,2), (2,3), (7,3), (5,4), (6,5), (5,6), (7,6), (7,7)**
+
       Use the function :dox:`Graph#addEdges` instead of adding each edge separately.
       Output the graph to the screen.
 
@@ -168,8 +173,10 @@ Assignment 2
 		.. includefrags:: demos/tutorial/graph/graph_algo_scc.cpp.stdout
 		   :fragment: main-graph-construction
 
+.. _tutorial-datastructures-graphs-assignment-3:
+
 Assignment 3
-""""""""""""
+^^^^^^^^^^^^
 
 .. container:: assignment
 
@@ -179,13 +186,13 @@ Assignment 3
    Objective
      Write a program which defines an HMM for DNA sequences:
 
-     * Define an exon, splice, and intron state.
-     * Consider to use the type ``LogProb<>`` from ``<seqan/basic/basic_logvalue.h>`` for the transition probabilities.
-       Sequences always start in the exon state.
-       The probability to stay in an exon or intron state is 0.9.
+     * Define an **exon**, **splice**, and **intron** state.
+     * Sequences always start in the exon state.
+       The probability to stay in an exon or intron state is **0.9**.
        There is exactly one switch from exon to intron.
        Between the switch from exon to intron state, the HMM generates exactly one letter in the splice state.
-       The sequence ends in the intron state with a probability of 0.1.
+       The sequence ends in the intron state with a probability of **0.1**.
+     * Consider to use the type :dox:`LogProb` for the transition probabilities.
      * Output the HMM to the screen.
      * Use the follwing emission probabilities.
 
@@ -202,7 +209,7 @@ Assignment 3
    Solution
      .. container:: foldable
 
-	The program starts with the inclusion of ``<seqan/graph_algorithms.h>`` and ``<seqan/basic/basic_logvalue.h>``.
+	The program starts with the inclusion of ``<seqan/graph_algorithms.h>``.
 	In this example you could include ``<seqan/graph_types.h>`` instead of the algorithms header file.
 	However, it is likely that if you define a graph, you will call a graph algorithm as well.
 
@@ -214,7 +221,7 @@ Assignment 3
 	It is a :dox:`Graph` with the specialization :dox:`HmmGraph`.
 	The specialization takes itself three template arguments: the alphabet of the sequence that the HMM generates, the type of the transitions, and again a specialization.
 	In our case, we define the transitions to be the logarithm of the probilities (:dox:`LogProb`) and hereby simplify multiplications to summations.
-	For the specialization we explicitly use the ``Default`` tag.
+	For the specialization we explicitly use the ``Default`` tag. The default tag can always be omitted but it shows the possibility of further specialization.
 
 	.. includefrags:: demos/tutorial/graph/graph_hmm.cpp
 	   :fragment: typedefs
@@ -265,8 +272,8 @@ Assignment 3
 	.. includefrags:: demos/tutorial/graph/graph_hmm.cpp.stdout
 	   :fragment: print-model
 
-Property Maps And Iterators
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Property Maps
+-------------
 
 So far, the vertices in our graph can only be distinguished by their vertex descriptor.
 We will now see how to associate the city names with the vertices.
@@ -278,8 +285,8 @@ Be aware that the word external is a hint that the information is stored indepen
 Property maps are simply :dox:`String Strings` of a property type and are indexed via the already well-known vertex and edge descriptors.
 
 Lets see how we can define a vertex property map for the city names.
-Our property type is a :dox:`String` of a city name type, a char string.
-We only have to create and :dox:`Graph#resizeVertexMap resize` this map so that it can hold information on all vertices.
+Our property type is a :dox:`String` of a city name, more explicitly a char string. The vertex property map should hold several names so we define a String of Strings.
+Now, we only have to create and :dox:`Graph#resizeVertexMap resize` this map so that it can hold information on all vertices.
 
 .. includefrags:: demos/tutorial/graph/graph_dijkstra.cpp
    :fragment: definition-property-map
@@ -292,9 +299,12 @@ Note that this is completely independent from our graph object ``g``.
 
 If we now want to output all vertices including their associated information we can iterate through the graph and use the iterators value to access the information in the property map.
 
-But let us first have a quick look at iterators for graph types.
+Graph Iterators
+---------------
+
+Let us have a quick look at iterators for graph types.
 SeqAn provides six different specializations for graph iterators: :dox:`VertexIterator Vertex Iterator`, :dox:`AdjacencyIterator Adjacency Iterator`, :dox:`DfsPreorderIterator Dfs Preorder Iterator`, and :dox:`BfsIterator Bfs Iterator` for traversing vertices, and :dox:`EdgeIterator Edge Iterator` and :dox:`OutEdgeIterator Out-edge Iterator` for traversing edges.
-Except for the :dox:`VertexIterator Vertex Iterator` and the :dox:`EdgeIterator Edge Iterator` they depend additionally to the graph on a specified edge or vertex.
+Except for the :dox:`VertexIterator Vertex Iterator` and the :dox:`EdgeIterator Edge Iterator` who only depend on the graph, all other graph iterators depend additionally on a specified edge or vertex.
 
 To output all vertices of our graph in an arbitrary order, we can define an iterator of the specialization :dox:`VertexIterator Vertex Iterator` and determine its type with the metafunction :dox:`ContainerConcept#Iterator`.
 The functions :dox:`RootedIteratorConcept#atEnd` and :dox:`InputIteratorConcept#goNext` also work for graph iterators as for all other iterators in SeqAn.
@@ -311,7 +321,7 @@ The output of this piece of code should look as follows:
    :fragment: iterate-and-output-properties
 
 Assignment 4
-""""""""""""
+^^^^^^^^^^^^
 
 .. container:: assignment
 
@@ -319,216 +329,39 @@ Assignment 4
      Application
 
    Objective
-     Add a vertex map to the program from task 2:
+     Add a vertex map to the program from assignment 2:
 
      #. The map shall assign a lower-case letter to each of the seven vertices.
         Find a way to assign the properties to all vertices at once in a single function call (*without* using the function :dox:`PropertyMapConcept#assignProperty` for each vertex separately).
      #. Show that the graph is not connected by iterating through the graph in depth-first-search ordering.
         Output the properties of the reached vertices.
 
-   Solution
+   Hint
      .. container:: foldable
 
-	Our aim is not to assign all properties at once to the vertices.
-	Therefore, we create an array containing all the properties, the letters `'a'` through `'h'`.
-
-	The function :dox:`Graph#assignVertexMap` does not only resize the vertex map (as :dox:`Graph#resizeVertexMap` does) but also initializes it.
-	If we specify the optional parameter ``prop``, the values from the array ``prop`` are assigned to the items in the property map.
-
-	.. includefrags:: demos/tutorial/graph/graph_algo_scc.cpp
-	   :fragment: vertex-map
-
-	To iterate through the graph in depth-first-search ordering we have to define an :dox:`ContainerConcept#Iterator` with the specialization :dox:`DfsPreorderIterator`.
-
-	The vertex descriptor of the first vertex is ``0`` and we choose this vertex as a starting point for the depth-first-search through our graph ``g`` with the iterator ``dfsIt``:
-
-	.. includefrags:: demos/tutorial/graph/graph_algo_scc.cpp
-	   :fragment: iterate-dfs
-
-	For the chosen starting point, only two other vertices can be reached:
-
-	.. includefrags:: demos/tutorial/graph/graph_algo_scc.cpp.stdout
-	   :fragment: iterate-dfs
-
-Graph Algorithms
-~~~~~~~~~~~~~~~~
-
-Now that we completed creating the graph we can address the graph algorithms.
-Here is an overview of some graph algorithms currently available in SeqAn:
-
-Elementary Graph Algorithms
-  * Breadth-First Search (:dox:`breadthFirstSearch`)
-  * Depth-First Search (:dox:`depthFirstSearch`)
-  * Topological Sort (:dox:`topologicalSort`)
-  * Strongly Connected Components (:dox:`stronglyConnectedComponents`)
-
-Minimum Spanning Tree
-  * Prim's Algorithm  (:dox:`primsAlgorithm`)
-  * Kruskal's Algorithm (:dox:`kruskalsAlgorithm`)
-
-Single-Source Shortest Path
-  * DAG Shortest Path (:dox:`dagShortestPath`)
-  * Bellman-Ford (:dox:`bellmanFordAlgorithm`)
-  * Dijkstra (:dox:`dijkstra`)
-
-All-Pairs Shortest Path
- * All-Pairs Shortest Path (:dox:`allPairsShortestPath`)
- * Floyd Warshall (:dox:`floydWarshallAlgorithm`)
-
-Maximum Flow
- * Ford-Fulkerson (:dox:`fordFulkersonAlgorithm`)
-
-Transitive Closure
- * Transitive Closure (:dox:`transitiveClosure`)
-
-Bioinformatics Algorithms
- * Needleman-Wunsch (:dox:`globalAlignment`)
- * Gotoh (:dox:`globalAlignment`)
- * Hirschberg with Gotoh (:dox:`globalAlignment`)
- * Smith-Waterman (:dox:`localAlignment`)
- * Multiple Sequence Alignment (:dox:`globalMsaAlignment`)
- * UPGMA (:dox:`upgmaTree`)
- * Neighbor Joining (:dox:`njTree`)
-
-The biological algorithms use heavily the alignment graph.
-Most of them are covered in the tutorial :ref:`tutorial-alignment-representation`.
-All others use the appropriate standard graph.
-All algorithms require some kind of additional input, e.g., the Dijkstra algorithm requires a distance property map, alignment algorithms sequences and a score type and the network flow algorithm capacities on the edges.
-
-Generally, only a single function call is sufficient to carry out all the calculations of a graph algorithm.
-In most cases you will have to define containers that store the algorithms results prior to the function call.
-
-In our example, we apply the shortest-path algorithm of Dijkstra. It is implemented in the function :dox:`dijkstra`.
-
-Let's have a look at the input parameters.
-The first parameter is of course the graph, ``g``.
-Second, you will have to specify a vertex descriptor.
-The function will compute the distance from this vertex to all vertices in the graph.
-The last input parameter is an edge map containing the distances between the vertices.
-One may think that the distance map is already contained in the graph.
-Indeed this is the case for our graph type but it is not in general.
-The cargo of a graph might as well be a string of characters or any other type.
-So, we first have to find out how to access our internal edge map.
-We do not need to copy the information to a new map.
-Instead we can define an object of the type :dox:`InternalPropertyMap` of our type ``TCargo``.
-It will automatically find the edge labels in the graph when the function :dox:`PropertyMapConcept#property` or :dox:`PropertyMapConcept#getProperty` is called on it with the corresponding edge descriptor.
-
-The output containers of the shortest-path algorithm are two property maps, ``predMap`` and ``distMap``.
-The ``predMap`` is a vertex map that determines a shortest-paths-tree by mapping the predecessor to each vertex.
-Even though we are not interested in this information, we have to define it and pass it to the function.
-The ``distMap`` indicates the length of the shortest path to each vertex.
-
-.. includefrags:: demos/tutorial/graph/graph_dijkstra.cpp
-   :fragment: dijkstra-containers
-
-Having defined all these property maps, we can then call the function :dox:`dijkstra`:
-
-.. includefrags:: demos/tutorial/graph/graph_dijkstra.cpp
-   :fragment: dijkstra
-
-Finally, we have to output the result.
-Therefore, we define a second vertex iterator ``itV2`` and access the distances just like the city names with the function :dox:`PropertyMapConcept#property` on the corresponding property map.
-
-.. includefrags:: demos/tutorial/graph/graph_dijkstra.cpp
-   :fragment: dijkstra-output
-
-Assignments 5
-"""""""""""""
-
-.. container:: assignment
-
-   Type
-     Application
-
-   Objective
-     Write a program which calculates the connected components of the graph defined in task 1.
-     Output the component for each vertex.
-
-   Solution
-     .. container:: foldable
-
-	SeqAn provides the function :dox:`stronglyConnectedComponents` to compute the connected components of a directed graph.
-	The first parameter of this function is of course the graph.
-	The second parameter is an output parameter.
-	It is a vertex map that will map a component id to each vertex. Vertices that share the same id are in the same component.
-
-	.. includefrags:: demos/tutorial/graph/graph_algo_scc.cpp
-	   :fragment: connected-components
-
-	Now, the only thing left to do is to walk through our graph and ouput each vertex and the corresponding component using the function :dox:`PropertyMapConcept#getProperty`.
-	One way of doing so is to define a :dox:`VertexIterator`.
-
-	.. includefrags:: demos/tutorial/graph/graph_algo_scc.cpp
-	   :fragment: output-connected-components
-
-	.. includefrags:: demos/tutorial/graph/graph_algo_scc.cpp
-	   :fragment: return
-
-	The output for the graph defined in the `Assignment 4`_ looks as follows:
-
-	.. includefrags:: demos/tutorial/graph/graph_algo_scc.cpp.stdout
-	   :fragment: output-connected-components
-
-	The graph consists of four components.
-	The first contains vertex ``a``, ``b``, and ``e``, the second contains vertex ``c`` and ``d``, the third
-	contains vertex ``f`` and ``g`` and the last contains only vertex ``h``.
-
-
-Assignment 6
-""""""""""""
-
-.. container:: assignment
-
-   Type
-     Application
-
-   Objective
-      Extend the program from the `Assignment 5`.
-      Given the sequence ``s = "CTTCATGTGAAAGCAGACGTAAGTCA"``.
-
-      #. calculate the Viterbi path of ``s`` and output the path as well as the probability of the path and
-      #. calculate the probability that the HMM generated ``s`` with the forward and backward algorithm.
+        * Use an array and the function :dox:`Graph#assignVertexMap` to assign all properties at once.
+        * Use the :dox:`DfsPreorderIterator DFS Iterator` for depth-first-search ordering.
 
    Solution
      .. container:: foldable
 
-	In `Assignment 3`_ we defined an HMM with three states: exon, splice, and intron.
+        Our aim is to assign all properties at once to the vertices.
+        Therefore, we create an array containing all the properties, the letters `'a'` through `'h'`.
 
-	The Viterbi path is the sequence of states that is most likely to produce a given output.
-	In SeqAn, it can be calculated with the function :dox:`HmmAlgorithms#viterbiAlgorithm`.
-	The produced output for this assignment is the DNA sequence ``s``.
+        The function :dox:`Graph#assignVertexMap` does not only resize the vertex map (as :dox:`Graph#resizeVertexMap` does) but also initializes it.
+        If we specify the optional parameter ``prop``, the values from the array ``prop`` are assigned to the items in the property map.
 
-	The first parameter of the function :dox:`HmmAlgorithms#viterbiAlgorithm` is of course the HMM, and the second parameter is the sequence ``s``.
-	The third parameter is an output parameter that will be filled by the function.
-	Since we want to compute a sequence of states, this third parameter is a :dox:`String` of :dox:`VertexDescriptor VertexDescriptors` which assigns a state to each character of the sequence ``s``.
+        .. includefrags:: demos/tutorial/graph/graph_algo_scc.cpp
+            :fragment: vertex-map
 
-	The return value of the function :dox:`HmmAlgorithms#viterbiAlgorithm` is the overall probability of this sequence of states, the Viterbi path.
+        To iterate through the graph in depth-first-search ordering we have to define an :dox:`ContainerConcept#Iterator` with the specialization :dox:`DfsPreorderIterator`.
 
-	The only thing left is to output the path.
-	The path is usually longer than the given sequence.
-	This is because the HMM may have silent states, e.g. the begin and end state.
-	To check if a state is silent SeqAn provides the function :dox:`HmmGraph#isSilent`.
+        The vertex descriptor of the first vertex is ``0`` and we choose this vertex as a starting point for the depth-first-search through our graph ``g`` with the iterator ``dfsIt``:
 
-	.. includefrags:: demos/tutorial/graph/graph_hmm.cpp
-	   :fragment: viterbi
+        .. includefrags:: demos/tutorial/graph/graph_algo_scc.cpp
+            :fragment: iterate-dfs
 
-	The output of the above piece of code is:
+        For the chosen starting point, only two other vertices can be reached:
 
-	.. includefrags:: demos/tutorial/graph/graph_hmm.cpp.stdout
-	   :fragment: viterbi
-
-	It is even simpler to use the forward algorithm in SeqAn since it needs only the HMM and the sequence as parameters and returns a single probability.
-	This is the probability of the HMM to generate the given sequence. The corresponding function is named :dox:`HmmAlgorithms#forwardAlgorithm`.
-
-	.. includefrags:: demos/tutorial/graph/graph_hmm.cpp
-	   :fragment: forward-algorithm
-
-	Analogously, the function :dox:`HmmAlgorithms#backwardAlgorithm` implements the backward algorithm in SeqAn.
-
-	.. includefrags:: demos/tutorial/graph/graph_hmm.cpp
-	   :fragment: backward-algorithm
-
-	The output of these two code fragments is:
-
-	.. includefrags:: demos/tutorial/graph/graph_hmm.cpp.stdout
-	   :fragment: forward-backward
+        .. includefrags:: demos/tutorial/graph/graph_algo_scc.cpp.stdout
+            :fragment: iterate-dfs
diff --git a/manual/source/Tutorial/IndexIterators.rst b/manual/source/Tutorial/DataStructures/Indices/IndexIterators.rst
similarity index 88%
rename from manual/source/Tutorial/IndexIterators.rst
rename to manual/source/Tutorial/DataStructures/Indices/IndexIterators.rst
index 78514b3..91de764 100644
--- a/manual/source/Tutorial/IndexIterators.rst
+++ b/manual/source/Tutorial/DataStructures/Indices/IndexIterators.rst
@@ -1,12 +1,11 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-index-iterators:
+.. _tutorial-datastructures-indices-index-iterators:
 
 Index Iterators
----------------
+===============
 
 Learning Objective
   You will know the different kinds of index indices and how to use them for searching.
@@ -18,17 +17,17 @@ Duration
   1.5 h
 
 Prerequisites
-  :ref:`tutorial-sequences`, :ref:`tutorial-iterators`
+  :ref:`tutorial-datastructures-sequences`
 
 Virtual String Tree Iterator
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+----------------------------
 
-SeqAn provides a common interface, called the Virtual String Tree Iterator (:dox:`VSTreeIterator VSTree Iterator`), which lets you traverse the :dox:`IndexEsa`, :dox:`IndexWotd` and :dox:`IndexDfi` as a suffix tree (:ref:`glossary-suffix-tree` definition), the :dox:`IndexQGram` as a suffix trie, and the :dox:`FMIndex` as a prefix trie.
+SeqAn provides a common interface, called the Virtual String Tree Iterator (:dox:`VSTreeIterator VSTree Iterator`), which lets you traverse the :dox:`IndexSa`, :dox:`IndexEsa`, :dox:`IndexWotd` and :dox:`IndexDfi` as a suffix tree (:ref:`tutorial-datastructures-indices` definition), the :dox:`IndexQGram` as a suffix trie, and the :dox:`FMIndex` as a prefix trie.
 In the first part of this tutorial we will concentrate on the :dox:`TopDownIterator TopDown Iterator` which is one of the two index iterator specializations (besides the :dox:`BottomUpIterator BottomUp Iterator`).
 The second part will then deal with the DFS.
 
 Top-Down Iteration
-~~~~~~~~~~~~~~~~~~
+------------------
 
 For index based pattern search or algorithms traversing only the upper parts of the suffix tree the :dox:`TopDownIterator TopDown Iterator` or :dox:`TopDownHistoryIterator TopDown History Iterator` is the best solution.
 Both provide the functions :dox:`TopDownIterator#goDown` and :dox:`TopDownIterator#goRight` to go down to the first child node or go to the next sibling.
@@ -41,7 +40,7 @@ We therefore want to use :dox:`TopDownIterator#goDown` which has an overload to
 
 .. important::
 
-   The following examples show how to iterate :dox:`IndexEsa`, :dox:`IndexWotd` or :dox:`IndexDfi`, i.e. :dox:`Index` specializations representing suffix trees.
+   The following examples show how to iterate :dox:`IndexSa`, :dox:`IndexEsa`, :dox:`IndexWotd` or :dox:`IndexDfi`, i.e. :dox:`Index` specializations representing suffix trees.
    The result of the iteration will look different on :dox:`Index` specializations representing tries, e.g. :dox:`FMIndex` or :dox:`IndexQGram`.
    Indeed, the topology of an :dox:`Index` changes depending on the chosen tree or trie specialization.
    Note that any suffix tree edge can be labeled by more than one character, whereas any trie edge is always labeled by exactly one character.
@@ -51,13 +50,13 @@ First we create an index of the text ``"How much wood would a woodchuck chuck?"`
 .. includefrags:: demos/tutorial/index_iterators/index_search.cpp
    :fragment: initialization
 
-Afterwards we create the :dox:`TopDownIterator TopDown Iterator` using the metafunction Iterator, which expects two arguments, the type of the container to be iterated and a specialization tag (see the VSTree Iterator hierarchy and the :ref:`tutorial-iterators` Tutorial for more details).
+Afterwards we create the :dox:`TopDownIterator TopDown Iterator` using the metafunction Iterator, which expects two arguments, the type of the container to be iterated and a specialization tag (see the VSTree Iterator hierarchy and the :ref:`tutorial-datastructures-sequences-strings-and-segments-iterators` Tutorial for more details).
 
 .. includefrags:: demos/tutorial/index_iterators/index_search.cpp
    :fragment: iterator
 
 The main search can then be implemented using the functions :dox:`VSTreeIterator#repLength` and :dox:`VSTreeIterator#representative`.
-Since :dox:`TopDownIterator#goDown` might cover more than one character it is necessary to compare parts of the pattern against the representative of the iterator.
+Since :dox:`TopDownIterator#goDown` might cover more than one character (when traversing trees) it is necessary to compare parts of the pattern against the representative of the iterator.
 The search can now be implemented as follows.
 The algorithm descends the suffix tree along edges beginning with the corresponding pattern character.
 In each step the ``unseen`` edge characters have to be verified.
@@ -75,15 +74,21 @@ Program output:
 
 .. includefrags:: demos/tutorial/index_iterators/index_search.cpp.stdout
 
-Alternatively, we could have used :dox:`TopDownIterator#goDown` to go down the path of a pattern instead single characters:
+Alternatively, we could have used :dox:`TopDownIterator#goDown` to go down the path of the entire pattern instead of a single characters:
 
 .. includefrags:: demos/tutorial/index_iterators/index_search2.cpp
    :fragment: output
 
 .. includefrags:: demos/tutorial/index_iterators/index_search2.cpp.stdout
 
+.. tip::
+
+   When implementing recursive algorithms such as an approximate search using backtracking, we recommend
+   the use of the :dox:`TopDownIterator` without history. By passing the iterator by value, the history
+   is stored implicitly on the call stack.
+
 Assignment 1
-""""""""""""
+^^^^^^^^^^^^
 
 .. container:: assignment
 
@@ -102,7 +107,7 @@ Assignment 1
         Here, we need a :dox:`Pair` to indicate the string within the :dox:`StringSet` and a position within the string.
 
 Assignment 2
-""""""""""""
+^^^^^^^^^^^^
 
 .. container:: assignment
 
@@ -146,7 +151,7 @@ Assignment 2
             .. includefrags:: demos/tutorial/index_iterators/iterator_solution2.cpp
 
 Assignment 3
-""""""""""""
+^^^^^^^^^^^^
 
 .. container:: assignment
 
@@ -169,7 +174,7 @@ Assignment 3
 	.. includefrags:: demos/tutorial/index_iterators/index_assignment4.cpp.stdout
 
 Depth-First Search
-~~~~~~~~~~~~~~~~~~
+------------------
 
 The tree traversal in assignment 2 is equal to a the tree traversal in a full depth-first search (dfs) over all suffix tree nodes beginning either in the root (preorder dfs) or in a leaf node (postorder dfs).
 A preorder traversal (:ref:`figure-stree-preorder`) halts in a node when visiting it for the first time whereas a postorder traversal (:ref:`figure-stree-postorder`) halts when visiting a node for the last time.
@@ -189,7 +194,7 @@ The following two figures give an example in which order the tree nodes are visi
 
    Postorder DFS
 
-Since these traversals are frequently needed SeqAn provides special iterators which will we describe next.
+Since these traversals are frequently needed SeqAn provides special iterators which we will describe next.
 
 We want to construct the suffix tree of the string "abracadabra" and output the substrings represented by tree nodes in preorder dfs.
 In order to do so, we create the string "abracadabra" and an index specialized with the type of this string.
@@ -230,14 +235,14 @@ Program output:
 
 .. tip::
 
-   A relaxed suffix tree (see :ref:`glossary-suffix-tree`) is a suffix tree after removing the $ characters and empty edges.
+   A relaxed suffix tree (see :ref:`tutorial-datastructures-indices`) is a suffix tree after removing the $ characters and empty edges.
    For some bottom-up algorithms it would be better not to remove empty edges and to have a one-to-one relationship between leaves and suffices.
    In that cases you can use the tags PreorderEmptyEdges or PostorderEmptyEdges instead of Preorder or Postorder or EmptyEdges for the TopDown Iterator.
 
 Note that the :dox:`VSTreeIterator#goNext` is very handy as it simplifies the tree traversal in assignment 2 greatly.
 
 Assignment 4
-""""""""""""
+^^^^^^^^^^^^
 
 .. container:: assignment
 
@@ -257,14 +262,14 @@ Assignment 4
 	.. includefrags:: demos/tutorial/index_iterators/index_assignment1.cpp
 	   :fragment: initialization
 
-	To switch to postorder DFS we have two change the specialization tag of ``ParentLinks`` from ``Preorder`` to ``Postorder``.
+	To switch to postorder DFS we have to change the specialization tag of ``ParentLinks`` from ``Preorder`` to ``Postorder``.
 	Please note that the :dox:`TopDownHistoryIterator` always starts in the root node, which is the last postorder DFS node.
 	Therefore, the iterator has to be set explicitly to the first DFS node via :dox:`VSTreeIterator#goBegin`.
 
 	.. includefrags:: demos/tutorial/index_iterators/index_assignment1.cpp
 	   :fragment: iteration1
 
-	Alternatively to a :dox:`TopDownHistoryIterator` you also could have used a :dox:`BottomUpIterator` with the same result.
+	Alternatively with a :dox:`TopDownHistoryIterator` you also could have used a :dox:`BottomUpIterator` with the same result.
 	The BottomUp Iterator automatically starts in the first DFS node as it supports no random access.
 
 	.. includefrags:: demos/tutorial/index_iterators/index_assignment1.cpp
@@ -274,11 +279,11 @@ Assignment 4
 
 	.. includefrags:: demos/tutorial/index_iterators/index_assignment1.cpp.stdout
 
-As a last assignment lets try out one of the specialised iterators, which you can find at the bottom of this page.
-Look there for the specialisation which iterates over all maximal unique matches (MUMS).
+As the last assignment lets try out one of the specialized iterators, which you can find at the bottom of this page.
+Look there for the specialization which iterates over all maximal unique matches (MUMS).
 
 Assignment 5
-""""""""""""
+^^^^^^^^^^^^
 
 .. container:: assignment
 
@@ -310,7 +315,7 @@ Assignment 5
 	.. includefrags:: demos/tutorial/index_iterators/index_assignment2.cpp.stdout
 
 Accessing Suffix Tree Nodes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
+---------------------------
 
 In the previous subsection we have seen how to walk through a suffix tree.
 We now want to know what can be done with a suffix tree iterator.
@@ -327,7 +332,7 @@ There are various functions to access the node the iterator points at (some we h
   returns a string of all positions where the representative occurs in the text
 
 :dox:`VSTreeIterator#isRightTerminal`
-  tests if the representative is a suffix in the text (corresponds to the shaded nodes in the :ref:`glossary-suffix-tree` figures)
+  tests if the representative is a suffix in the text (corresponds to the shaded nodes in the :ref:`tutorial-datastructures-indices` figures)
 
 :dox:`VSTreeIterator#isLeaf`
   tests if the current node is a tree leaf
@@ -338,11 +343,11 @@ There are various functions to access the node the iterator points at (some we h
 .. important::
 
    There is a difference between the functions isLeaf and isRightTerminal.
-   In a relaxed suffix tree (see :ref:`glossary-suffix-tree`) a leaf is always a suffix, but not vice versa, as there can be internal nodes a suffix ends in.
+   In a relaxed suffix tree (see :ref:`tutorial-datastructures-indices`) a leaf is always a suffix, but not vice versa, as there can be internal nodes a suffix ends in.
    For them isLeaf returns false and isRightTerminal returns true.
 
 Property Maps
-~~~~~~~~~~~~~
+-------------
 
 Some algorithms require to store auxiliary information (e.g. weights, scores) to the nodes of a suffix tree.
 To attain this goal SeqAn provides so-called property maps, simple Strings of a property type.
@@ -377,7 +382,7 @@ Program output:
    In SeqAn there is already a function :dox:`TopDownHistoryIterator#nodeDepth` defined to return the node depth.
 
 Additional iterators
-~~~~~~~~~~~~~~~~~~~~
+--------------------
 
 By now, we know the following iterators (:math:`n` = text size, :math:`\sigma` = alphabet size, :math:`d` = tree depth):
 
@@ -412,7 +417,8 @@ Given a string s a repeat is a substring r that occurs at 2 different positions
 The repeat can also be identified by the triple (i,j,\|r\|).
 A maximal repeat is a repeat that cannot be extended to the left or to the right, i.e. s[i-1]≠s[j-1] and s[i+\|r\|]≠s[j+\|r\|].
 A supermaximal repeat r is a maximal repeat that is not part of another repeat.
-Given a set of strings s1, ..., sm a MultiMEM (multiple maximal exact match) is a substring r that occurs in each sequence si at least once and cannot be extended to the left or to the right.
+Given a set of strings :math:`s_1, \dots, s_m` a MultiMEM (multiple maximal exact match) is a substring r that occurs in
+each sequence :math:`s_i` at least once and cannot be extended to the left or to the right.
 A MUM (maximal unique match) is a MultiMEM that occurs exactly once in each sequence.
 The following examples demonstrate the usage of these iterators:
 
diff --git a/manual/source/Tutorial/QgramIndex.rst b/manual/source/Tutorial/DataStructures/Indices/QgramIndex.rst
similarity index 90%
rename from manual/source/Tutorial/QgramIndex.rst
rename to manual/source/Tutorial/DataStructures/Indices/QgramIndex.rst
index 45e00e9..b615b40 100644
--- a/manual/source/Tutorial/QgramIndex.rst
+++ b/manual/source/Tutorial/DataStructures/Indices/QgramIndex.rst
@@ -1,12 +1,11 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-q-gram-index:
+.. _tutorial-datastrucures-indices-q-gram-index:
 
 Q-gram Index
-------------
+============
 
 Learning Objective
   You will know the features of the q-gram Index, how it can be used for searching and how to access the different fibres.
@@ -18,13 +17,13 @@ Duration
   1 h
 
 Prerequisites
-  :ref:`tutorial-sequences`, :ref:`tutorial-iterators`
+  :ref:`tutorial-datastructures-sequences`
 
 The Q-gram Index
-~~~~~~~~~~~~~~~~
+----------------
 
 A q-gram index can be used to efficiently retrieve all occurrences of a certain q-gram in the text.
-It consists of various tables, called fibres (see :ref:`how-to-access-index-fibres`), to retrieve q-gram positions, q-gram counts, etc.
+It consists of various tables, called fibres (see :ref:`how-to-recipes-access-index-fibres`), to retrieve q-gram positions, q-gram counts, etc.
 However, it has no support for suffix tree iterators.
 A q-gram index must be specialized with a :dox:`Shape` type.
 A :dox:`Shape` defines q, the number of characters in a q-gram and possibly gaps between these characters.
@@ -67,23 +66,23 @@ As a remedy, the :dox:`Shape#hashInit` function can be used first and then :dox:
    :fragment: hash_loop2
 
 The q-gram index offers different functions to search or count occurrences of q-grams in an indexed text, see :dox:`IndexQGram#getOccurrences`, :dox:`IndexQGram#countOccurrences`.
-A q-gram index over a :dox:`StringSet` stores occurrence positions in the same way as the ESA index and in the same fibre (FibreSA).
+A q-gram index over a :dox:`StringSet` stores occurrence positions in the same way and in the same fibre (FibreSA) as the ESA index.
 If only the number of q-grams per sequence are needed the QGramCounts and QGramCountsDir fibres can be used.
 They store pairs ``(seqNo, count)``, ``count``>0, for each q-gram that occurs ``counts`` times in sequence number ``seqNo``.
 
 To efficiently retrieve all occurrence positions or all pairs ``(seqNo, count)`` for a given q-gram, these positions or pairs are stored in contiguous blocks (in QGramSA, QGramCounts fibres), called buckets.
 The begin position of bucket i is stored in directory fibres (QGramDir, QGramCountsDir) at position i, the end position is the begin positions of the bucket i+1.
 The default implementation of the :dox:`IndexQGram` index maps q-gram hash values 1-to-1 to bucket numbers.
-For large q or large alphabets the :dox:`OpenAddressingQGramIndex Open Adressing QGram Index` can be more appropriate as its directories are additionally bound by the text length.
+For large q or large alphabets the :dox:`OpenAddressingQGramIndex Open Addressing QGram Index` can be more appropriate as its directories are additionally bound by the text length.
 This is realized by a non-trivial mapping from q-gram hashes to bucket numbers that requires an additional fibre (QGramBucketMap).
 
-For more details on q-gram index fibres see :ref:`how-to-access-index-fibres` or :dox:`QGramIndexFibres QGram Index Fibres`.
+For more details on q-gram index fibres see :ref:`how-to-recipes-access-index-fibres` or :dox:`QGramIndexFibres QGram Index Fibres`.
 
 Example
-~~~~~~~
+-------
 
 We want to construct the q-gram index of the string ``"CATGATTACATA"`` and output the occurrences of the ungapped 3-gram ``"CAT"``.
-As 3 is fixed at compile-time and the shape has no gaps we can use a :dox:`UngappedShape` which is the first template argument of :dox:`IndexQGram`, the second template argument of :dox:`Index`.
+As 3 is fixed at compile-time and the shape has no gaps we can use an :dox:`UngappedShape` which is the first template argument of :dox:`IndexQGram`, the second template argument of :dox:`Index`.
 Next we create the string ``"CATGATTACATA"`` and specialize the first index template argument with the type of this string.
 The string can be given to the index constructor.
 
@@ -101,7 +100,7 @@ Program output:
 .. includefrags:: demos/tutorial/q_gram_index/index_qgram.cpp.stdout
 
 Assignment 1
-""""""""""""
+^^^^^^^^^^^^
 
 .. container:: assignment
 
@@ -132,7 +131,7 @@ Assignment 1
 	.. tip::
 
 	   Instead of ``length(getOccurrences(...))`` we could have used :dox:`IndexQGram#countOccurrences`.
-	   But beware that :dox:`IndexQGram#countOccurrences` requires only the ``QGram_Dir`` fibre, whereas :dox:`IndexQGram#getOccurrences` requires both ``QGram_Dir`` and  ``QGram_SA``, see :ref:`how-to-access-index-fibres`.
+	   But beware that :dox:`IndexQGram#countOccurrences` requires only the ``QGram_Dir`` fibre, whereas :dox:`IndexQGram#getOccurrences` requires both ``QGram_Dir`` and  ``QGram_SA``, see :ref:`how-to-recipes-access-index-fibres`.
 	   Because ``QGram_SA`` can be much more efficiently constructed during the construction of ``QGram_Dir``, ``QGram_Dir`` would be constructed twice.
 
 	Program output:
@@ -140,7 +139,7 @@ Assignment 1
 	.. includefrags:: demos/tutorial/q_gram_index/index_assignment5.cpp.stdout
 
 Assignment 2
-""""""""""""
+^^^^^^^^^^^^
 
 .. container:: assignment
 
@@ -149,7 +148,7 @@ Assignment 2
 
    Objective
      Create and output a matrix M where M(i,j) is the number of common ungapped 5-grams between sequence i and sequence j for 3 random :dox:`Dna` sequences, each not longer than 200 characters.
-     Optional: Run the matrix calculation twice, once for an :dox:`IndexQGram` and once for an :dox:`OpenAddressingQGramIndex Open Adressing QGram Index` and output the directory sizes (QGram_Dir, QGram_CountsDir fibre).
+     Optional: Run the matrix calculation twice, once for an :dox:`IndexQGram` and once for an :dox:`OpenAddressingQGramIndex Open Addressing QGram Index` and output the directory sizes (QGram_Dir, QGram_CountsDir fibre).
 
    Hint
      A common q-gram that occurs :math:`a` times in one and :math:`b` times in the other sequence counts for :math:`\min(a,b)`.
@@ -160,7 +159,7 @@ Assignment 2
         For generating random numbers we use the `std::mt19937 <http://www.cplusplus.com/reference/random/mt19937/>`_.
         The random numbers returned by the random number engine are arbitrary ``unsigned int`` values which we downscale to values between 0 and 3 and convert into :dox:`Dna` characters.
         The 3 generated strings are of random length and appended to a :dox:`StringSet`.
-        The main algorithmus is encapsulated in a template function ``qgramCounting`` to easily switch between the two :dox:`IndexQGram` specializations.
+        The main algorithm is encapsulated in a template function ``qgramCounting`` to easily switch between the two :dox:`IndexQGram` specializations.
 
         .. includefrags:: demos/tutorial/q_gram_index/index_assignment6.cpp
            :fragment: initialization
diff --git a/manual/source/Tutorial/Indices.rst b/manual/source/Tutorial/DataStructures/Indices/StringIndices.rst
similarity index 69%
rename from manual/source/Tutorial/Indices.rst
rename to manual/source/Tutorial/DataStructures/Indices/StringIndices.rst
index 8df927e..cebaca3 100644
--- a/manual/source/Tutorial/Indices.rst
+++ b/manual/source/Tutorial/DataStructures/Indices/StringIndices.rst
@@ -1,12 +1,11 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
+.. _tutorial-datastructures-indices-string-indices:
 
-.. _tutorial-indices:
-
-Indices
--------
+String Indices
+==============
 
 Learning Objective
   You will get an overview of the different kinds of indices in SeqAn and how they are used.
@@ -17,15 +16,15 @@ Difficulty
 Duration
   1 h
 Prerequisites
-  :ref:`tutorial-sequences`
+  :ref:`tutorial-datastructures-sequences`
 
 Indices in SeqAn
-^^^^^^^^^^^^^^^^
+----------------
 
 Indices in SeqAn are substring indices, meaning that they allow efficient pattern queries in strings or sets of strings.
 In contrast to, e.g., online-search algorithms that search through the text in :math:`\mathcal{O}(n)`, substring indices find a pattern in sublinear time :math:`o(n)`.
 
-You can find the following indices in SeqAn.
+You can find the following indices in SeqAn:
 
 :dox:`IndexSa`
   Suffix Array :cite:`Manber1993`
@@ -36,14 +35,12 @@ You can find the following indices in SeqAn.
 :dox:`IndexDfi`
   Deferred Frequency Index :cite:`Weese2008`
 :dox:`IndexQGram`
-  Q-gram index
-:dox:`PizzaChiliIndex`
-  An adapter for the `Pizza & Chili <http://pizzachili.dcc.uchile.cl/>`_ index API
+  Q-gram index (see `here <QgramIndex.html>`_)
 :dox:`FMIndex`
   Full-text minute index :cite:`Ferragina2001`
 
 Index Construction
-^^^^^^^^^^^^^^^^^^
+------------------
 
 We will now show how we can create the different indices in SeqAn before we show how they are used for pattern search.
 
@@ -61,7 +58,7 @@ In contrast, the next code snipped creates a FM index over a set of amino acid s
       :fragment: fm
 
 Assignment 1
-""""""""""""
+^^^^^^^^^^^^
 
 .. container:: assignment
 
@@ -82,50 +79,8 @@ Assignment 1
 
         .. includefrags:: demos/tutorial/indices/assignment_1.cpp
 
-Index Based Pattern Search (Strings)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-SeqAn provides two methods for searching for a pattern in index structures.
-One method uses iterators and is similar to traversing search trees or tries.
-The tutorial :ref:`tutorial-index-iterators` explains this method in more detail.
-In this section you will learn how to find a pattern with the :dox:`Finder` interface.
-
-The :dox:`Finder` is an object that stores all necessary information for searching for a pattern using an index.
-The following line of code shows how the :dox:`Finder` is initialized.
-
-.. includefrags:: demos/tutorial/indices/base.cpp
-      :fragment: finder
-
-After initialization it is possible to use the :dox:`Finder#find` function in order to trigger a search for all occurrences of a given pattern in the underlying :dox:`String` or :dox:`StringSet`.
-In this example, we search for the pattern ``ACGT``:
-
-.. includefrags:: demos/tutorial/indices/base.cpp
-      :fragment: finder2
-
-Calling the function :dox:`Finder#find` invokes the localization of all occurrences of a given pattern.
-It works by modifying pointers of the ``Finder`` to tables of the index.
-For example, the :dox:`Finder` of ``esaIndex`` stores two pointers, pointing to the first and last suffix array entry that stores an occurrence of the pattern.
-
-The return value of the :dox:`Finder#find` function tells us whether or not a given pattern occurs in the text.
-Furthermore, if there are several instances of a pattern, consecutive calls of :dox:`Finder#find` will modify the :dox:`Finder` such that it points to the next occurrence after each call:
-
-.. includefrags:: demos/tutorial/indices/base.cpp
-      :fragment: finder_multiple
-
-The above code is not very useful, since we do not know the locations of the first, second or third pattern occurrence.
-The function :dox:`Finder#position` will help here.
-:dox:`Finder#position` called on a finder returns the location of the ``x``\ th pattern, where ``x`` can be the first, second, or any other occurrence of the pattern.
-
-.. includefrags:: demos/tutorial/indices/base.cpp
-      :fragment: finder_position
-
-.. tip::
-
-   Indices in SeqAn are build on demand.
-   That means that the index tables are not build when the constructor is called, but when we search for a pattern for the first time.
-
 Assignment 2
-""""""""""""
+^^^^^^^^^^^^
 
 .. container:: assignment
 
@@ -144,7 +99,7 @@ Assignment 2
         .. includefrags:: demos/tutorial/indices/assignment_2.cpp
 
 You might have noticed that we only applied the :dox:`FMIndex` and :dox:`IndexEsa` in the examples.
-The reason for this is that even though everything stated so far is true for the other indices as well, :dox:`IndexWotd` and :dox:`IndexDfi` are more usefull when used with iterators as explained in the tutorial :ref:`tutorial-index-iterators` and the :dox:`IndexQGram` uses :dox:`Shape Shapes` which is also explained in another tutorial.
+The reason for this is that even though everything stated so far is true for the other indices as well, :dox:`IndexWotd` and :dox:`IndexDfi` are more useful when used with iterators as explained in the tutorial :ref:`tutorial-datastructures-indices-index-iterators` and the :dox:`IndexQGram` uses :dox:`Shape Shapes` which is also explained in another tutorial.
 
 One last remark is necessary.
 
@@ -154,21 +109,21 @@ One last remark is necessary.
     Otherwise the behavior is undefined.
 
 Handling Multiple Sequences (StringSets)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+----------------------------------------
 
 The previous sections already described how an index of a set of strings can be instantiated.
 A character position of a :dox:`StringSet` can be one of the following:
 
 #. A local position (default), i.e. a :dox:`Pair` (seqNo, seqOfs) where seqNo identifies the string within the :dox:`StringSet` and the seqOfs identifies the position within this string.
 #. A global position, i.e. a single integer value between 0 and the sum of string lengths minus 1.
-   This integer is the position in the gapless concatenation of all strings in the :dox:`StringSet` to a single string.``
+   This integer is the position in the gapless concatenation of all strings in the :dox:`StringSet` to a single string.
 
 For indices, the meta-function :dox:`SAValue` determines, which position type (local or global) will be used for internal index tables (suffix array, q-gram array) and what type of position is returned by functions like :dox:`Finder#position` of a :dox:`Finder`.
 :dox:`SAValue` returns a :dox:`Pair` (local position) by default, but could be specialized to return an integer type (global position) for some applications.
 If you want to write algorithms for both variants you should use the functions :dox:`TextConcept#posLocalize`, :dox:`TextConcept#posGlobalize`, :dox:`TextConcept#getSeqNo`, and :dox:`TextConcept#getSeqOffset`.
 
 Storing and Loading
-^^^^^^^^^^^^^^^^^^^
+-------------------
 
 Storing and loading an index can be done with:
 
@@ -181,7 +136,7 @@ or
       :fragment: open
 
 If you have built your q-gram index with variable shapes (i.e. :dox:`SimpleShape` :dox:`GenericShape`), you have to keep in mind that q or the shape is not stored or loaded.
-This must be done manually directly before or after loading with :dox:`Shape#resize` oder :dox:`Shape#stringToShape`.
+This must be done manually and directly before or after loading with :dox:`Shape#resize` or :dox:`Shape#stringToShape`.
 
 A newly instantiated index is initially empty.
 If you assign a text to be indexed, solely the text fibre is set.
@@ -204,10 +159,10 @@ The first thing after instantiating such an index should be associating it to a
       :fragment: external
 
 The file association implies that any change on the index, e.g. fibre construction, is synchronized to disk.
-When instantiating and associating the index the next time, the index contains its previous state and all yet constructed fibres.
+When instantiating and associating the index the next time, the index contains its previous state and all yet to be constructed fibres.
 
 Reducing the memory consumption
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+-------------------------------
 
 All :dox:`Index Indices` in SeqAn are capable of indexing :dox:`String Strings` or :dox:`StringSet StringSets` of arbitrary sizes, i.e. up to 2^64 characters.
 This always comes at a cost in terms of memory consumption, as any :dox:`Index` has to represent 64 bit positions in the underlying text.
@@ -215,7 +170,7 @@ However, in many practical instances, the text to be indexed is shorter, e.g. it
 In this case, one can reduce the memory consumption of an :dox:`Index` by changing its internal data types, with no drawback concerning running time.
 
 SA Fibre
-""""""""
+^^^^^^^^
 
 All :dox:`Index Indices` in SeqAn internally use the :dox:`Fibre FibreSA`, i.e. some sort of suffix array.
 For :dox:`String Strings`, each suffix array entry consumes 64 bit of memory per default, where 32 bit would be sufficient if the text size is appropriate.
@@ -236,7 +191,7 @@ So if you only have a few strings you could save even more memory like this.
       :fragment: SAValue3
 
 FMIndex Fibres
-""""""""""""""
+^^^^^^^^^^^^^^
 
 The size of a generalized :dox:`FMIndex` depends also on the total number of characters in a :dox:`StringSet` (see :dox:`StringSet#lengthSum`).
 This trait can be configured via the :dox:`FMIndexConfig` object.
@@ -245,6 +200,6 @@ This trait can be configured via the :dox:`FMIndexConfig` object.
       :fragment: config
 
 Other Index Fibres
-""""""""""""""""""
+^^^^^^^^^^^^^^^^^^
 
-See :ref:`how-to-access-index-fibres` for more information.
+See :ref:`how-to-recipes-access-index-fibres` for more information.
diff --git a/manual/source/Tutorial/DataStructures/Indices/index.rst b/manual/source/Tutorial/DataStructures/Indices/index.rst
new file mode 100644
index 0000000..08c0a31
--- /dev/null
+++ b/manual/source/Tutorial/DataStructures/Indices/index.rst
@@ -0,0 +1,76 @@
+.. We create this roles for putting the "Introduction: etc. headings
+    on this page without them displaying in the ToC.  This would break
+    rendering the ToC correctly on readthedocs style.  The rubric
+    headings are formatted using CSS.
+
+.. role:: rubric-heading1
+    :class: rubric-heading1
+.. role:: rubric-heading2
+    :class: rubric-heading2
+
+.. _tutorial-datastructures-indices:
+
+Indices
+=======
+
+.. toctree::
+    :hidden:
+    :titlesonly:
+
+    QgramIndex
+    StringIndices
+    IndexIterators
+
+Indices in SeqAn allow efficient pattern queries in strings or sets of
+strings. In contrast to, e.g., online-search algorithms that search
+through the text in :math:`\mathcal{O}(n)`, substring indices find a
+pattern in sublinear time :math:`o(n)`.
+
+Indices store additional data structures that allow searching the text
+using an iterator. Using the iterator can be thought of as traversing
+a suffix tree. The following section gives you an introduction how
+the suffix tree is built.
+
+.. tip::
+
+   The :dox:`Finder` interface allows searching indices without using the iterator.
+   For more information check out the tutorial on :ref:`tutorial-algorithms-pattern-matching-indexed`.
+
+Suffix Trees
+------------
+
+We consider an alphabet Σ and a sentinel character $ that is smaller
+than every character of Σ. A suffix tree of a given non-empty string s
+over Σ is a directed tree whose edges are labeled with non-empty
+substrings of s$ with the following properties:
+
+1. Each outgoing edge begins with a different letter and the outdegree
+of an internal node is greater than 1.
+2. Each suffix of s$ is the concatenation of edges from the root to a leaf node.
+3. Each path from the root to a leaf node is a suffix of s$.
+
+The following figure shows the suffix tree of the string s="mississippi" (suffix nodes are shaded):
+
+
+.. figure:: streeSentinel.png
+    :align: center
+
+**Figure 1:** Suffix tree of "mississippi"
+
+Many suffix tree construction algorithms expect $ to be part of the
+string alphabet which is undesirable for small bit-compressible
+alphabets (e.g. DNA). In SeqAn there is no need to introduce a $. We
+relax suffix tree criterion 2. and consider the relaxed suffix tree that
+arises from the suffix tree of s by removing the $ character and all
+empty edges. In the following, we only consider relaxed suffix trees and
+simply call them suffix trees. In that tree a suffix can end in an inner
+node as you can see in the next figure (suffix "i"):
+
+.. figure:: streeNoSentinel.png
+    :align: center
+
+**Figure 2:** Relaxed suffix tree of "mississippi"
+
+.. raw:: mediawiki
+
+    {{TracNotice|{{PAGENAME}}}}
diff --git a/manual/source/Glossary/streeNoSentinel.png b/manual/source/Tutorial/DataStructures/Indices/streeNoSentinel.png
similarity index 100%
rename from manual/source/Glossary/streeNoSentinel.png
rename to manual/source/Tutorial/DataStructures/Indices/streeNoSentinel.png
diff --git a/manual/source/Tutorial/streePostorder.png b/manual/source/Tutorial/DataStructures/Indices/streePostorder.png
similarity index 100%
rename from manual/source/Tutorial/streePostorder.png
rename to manual/source/Tutorial/DataStructures/Indices/streePostorder.png
diff --git a/manual/source/Tutorial/streePreorder.png b/manual/source/Tutorial/DataStructures/Indices/streePreorder.png
similarity index 100%
rename from manual/source/Tutorial/streePreorder.png
rename to manual/source/Tutorial/DataStructures/Indices/streePreorder.png
diff --git a/manual/source/Glossary/streeSentinel.png b/manual/source/Tutorial/DataStructures/Indices/streeSentinel.png
similarity index 100%
rename from manual/source/Glossary/streeSentinel.png
rename to manual/source/Tutorial/DataStructures/Indices/streeSentinel.png
diff --git a/manual/source/Tutorial/DataStructures/JournalStringTree.rst b/manual/source/Tutorial/DataStructures/JournalStringTree.rst
new file mode 100644
index 0000000..ab75524
--- /dev/null
+++ b/manual/source/Tutorial/DataStructures/JournalStringTree.rst
@@ -0,0 +1,233 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _tutorial-datastructures-journaledstringtree:
+
+Journaled String Tree
+=====================
+
+Learning Objective
+  This tutorial introduces you to the new data structure Journaled String Tree.
+  You will learn how to use this data structure and how to exploit it for an efficient analysis while searching multiple sequences simultaneously.
+
+Difficulty
+  Average
+
+Duration
+  45 min
+
+Prerequisites
+  :ref:`tutorial-datastructures-sequences`, :ref:`tutorial-datastructures-sequences-string-sets`
+
+A typical task in bioinformatics is to find patterns in biological sequences e.g. transcription factors, or to examine different biological traits and the effects of modifications on such traits.
+With the current advances in sequencing technologies, sequences of whole populations have been made available.
+But the time for searching in all these sequences is proportional to the number of sequences searched.
+That's why it is important to find novel strategies to cope with the deluge of sequencing data.
+Since, many biological problems often involve the analysis of sequences of the same species, one effective strategy would be to exploit the similarities of such sequences.
+
+For this special purpose we will introduce you to two data structures that are designed to improve these algorithmic tasks.
+The first one is the :dox:`JournaledString` and the second is the :dox:`JournaledStringTree`.
+
+Journaled String
+----------------
+
+The :dox:`JournaledString` data structure behaves like a normal :dox:`String` in SeqAn, except that it is composed of two data structures.
+
+#. The first data structure is a :dox:`Holder` which stores a sequence.
+#. The second data structure stores modifications that are made to this particular sequence using a **journal** (see `Journaling Filesystems <http://en.wikipedia.org/wiki/Journaling_file_system>`_ for more information).
+   This journal contains a list of deletions and insertions.
+   The inserted characters are stored in an additional **insertion buffer**.
+
+The advantage of this data structure lies in representing a String as a "patch" to another String.
+The journaled data structure can be modified without loosing the original context.
+We want to show you how to work with these data structures so you can build your own algorithms based on this.
+
+First, we show you how to work with the Journaled String so you can learn the basic principles.
+To get access to the Journaled String implementation you have to include the ``<seqan/sequence_journaled.h>`` header file.
+Note that you will need the ``<seqan/stream.h>`` too in order to print the sequences.
+
+.. includefrags:: demos/tutorial/journaled_set/example_journal_string_basic.cpp
+   :fragment: main
+
+In the next step we define the Journaled String type.
+A Journaled String is a specialization of the String class and is defined as ``String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> >``.
+The specialization takes two parameters: (1) ``TValue`` defines the alphabet type used for the Journaled String and (2) ``Journaled<>`` selects the Journaled String specialization of the String class.
+
+``Journaled<>`` is further specialized with
+
+* ``THostSpec`` selects the specialization of the underlying host sequence (``Alloc<>`` for [dox:AllocString Alloc String),
+* ``TJournaleSpec`` selects the used implementation to manage the journaled differences (here: ``SortedArray``), and
+* ``TBufferSpec`` selects the used specialization for the internally managed insertion buffer (here: ``Alloc<>`` as well).
+
+In our scenario we use a ``char`` alphabet and [dox:AllocString Alloc String for the host string and the insertion buffer.
+Additionally, we use a ``Sorted Array`` as the model to manage the recorded differences.
+
+We use the metafunction :dox:`HostedConcept#Host` to get the type of the underlying host string used for the Journaled String.
+
+.. includefrags:: demos/tutorial/journaled_set/example_journal_string_basic.cpp
+   :fragment: typedef
+
+Now we can define the variables holding data structures.
+First, we construct our host sequence and after that we construct the Journaled String.
+Then, we set the host sequence using the function :dox:`JournaledString#setHost`.
+Afterwards, we examine the data structure in more detail and print the host sequence the constructed journaled sequence and the nodes of it.
+
+.. includefrags:: demos/tutorial/journaled_set/example_journal_string_basic.cpp
+   :fragment: init
+
+.. tip::
+
+    The Journal
+
+    A node in the Journaled String represents either a part of the host sequence or a part of the insertion buffer.
+    The type of a node is distinguished by the member variable **segmentSource** and can be of value ``SOURCE_ORIGINAL`` to refere to a part in the host or ``SOURCE_PATCH`` to refere to a part in the insertion buffer.
+    A node further consists of three variables which specify the **virtual position**, the **physical position** and the **length** of this part.
+    The **virtual position** gives the relative position of the Journaled String after all modifications before this position have been "virtually" applied.
+    The **physical position** gives the absolute position where this part of the journal maps to either the host sequence or the insertion buffer.
+
+This is followed by modifying our Journaled String.
+We insert the string ``"modified"`` at position ``7`` and delete the suffix ``"sequence"`` at position ``19``.
+Note that position ``19`` refers to the string after the insertion of ``"modified"`` at position ``7``.
+Again we print the host, the journaled sequence and the nodes that represent the modifications to see how our changes affect the host and the journaled sequence.
+
+.. includefrags:: demos/tutorial/journaled_set/example_journal_string_basic.cpp
+   :fragment: modification
+
+All of this is followed by calling :dox:`JournaledString#flatten` on our journeld string.
+This call applies all journaled changes to the host sequence.
+Again we print the sequences to see the effects.
+
+.. includefrags:: demos/tutorial/journaled_set/example_journal_string_basic.cpp
+   :fragment: flatten
+
+Here is the output of our small program.
+
+.. includefrags:: demos/tutorial/journaled_set/example_journal_string_basic.cpp.stdout
+
+
+.. important::
+
+   Be careful when using the :dox:`JournaledString#flatten` function as it modifies the underlying host sequence.
+   This might affect other journaled sequences that share the same host sequence.
+   This becomes important especially when working with Journaled Sets where a whole set of sequences is journaled to the same reference.
+
+Simultaneously Searching Multiple Sequences
+-------------------------------------------
+
+Now, we come to a simple example to demonstrate the use of the :dox:`JournaledStringTree Journaled String Tree` (JST).
+As you could imagine, the JST internally uses a set of :dox:`JournaledString Journaled Strings` to buffer the sequences, while requiring only a low memory footprint.
+
+In this article, we are going to create a small JST, which we will use to search for a pattern using the :dox:`HorspoolPattern Horspool` algorithm.
+
+Let's just start with the include headers.
+In order to make the JST implementation visible to our source code we need to include the header ``include <seqan/journaled_string_tree.h>``.
+
+.. includefrags:: demos/tutorial/journaled_string_tree/journaled_string_tree_base.cpp
+    :fragment: include
+
+In the next step, we are going to define the type of the JST.
+
+.. includefrags:: demos/tutorial/journaled_string_tree/journaled_string_tree_base.cpp
+    :fragment: typedef
+
+The only information that is required is the type of the reference sequence used for the underlying sequence.
+We also defined the pattern type and  a traverser type, which we will explain soon.
+
+Now, we are ready to initialize the JST.
+To construct a JST, we need to know the reference sequence and how many sequences should be represented by the JST.
+In our case we assume 10 sequences.
+The JST supports insertion or deletion of :dox:`DeltaTypeTags delta events`.
+A delta event is a tuple consisting of four parameters: The reference position, the value, the coverage and the delta type.
+The reference position determines the position within the reference sequence, where this event occurs.
+The value represents the actual modification applied to the sequences, that are determined by the coverage.
+The type of the value depends on the delta type.
+
+.. tip::
+    The internal types, e.g. the types of the different delta events, of the :dox:`JournaledStringTree JST` can be overloaded with a second optional traits object.
+    If no trait object is given :dox:`DefaultJstConfig` is taken as default.
+    See the API documentation for more information.
+
+The following listing creates a JST and inserts some delta events into the object:
+
+.. includefrags:: demos/tutorial/journaled_string_tree/journaled_string_tree_base.cpp
+    :fragment: init
+
+After creating the JST, we can now prepare the search.
+To do so, we first define a needle that we want to search.
+Second, we need to instantiate a traverser object.
+A traverser represents the current state of the traversal over the JST.
+It is comparable to an iterator, but it is not lightweight, as it uses a state stack to implement the traversal over the JST.
+The traverser is initialized with two arguments: The instance of the JST and the context length, which is in our case the length of the needle.
+
+Here is the listing:
+
+.. includefrags:: demos/tutorial/journaled_string_tree/journaled_string_tree_base.cpp
+    :fragment: prepare_search
+
+In line 4 and 5 in the listing above we initialize the pattern with the needle and then create an ``JstExtension`` object.
+This ``JstExtension`` is needed to extend the :dox:`Pattern Pattern class` of SeqAn with some auxiliary functions necessary for the JST based search.
+The only thing required, is that ``pat`` is fully initialized when passing it to ``ext``.
+
+The last preparation step we need before invoking the search algorithm is to create a functor that is called, whenever the search algorithm finds a match.
+In our scenario we simply want to print the sequences and the positions where the hit occurs.
+Therefor we create a simple ``MatchPrinter`` functor:
+
+.. includefrags:: demos/tutorial/journaled_string_tree/journaled_string_tree_base.cpp
+    :fragment: match_printer
+
+This match printer, holds a reference to the actual traverser.
+So we can call the ``position`` function on the traverser, when the function-call-operator is invoked by the search algorithm.
+
+Now we can invoke the search using the ``find`` interface:
+
+.. includefrags:: demos/tutorial/journaled_string_tree/journaled_string_tree_base.cpp
+    :fragment: search
+
+And finally the output:
+
+.. includefrags:: demos/tutorial/journaled_string_tree/journaled_string_tree_base.cpp.stdout
+
+The following list gives an overview of the available search algorithms:
+
+Horspool
+  Exact online search using :dox:`HorspoolPattern` as base pattern class.
+
+ShiftAnd
+  Exact online search using :dox:`ShiftAndPattern` as base pattern class.
+
+ShiftOr
+  Exact online search using :dox:`ShiftOrPattern` as base pattern class.
+
+MyersUkkonen
+  Approximate online search using :dox:`MyersUkkonen` as base pattern class.
+
+Assignment 1
+^^^^^^^^^^^^
+
+.. container:: assignment
+
+   Type
+     Review
+
+   Objective
+
+     Use the code from above and find all patterns of the needle ``CCTCCA`` with up to 2 errors.
+
+   Hints
+     .. container:: foldable
+
+        When searching with errors, the context size needs to be updated accordingly.
+
+   Solution
+     .. container:: foldable
+
+        Since we are trying to find the needle approximatively, we need to use the ``Myers' bitvector`` algorithm.
+        Here is the entire solution:
+
+        .. includefrags:: demos/tutorial/journaled_string_tree/journaled_string_tree_base_assignment1.cpp
+
+        And here is the output:
+
+        .. includefrags:: demos/tutorial/journaled_string_tree/journaled_string_tree_base_assignment1.cpp.stdout
+
diff --git a/manual/source/Tutorial/Modifiers.rst b/manual/source/Tutorial/DataStructures/Modifiers.rst
similarity index 97%
rename from manual/source/Tutorial/Modifiers.rst
rename to manual/source/Tutorial/DataStructures/Modifiers.rst
index 861c17f..ca4c024 100644
--- a/manual/source/Tutorial/Modifiers.rst
+++ b/manual/source/Tutorial/DataStructures/Modifiers.rst
@@ -1,12 +1,11 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-modifiers:
+.. _tutorial-datastructures-modifiers:
 
 Modifiers
----------
+=========
 
 Learning Objective
   In this tutorial you will learn how to modify the elements of a container without copying them using SeqAn modifiers.
@@ -19,10 +18,10 @@ Duration
   20 min
 
 Prerequisites
-  :ref:`tutorial-first-steps-in-seqan`, :ref:`tutorial-sequences`
+  :ref:`tutorial-getting-started-first-steps-in-seqan`, :ref:`tutorial-datastructures-sequences`
 
 Overview
-~~~~~~~~
+--------
 
 Modifiers give a different view to other classes.
 They can be used to change the elements of a container without touching them.
@@ -35,9 +34,9 @@ Modifiers implement a certain concept (e.g. :dox:`ContainerConcept`, :dox:`Rando
 The mirror modifier is already part of SeqAn and implements the class interface of :dox:`String` and can be used in every algorithm that works on strings.
 
 The Modified String
-~~~~~~~~~~~~~~~~~~~
+-------------------
 
-The :dox:`ModifiedString ModidiedString` is a modifier that implements the :dox:`String` interface and thus can be used like a :dox:`String`.
+The :dox:`ModifiedString ModifiedString` is a modifier that implements the :dox:`String` interface and thus can be used like a :dox:`String`.
 It has two template parameters.
 The first one specifies a sequence type (e.g. :dox:`String`, :dox:`Segment`, ...) and the second one specifies the modifiers behavior.
 That can be :dox:`ModReverseString` for mirroring a string left to right or :dox:`ModViewModifiedString` for applying a function to every single character (like 'C'->'G', 'A'->'T', ...).
@@ -172,7 +171,7 @@ For some commonly used modifiers you can use the following shortcuts:
 +-----------------------------------+---------------------------------------------------------------------------------+
 
 The Modified Iterator
-~~~~~~~~~~~~~~~~~~~~~
+---------------------
 
 We have seen how a :dox:`ModifiedString` can be used to modify strings without touching or copying original data.
 The same can be done with iterators.
@@ -182,7 +181,7 @@ The main work is done in the :dox:`ModifiedIterator`, whereas the :dox:`Modified
 Normally, you are going to use the :dox:`ModifiedString` and maybe the result of its :dox:`ContainerConcept#Iterator` meta-function instead of a :dox:`ModifiedIterator` directly.
 
 Nested Modifiers
-~~~~~~~~~~~~~~~~
+----------------
 
 As modifiers implement a certain concept and depend on classes of this concept, two modifiers can be chained to create a new modifier.
 We have seen how the :dox:`ModifiedString` specialized with :dox:`ModReverseString` and :dox:`ModViewModifiedString` can be used.
diff --git a/manual/source/Tutorial/Seeds.png b/manual/source/Tutorial/DataStructures/Seeds.png
similarity index 100%
rename from manual/source/Tutorial/Seeds.png
rename to manual/source/Tutorial/DataStructures/Seeds.png
diff --git a/manual/source/Tutorial/DataStructures/Seeds.rst b/manual/source/Tutorial/DataStructures/Seeds.rst
new file mode 100644
index 0000000..28b9a02
--- /dev/null
+++ b/manual/source/Tutorial/DataStructures/Seeds.rst
@@ -0,0 +1,69 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _tutorial-datastructures-seeds:
+
+Seeds
+=====
+
+Learning Objective
+  In this tutorial, you will learn about the seeds-related SeqAn class.
+
+Difficulty
+  Basic 
+
+Duration
+  15 min 
+
+Prerequisites
+  :ref:`tutorial-datastructures-sequences`
+
+Many efficient heuristics to find high scoring, but inexact, local alignments between two sequences start with small exact (or at least highly similar) segments, so called **seeds** and extend or combine them to get larger highly similar regions. Probably the most prominent tool of this kind is BLAST :cite:`Altschul1990`, but there are many other examples like FASTA :cite:`Pearson1990` or LAGAN :cite:`Brudno2003`. You will learn seed-and-extend and many applications including local and g [...]
+
+SeqAn's header file for all data structures and functions related to two-dimensional seeds is ``<seqan/seeds.h>``.
+
+The Seed Class
+--------------
+
+.. image:: Seeds.png
+   :align: right
+   :width: 300px
+
+The :dox:`Seed` class allows to store seeds. Seeds have a begin and end position in each sequence. Often, two or more close seeds are combined into a larger seed, possibly causing a shift in horizontal or vertical direction between the begin position of the upper left seed and the end position of the lower right seed. For this reason, the :dox:`Seed` class also stores an upper and a lower diagonal to reflect the expansion between those shifted seeds.
+
+The image to the right shows an example where three smaller seeds (black diagonals) were combined (or "chained locally") into one larger seed (green area).
+
+The :dox:`SimpleSeed Simple Seed` specialization only stores the begin and end positions of the seed (left-uppermost and right-lowermost corners of green surface) in both sequences and the upper and lower diagonal.
+The initial diagonals are not stored. The :dox:`ChainedSeed` specialization additionally stores these information.
+In most cases, the :dox:`SimpleSeed Simple Seed` class is sufficient since the best alignment around the seeds has to be determined using a banded alignment algorithm of the seed infixes anyway.
+
+You can get/set the begin and end position in the horizontal/vertical sequences using the functions :dox:`Seed#beginPositionH`, :dox:`Seed#beginPositionV`, :dox:`Seed#setBeginPositionH`, and :dox:`Seed#setBeginPositionV`.
+The band information can be queried and updated using :dox:`Seed#lowerDiagonal`, :dox:`Seed#upperDiagonal`, :dox:`Seed#setLowerDiagonal`, and :dox:`Seed#setUpperDiagonal`.
+Note, we use the capital letters 'H' and 'V' to indicate horizontal direction and vertical direction, respectively, while the **subject sequence** is always considered as the **horizontal sequence** and the **query** as the **vertical sequence** in the context of sequence alignments.
+
+The following program gives an example of creating seeds as well as setting and reading properties.
+
+.. includefrags:: demos/tutorial/seeds/example1.cpp
+   :fragment: example
+
+The output to the console is as follows.
+
+.. includefrags:: demos/tutorial/seeds/example1.cpp.stdout
+
+Assignment 1
+^^^^^^^^^^^^
+
+.. container:: assignment
+
+   Type
+     Review
+
+   Objective
+     Extend the program above such that ``seed1`` is updated from ``seed2`` and all members (begin positions, end positions, diagonals) are equal to the corresponding member of ``seed`` times two.
+     For example, the lower diagonal of ``seed2`` should be ``2 * lowerDiagonal(seed1)``.
+
+   Solution
+     .. container:: foldable
+
+        .. includefrags:: demos/tutorial/seeds/solution1.cpp
diff --git a/manual/source/Tutorial/Seeds.svg b/manual/source/Tutorial/DataStructures/Seeds.svg
similarity index 100%
rename from manual/source/Tutorial/Seeds.svg
rename to manual/source/Tutorial/DataStructures/Seeds.svg
diff --git a/manual/source/Tutorial/Alphabets.rst b/manual/source/Tutorial/DataStructures/Sequence/Alphabets.rst
similarity index 96%
rename from manual/source/Tutorial/Alphabets.rst
rename to manual/source/Tutorial/DataStructures/Sequence/Alphabets.rst
index dd773b9..1a8b1ee 100644
--- a/manual/source/Tutorial/Alphabets.rst
+++ b/manual/source/Tutorial/DataStructures/Sequence/Alphabets.rst
@@ -1,12 +1,11 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-alphabets:
+.. _tutorial-datastructures-sequences-alphabets:
 
 Alphabets
----------
+=========
 
 Learning Objective
   You will learn the details about the alphabets in SeqAn.
@@ -18,15 +17,15 @@ Duration
   15 min
 
 Prerequisites
-  :ref:`tutorial-first-steps-in-seqan`
+  :ref:`tutorial-getting-started-first-steps-in-seqan`
 
 This tutorial will describe the different alphabets used in SeqAn, or in other words, you will learn about the contained types of a SeqAn :dox:`String`.
 To continue with the other tutorials, it would be enough to know, that in SeqAn several standard alphabets are already predefined, e.g. :dox:`Dna`, :dox:`Dna5`, :dox:`Rna`, :dox:`Rna5`, :dox:`Iupac`, :dox:`AminoAcid`.
 
 Types
-~~~~~
+-----
 
-Any type that provides a default constructor, a copy constructor and an assignment operator can be used as the alphabet / contained type of a :dox:`String` (see also the tutorial :ref:`tutorial-sequences`).
+Any type that provides a default constructor, a copy constructor and an assignment operator can be used as the alphabet / contained type of a :dox:`String` (see also the tutorial :ref:`tutorial-datastructures-sequences`).
 This includes the C++ `POD types <http://www.parashift.com/c++-faq-lite/intrinsic-types.html#faq-26.7>`_, e.g. ``char``, ``int``, ``double`` etc.
 In addition you can use more complex types like :dox:`String` as the contained type of strings, e.g. ``String<String<char> >``.
 
@@ -56,7 +55,7 @@ Each of them is a specialization of the class :dox:`SimpleType`.
 +------------------+-------------------------------------------------------------+
 
 Functionality
-~~~~~~~~~~~~~
+-------------
 
 In SeqAn, alphabets are value types that can take a limited number of values and which hence can be mapped to a range of natural numbers.
 We can retrieve the number of different values of an alphabet, the alphabet size, by the metafunction :dox:`FiniteOrderedAlphabetConcept#ValueSize`.
diff --git a/manual/source/Tutorial/StringSets.rst b/manual/source/Tutorial/DataStructures/Sequence/StringSets.rst
similarity index 86%
rename from manual/source/Tutorial/StringSets.rst
rename to manual/source/Tutorial/DataStructures/Sequence/StringSets.rst
index 40597d8..32a50bb 100644
--- a/manual/source/Tutorial/StringSets.rst
+++ b/manual/source/Tutorial/DataStructures/Sequence/StringSets.rst
@@ -1,12 +1,11 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-string-sets:
+.. _tutorial-datastructures-sequences-string-sets:
 
 String Sets
------------
+===========
 
 Learning Objective
   You will learn the advantages of StringSets and how to work with them.
@@ -18,13 +17,13 @@ Duration
   15 min
 
 Prerequisites
-  :ref:`tutorial-sequences`
+  :ref:`tutorial-datastructures-sequences`
 
 A set of sequences can either be stored in a sequence of sequences, for example in a ``String<String<char> >``, or in a :dox:`StringSet`.
 This tutorial will introduce you to the SeqAn class :dox:`StringSet`, its background and how to use it.
 
 Background
-~~~~~~~~~~
+----------
 
 One advantage of using :dox:`StringSet` is that it supports the function :dox:`StringSet#concat` that returns a *concatenator* of all sequences in the string set.
 A *concatenator* is an object that represents the concatenation of a set of strings.
@@ -36,7 +35,7 @@ There are two kinds of :dox:`StringSet` specializations in SeqAn: :dox:`OwnerStr
 .. includefrags:: demos/tutorial/string_sets/base.cpp
       :fragment: example_sets
 
-The specialization :dox:`ConcatDirectStringSet ConcatDirecet StringSet` already stores the sequences in a concatenation.
+The specialization :dox:`ConcatDirectStringSet ConcatDirect StringSet` already stores the sequences in a concatenation.
 The concatenators for all other specializations of :dox:`StringSet` are **virtual** sequences, that means their interface **simulates** a concatenation of the sequences, but they do not literally concatenate the sequences into a single sequence.
 Hence, the sequences do not need to be copied when a concatenator is created.
 
@@ -53,6 +52,13 @@ Specialization ``Owner<ConcatDirect>``
   The string set also stores lengths and starting positions of the strings.
   Inserting new strings into the set or removing strings from the set is more expensive than for the default :dox:`OwnerStringSet` specialization, since this involves moving all subsequent sequences in memory.
 
+Specialization ``Owner<JournaledSet>``
+  The sequences are stored as :dox:`JournaledString Journaled Strings` to a common reference sequence,
+  that is also stored within the container.
+  When adding a new String to the set, it needs to be joined to this set of sequences which are all based on the
+  common reference sequence.
+  This way one can hold a large collection of similar sequences efficiently in memory.
+
 Specialization ``Dependent<Tight>``
   This specialization stores sequence pointers consecutively in an array.
   Another array stores an id value for each sequence.
@@ -71,7 +77,7 @@ Specialization ``Dependent<Generous>``
   This could be inefficient for string sets that store a small subset out of a large number of sequences.
 
 Building String Sets
-~~~~~~~~~~~~~~~~~~~~
+--------------------
 
 Use the function :dox:`StringConcept#appendValue` to append strings to string sets.
 
@@ -79,12 +85,12 @@ Use the function :dox:`StringConcept#appendValue` to append strings to string se
       :fragment: appendValue
 
 
-Functionality
-~~~~~~~~~~~~~
+Working with StringSets
+-----------------------
 
 This section will give you a short overview of the functionality of the class :dox:`StringSet`.
 
-There are two ways for accessing the sequences in a string set: (1) the function :dox:`RandomAccessContainerConcept#value` returns a reference to the sequence at a specific *position* within the sequence of sequences, and (2) :dox:`StringSet#valueById` accesses a sequence given its *id*.
+There are two ways for accessing the sequences in a string set: (1) the function :dox:`RandomAccessContainerConcept::operator[]` returns a reference to the sequence at a specific *position* within the sequence of sequences, and (2) :dox:`StringSet#valueById` accesses a sequence given its *id*.
 We can retrieve the *id* of a sequence in a :dox:`StringSet` with the function :dox:`StringSet#positionToId`.
 
 .. includefrags:: demos/tutorial/string_sets/example_functionality.cpp
@@ -112,10 +118,9 @@ With the function :dox:`StringSet#positionToId` we can show that, in this case,
       :fragment: difference
 
 Iterating over String Sets
-~~~~~~~~~~~~~~~~~~~~~~~~~~
+--------------------------
 
 As well as for other containers, SeqAn has implemented iterators for :dox:`StringSet StringSets`.
-The generall usage of iterators is described in the tutorial :ref:`tutorial-iterators`.
 The following example illustrates, how to iterate over the :dox:`StringSet`.
 
 .. includefrags:: demos/tutorial/string_sets/example_iterators.cpp
@@ -182,27 +187,3 @@ Assignment 2
      .. container:: foldable
 
         .. includefrags:: demos/tutorial/string_sets/assignment_2_solution.cpp
-
-Workshop Assignment 4
-^^^^^^^^^^^^^^^^^^^^^
-
-.. container:: assignment
-
-   Type
-     Review
-
-   Objective
-     In this assignment, we pick up the example from the workshop assignments from the sequences and iterators tutorials.
-     Take the last solution and change the code to build and use StringSets.
-
-     #. Build a StringSet of readList. Reuse the Rooted iterator above.
-     #. Iterate over the StringSet and print out the values.
-
-     .. includefrags:: demos/tutorial/string_sets/assignment_3_workshop_solution.cpp
-
-   Solution
-     Click **more...** to see the solution.
-
-     .. container:: foldable
-
-        .. includefrags:: demos/tutorial/string_sets/assignment_4_workshop_solution.cpp
diff --git a/manual/source/Tutorial/Sequences.rst b/manual/source/Tutorial/DataStructures/Sequence/StringsAndSegments.rst
similarity index 52%
rename from manual/source/Tutorial/Sequences.rst
rename to manual/source/Tutorial/DataStructures/Sequence/StringsAndSegments.rst
index ef95120..c960684 100644
--- a/manual/source/Tutorial/Sequences.rst
+++ b/manual/source/Tutorial/DataStructures/Sequence/StringsAndSegments.rst
@@ -1,16 +1,15 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
+.. _tutorial-datastructures-sequences-strings-and-segments:
 
-.. _tutorial-sequences:
-
-Sequences
----------
+Strings and Segments
+====================
 
 Learning Objective
   You will learn about the SeqAn sequence concept and its main class :dox:`String` as well as the class :dox:`Segment`.
-  After completing this tutorial, you will be able to use important functionalities of sequences in SeqAn and you will be ready to continue with the more specific tutorials, e.g. :ref:`tutorial-iterators`, :ref:`tutorial-alignment-representation`, or :ref:`tutorial-pairwise-sequence-alignment`.
+  After completing this tutorial, you will be able to use important functionalities of sequences in SeqAn and you will be ready to continue with the more specific tutorials, e.g. :ref:`tutorial-datastructures-alignment`, or :ref:`tutorial-algorithms-alignment-pairwise-sequence-alignment`.
 
 Difficulty
   Very basic
@@ -19,7 +18,7 @@ Duration
   45 min
 
 Prerequisites
-  Basic C or C++ knowledge, the :ref:`tutorial-first-steps-in-seqan` tutorial helps.
+  Basic C or C++ knowledge, the :ref:`tutorial-getting-started-first-steps-in-seqan` tutorial helps.
 
 Sequences are the core concept of SeqAn.
 A sequence is a container that stores an ordered list of values.
@@ -34,22 +33,27 @@ Thus those built-in types can be handled in a similar way as SeqAn strings, for
 This tutorial will deal with the SeqAn sequence classes :dox:`String` and :dox:`Segment`.
 
 Strings
-~~~~~~~
+-------
 
 In this section, we will have a detailed look at the SeqAn class :dox:`String`.
 You will learn how to build and expand strings as well as how to compare and convert them.
 
-Building Strings
+Defining Strings
 ^^^^^^^^^^^^^^^^
 
-Let's first have a look at an example on how to define a :dox:`String`.
+Let's first have a look at a simple example on how to define a :dox:`String`.
 The type of the contained value is specified by the first template argument, e.g. ``char`` or ``int``.
 
 .. includefrags:: demos/tutorial/sequences/base.cpp
     :fragment: string_example
 
+To fill the string with contents, we can simply assign a string literal to the created variable:
+
+.. includefrags:: demos/tutorial/sequences/base.cpp
+    :fragment: simple_string_construction
+
 Any type that provides a default constructor, a copy constructor and an assignment operator can be used as the alphabet / contained type of a :dox:`String`.
-This includes the C++ `POD types <http://www.parashift.com/c++-faq-lite/intrinsic-types.html#faq-26.7>`_, e.g. ``char``, ``int``, ``double`` etc., but you can use more complex types, e.g. :dox:`String Strings`, too.
+This includes the C++ `POD types <https://isocpp.org/wiki/faq/intrinsic-types#pod-types>`_, e.g. ``char``, ``int``, ``double`` etc., or even more complex types complex types, such as :dox:`String Strings`.
 
 .. includefrags:: demos/tutorial/sequences/base.cpp
     :fragment: string_of_strings_example
@@ -58,11 +62,12 @@ This includes the C++ `POD types <http://www.parashift.com/c++-faq-lite/intrinsi
 
    Nested Sequences (aka "Strings of Strings")
 
-   A set of sequences can either be stored in a sequence of sequences, for example in a ``String< String<char> >``, or in :dox:`StringSet`.
-   See the tutorial :ref:`tutorial-string-sets` for more information about the class :dox:`StringSet`.
+   A collection of sequences can either be stored in a sequence of sequences, for example in a ``String< String<char> >``, or in a :dox:`StringSet`.
+   The latter one allows for more auxiliary functionalities to improve the efficiency of working with large sequence collections.
+   You can learn more about it in the tutorial :ref:`tutorial-datastructures-sequences-string-sets`.
 
 SeqAn also provides the following types that are useful in bioinformatics: :dox:`AminoAcid`, :dox:`Dna`, :dox:`Dna5`, :dox:`DnaQ`, :dox:`Dna5Q`, :dox:`Finite`, :dox:`Iupac`, :dox:`Rna`, :dox:`Rna5`.
-You can find detailed information in the tutorial :ref:`tutorial-alphabets`.
+You can find detailed information in the tutorial :ref:`tutorial-datastructures-sequences-alphabets`.
 
 .. includefrags:: demos/tutorial/sequences/base.cpp
     :fragment: special_types_example
@@ -72,37 +77,11 @@ For commonly used string parameterizations, SeqAn has a range of shortcuts imple
 .. includefrags:: demos/tutorial/sequences/base.cpp
     :fragment: shortcuts_example
 
-The user can specify the kind of string that should be used in an optional second template argument of :dox:`String`.
-This is also known as selecting the specialization of a class in SeqAn.
-The default string implementation is :dox:`AllocString Alloc String`, which the best choice for most cases.
-
-.. includefrags:: demos/tutorial/sequences/base.cpp
-    :fragment: specification_example
-
-For some scenarios though, there might be other types more suitable.
-One such example is when processing extremely large strings that are much larger than the available main memory.
-In this case, using :dox:`ExternalString External Strings` is a good choice.
-
-.. includefrags:: demos/tutorial/sequences/base.cpp
-    :fragment: specification2_example
-
-More details about the different specializations you can find in the tutorial :ref:`tutorial-sequences-in-depth`.
-
-.. tip::
-
-   String Simplify Memory Management
-
-   One advantage of using Strings is that the user does not need to reserve memory manually with **new** and does not need **delete** to free memory.
-   Instead, those operations are automatically handeld by the :dox:`String` class.
-
-   .. includefrags:: demos/tutorial/sequences/base.cpp
-        :fragment: initialization_example
-
-Functionality
-^^^^^^^^^^^^^
+Working with Strings
+^^^^^^^^^^^^^^^^^^^^
 
-SeqAn also provides the common C++ operators for strings. You can use
-them like STL strings, for example:
+The SeqAn String implementation provides the common C++ operators that you know already from the `vector <http://en.cppreference.com/w/cpp/container/vector>`_ class of the STL.
+For example:
 
 .. includefrags:: demos/tutorial/sequences/example_functionality1.cpp
     :fragment: main
@@ -114,7 +93,7 @@ While some sequence types have a fixed capacity, the capacity of other sequence
 The capacity can be set explicitly by functions such as :dox:`String#reserve` or :dox:`StringConcept#resize`.
 It can also be set implicitly by functions like :dox:`StringConcept#append` or :dox:`StringConcept#replace`, if the operation's result exceeds the length of the target string.
 
-In the following example, a :dox:`String` of :dox:`Dna5String`, we first set the new length of the container with :dox:`StringConcept#resize` to two elements.
+In the following example we create a :dox:`String` of :dox:`Dna5String`. We first set the new length of the container with :dox:`StringConcept#resize` to two elements.
 After assigning two elements we append one more element with :dox:`StringConcept#appendValue`.
 In the last step the capacity is implicitly changed.
 
@@ -137,7 +116,7 @@ SeqAn offers a range of other functions for the work with the :dox:`String` clas
 The full list of functions you can find in the documentation :dox:`String`.
 
 Assignment 1
-^^^^^^^^^^^^
+""""""""""""
 
 .. container:: assignment
 
@@ -174,9 +153,12 @@ Assignment 1
         .. includefrags:: demos/tutorial/sequences/assignment_1_solution.cpp
             :fragment: full
 
+        Your output should look like this:
+
+        .. includefrags:: demos/tutorial/sequences/assignment_1_solution.cpp.stdout
 
 Assignment 2
-^^^^^^^^^^^^
+""""""""""""
 
 .. container:: assignment
 
@@ -227,6 +209,8 @@ Assignment 2
         .. includefrags:: demos/tutorial/sequences/assignment_2_solution.cpp
           :fragment: full
 
+        .. includefrags:: demos/tutorial/sequences/assignment_2_solution.cpp.stdout
+
 Comparisons
 ^^^^^^^^^^^
 
@@ -277,7 +261,7 @@ In some cases, :dox:`AssignableConcept#move` can also perform an in-place conver
 .. includefrags:: demos/tutorial/sequences/example_conversions_move.cpp.stdout
 
 Assignment 3
-^^^^^^^^^^^^
+""""""""""""
 
 .. container:: assignment
 
@@ -298,8 +282,10 @@ Assignment 3
 
         .. includefrags:: demos/tutorial/sequences/assignment_3_solution.cpp
 
+        .. includefrags:: demos/tutorial/sequences/assignment_3_solution.cpp.stdout
+
 Assignment 4
-^^^^^^^^^^^^
+""""""""""""
 
 .. container:: assignment
 
@@ -310,7 +296,7 @@ Assignment 4
      In this task you will compare whole sequences.
      Reuse the code from above. Instead of a ``String<Dna5>`` we will now deal with a ``String<Dna5String>``.
      Build a string which contains the Dna5Strings "ATATANGCGT", "AAGCATGANT" and "TGAAANTGAC".
-     Now check for all elements of the container, if they are lexicographically smaller or bigger than the  given reference sequence "GATGCATGAT" and append them to a appropriate list.
+     Now check for all elements of the container, if they are lexicographically smaller or bigger than the  given subject sequence "GATGCATGAT" and append them to a appropriate list.
      Print out the final lists.
 
    Hints
@@ -323,8 +309,240 @@ Assignment 4
 
         .. includefrags:: demos/tutorial/sequences/assignment_4_solution.cpp
 
+        .. includefrags:: demos/tutorial/sequences/assignment_4_solution.cpp.stdout
+
+.. _tutorial-datastructures-sequences-strings-and-segments-iterators:
+
+Iteration
+^^^^^^^^^
+
+Very often you will be required to iterate over your string to either retrieve what's stored in the string or to write something at a specific position.
+For this purpose SeqAn provides Iterators for all container types.
+The metafunction :dox:`ContainerConcept#Iterator` can be used to determine the appropriate iterator type for a given a container.
+
+An iterator always points to one value of the container.
+The operator :dox:`IteratorAssociatedTypesConcept#operator*` can be used to access this value by reference.
+Functions like :dox:`InputIteratorConcept#operator++(prefix)` or :dox:`BidirectionalIteratorConcept#operator--(prefix)` can be used to move the iterator to other values within the container.
+
+The functions :dox:`ContainerConcept#begin` and :dox:`ContainerConcept#end`, applied to a container, return iterators to the begin and to the end of the container.
+Note that similar to C++ standard library iterators, the iterator returned by :dox:`ContainerConcept#end` does not point to the last value of the container but to the position behind the last one.
+If the container is empty then ``end() == begin()``.
+
+The following code prints out a sequence and demonstrates how to iterate over a string.
+
+.. includefrags:: demos/tutorial/iterators/base.cpp
+    :fragment: use-case
+
+.. includefrags:: demos/tutorial/iterators/base.cpp.stdout
+    :fragment: use-case
+
+
+Different Iterator Types
+""""""""""""""""""""""""
+
+Some containers offer several kinds of iterators, which can be selected by an optional template parameter of the Iterator class.
+For example, the tag :dox:`ContainerIteratorTags#Standard` can be used to get an iterator type that resembles the C++ standard random access iterator.
+For containers there is also a second variant available, the so called :dox:`ContainerIteratorTags#Rooted` iterator.
+The rooted iterator knows its container by pointing back to it.
+This gives us a nice interface to access member functions of the underlying container while operating on a rooted iterator.
+The construction of an iterator in SeqAn, e.g. for a :dox:`DnaString Dna String`, could look like the following:
+
+.. includefrags:: demos/tutorial/iterators/base.cpp
+    :fragment: construction
+
+.. tip::
+
+   The default iterator implementation is :dox:`ContainerIteratorTags#Standard`.
+   Rooted iterators offer some convenience interfaces for the user.
+   They offer additional functions like :dox:`RootedIteratorConcept#container` for determining the container on which the iterator works, and they simplify the interface for other functions like :dox:`RootedIteratorConcept#atEnd`.
+   Moreover, rooted iterators may change the container’s length or capacity, which makes it possible to implement a more intuitive variant of a remove algorithm.
+
+   While rooted iterators can usually be converted into standard iterators, it is not always possible to convert standard iterators back into rooted iterators, since standard iterators may lack the information about the container they work on.
+   Therefore, many functions that return iterators like :dox:`ContainerConcept#begin` or :dox:`ContainerConcept#end` return rooted iterators instead of standard iterators; this way, they can be used to set both rooted and standard iterator variables.
+   Alternatively it is possible to specify the returned iterator type explicitly by passing the iterator kind as a tag argument, e.g. ``begin(str, Standard())``.
+
+Assignment 5
+""""""""""""
+
+.. container:: assignment
+
+   Type
+     Review
+
+   Objective
+     Copy the code below, which replaces all N's of a given :dox:`String` with A's.
+     Adjust the code to use iterators to traverse the container.
+     Use the :dox:`ContainerIteratorTags#Standard` iterator.
+
+     .. includefrags:: demos/tutorial/iterators/assignment_1.cpp
+
+    Solution
+
+      Click **more...** to see the solution.
+
+      .. container:: foldable
+
+         .. includefrags:: demos/tutorial/iterators/assignment_1_solution.cpp
+
+Assignment 6
+""""""""""""
+
+.. container:: assignment
+
+   Type
+     Application
+
+   Objective
+     Use the code from above and change the :dox:`ContainerIteratorTags#Standard` to a :dox:`ContainerIteratorTags#Rooted` iterator.
+     Try to shorten the code wherever possible.
+
+   Solution
+     Click **more...** to see the solution.
+
+     .. container:: foldable
+
+        .. includefrags:: demos/tutorial/iterators/assignment_2_solution.cpp
+
+String Allocation Strategies
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Each sequence object has a capacity, i.e. the reserved space for this object.
+The capacity can be set explicitly by functions such as :dox:`String#reserve` or :dox:`StringConcept#resize`.
+It can also bet set implicitly by functions like :dox:`ContainerConcept#append`, :dox:`AssignableConcept#assign`, :dox:`StringConcept#insert` or :dox:`StringConcept#replace`, if the operation's result exceeds the length of the target sequence.
+
+If the current capacity of a sequence is exceeded by chaining the length, we say that the sequence overflows.
+There are several overflow strategies that determine what actually happens when a string should be expanded beyond its capacity.
+The user can specify this for a function call by additionally handing over a tag.
+If no overflow strategy is specified, a default overflow strategy is selected depending on the type of the sequence.
+
+The following overflow strategies exist:
+
+:dox:`OverflowStrategyTags#Exact`
+  Expand the sequence exactly as far as needed. The capacity is only changed if the current capacity is not large enough.
+
+:dox:`OverflowStrategyTags#Generous`
+  Whenever the capacity is exceeded, the new capacity is chosen somewhat larger than currently needed.
+  This way, the number of capacity changes is limited in a way that resizing the sequence only takes amortized constant time.
+
+:dox:`OverflowStrategyTags#Limit`
+  Instead of changing the capacity, the contents are limited to current capacity.
+  All values that exceed the capacity are lost.
+
+:dox:`OverflowStrategyTags#Insist`
+  No capacity check is performed, so the user has to ensure that the container's capacity is large enough.
+
+The next example illustrates how the different strategies could be used:
+
+.. includefrags:: demos/tutorial/sequences_in_depth/example_overflow.cpp
+   :fragment: example
+
+.. includefrags:: demos/tutorial/sequences_in_depth/example_overflow.cpp.stdout
+
+Assignment 7
+""""""""""""
+
+.. container:: assignment
+
+   Type
+     Review
+
+   Objective
+     Build a string of Dna (default specialization) and use the function ``appendValue`` to append a million times the nucleotide 'A'.
+     Do it both using the overflow strategy ``Exact`` and ``Generous``.
+     Measure the time for the two different strategies.
+
+   Solution
+      Click **more...** to see the solution.
+
+      .. container:: foldable
+
+         .. includefrags:: demos/tutorial/sequences_in_depth/assignment_exact_generous_solution.cpp
+
+String Specializations
+^^^^^^^^^^^^^^^^^^^^^^
+
+The user can specify the kind of string that should be used in an optional second template argument of :dox:`String`.
+The default string implementation is :dox:`AllocString Alloc String`.
+
+.. includefrags:: demos/tutorial/sequences/base.cpp
+    :fragment: sdefault_type
+
+In most cases, the implementation :dox:`AllocString Alloc String` (the default when using a ``String<T>``) is the best choice.
+Exceptions are when you want to process extremely large strings that are a bit larger than the available memory (consider :dox:`AllocString Alloc String`) or much larger so most of them are stored on the hard disk and only parts of them are loaded in main memory (consider :dox:`ExternalString External String`).
+The following list describes in detail the different specializations:
+
+Specialization :dox:`AllocString Alloc String`
+  * **Description**
+    Expandable string that is stored on the heap.
+  * **Applications**
+    The default string implementation that can be used for general purposes.
+  * **Limitations**
+    Changing the :dox:`StringConcept#capacity` can be very costly since all values must be copied.
+
+Specialization :dox:`ArrayString Array String`
+  * **Description**
+    Fast but non-expandable string. Fast storing of fixed-size sequences.
+  * **Limitations**
+    :dox:`StringConcept#capacity Capacity` must already be known at compile time. Not suitable for storing large sequences.
+
+Specialization :dox:`BlockString Block String`
+  * **Description**
+    String that stores its sequence characters in blocks.
+  * **Applications**
+    The :dox:`StringConcept#capacity` of the string can quickly be increased. Good choice for growing strings or stacks.
+  * **Limitations**
+    Iteration and random access to values is slightly slower than for :dox:`AllocString Alloc String`.
+
+Specialization :dox:`PackedString Packed String`
+  * **Description**
+    A string that stores as many values in one machine word as possible.
+  * **Applications**
+    Suitable for storing large strings in memory.
+  * **Limitations**
+    Slower than other in-memory strings.
+
+Specialization :dox:`ExternalString External String`
+  * **Description**
+    String that is stored in secondary memory.
+  * **Applications**
+    Suitable for storing very large strings (>2GB). Parts of the string are automatically loaded from secondary memory on demand.
+  * **LimitationsApplications**
+    Slower than other string classes.
+
+Specialization :dox:`JournaledString Journaled String`
+  * **Description**
+    String that stores differences to an underlying text rather than applying them directly.
+  * **Applications**
+    Suitable for efficiently storing similar strings, if their differences to an underlying reference sequence are known.
+  * **LimitationsApplications**
+    Slower than other string classes, due to logarithmic penalty for random accesses.
+
+Specialization :dox:`CStyleString CStyle String`
+  * **Description**
+    Allows adaption of strings to C-style strings.
+  * **Applications**
+    Used for transforming other String classes into C-style strings (i.e. null terminated char arrays). Useful for calling functions of C-libraries.
+  * **Limitations**
+    Only sensible if value type is ``char`` or ``wchar_t``.
+
+.. includefrags:: demos/tutorial/sequences_in_depth/base.cpp
+      :fragment: type_examples
+
+.. includefrags:: demos/tutorial/sequences/base.cpp
+    :fragment: external_string_spec
+
+.. tip::
+
+   String Simplify Memory Management
+
+   One advantage of using Strings is that the user does not need to reserve memory manually with **new** and does not need **delete** to free memory.
+   Instead, those operations are automatically handled by the :dox:`String` class.
+
+   .. includefrags:: demos/tutorial/sequences/base.cpp
+        :fragment: initialization_example
+
 Segments
-~~~~~~~~
+--------
 
 The following section will introduce you into the :dox:`Segment` class of SeqAn.
 
@@ -350,10 +568,10 @@ The segment is *not* a copy of the sequence segment.
 .. warning::
 
    Please note that it is not possible anymore to change the underlying sequence by changing the segment.
-   If you want to change the host sequence, you have to explicilty modify this.
+   If you want to change the host sequence, you have to explicitly modify this.
    If you want to modify only the segment, you have to explicitly make a copy of the string.
 
-Assignment 5
+Assignment 8
 ^^^^^^^^^^^^
 
 .. container:: assignment
@@ -362,21 +580,20 @@ Assignment 5
      Application
 
    Objective
-
      In this task you will use a segment to pass over an infix of a given sequence to a function without copying the corresponding fragment.
      Use the code given below.
      Lets assume that we have given a ``genome`` and a ``read`` sequence as well as the begin position of a given alignment.
      In the main function a fragment of the Dna5String ``genome`` is copied and passed together with the Dna5String ``read`` to a ``print`` function.
      Adjust the code to use an infix of the genome, instead of copying the corresponding fragment.
 
-    .. includefrags:: demos/tutorial/sequences/assignment_5_solution.cpp
+     .. includefrags:: demos/tutorial/sequences/assignment_5_solution.cpp
           :fragment: top
 
 
-    .. includefrags:: demos/tutorial/sequences/base.cpp
+     .. includefrags:: demos/tutorial/sequences/base.cpp
           :fragment: assignment5_code_to_change
 
-    .. includefrags:: demos/tutorial/sequences/assignment_5_solution.cpp
+     .. includefrags:: demos/tutorial/sequences/assignment_5_solution.cpp
           :fragment: bottom
 
    Solution
@@ -387,7 +604,9 @@ Assignment 5
         .. includefrags:: demos/tutorial/sequences/assignment_5_solution.cpp
             :fragment: full
 
-Assignment 6
+        .. includefrags:: demos/tutorial/sequences/assignment_5_solution.cpp.stdout
+
+Assignment 9
 ^^^^^^^^^^^^
 
 .. container:: assignment
@@ -407,3 +626,5 @@ Assignment 6
     .. container:: foldable
 
        .. includefrags:: demos/tutorial/sequences/assignment_6_solution.cpp
+
+       .. includefrags:: demos/tutorial/sequences/assignment_6_solution.cpp.stdout
diff --git a/manual/source/Tutorial/DataStructures/Sequence/index.rst b/manual/source/Tutorial/DataStructures/Sequence/index.rst
new file mode 100644
index 0000000..e191aa0
--- /dev/null
+++ b/manual/source/Tutorial/DataStructures/Sequence/index.rst
@@ -0,0 +1,29 @@
+.. _tutorial-datastructures-sequences:
+
+Sequences
+=========
+
+..  toctree::
+    :hidden:
+    :titlesonly:
+
+    StringsAndSegments
+    StringSets
+    Alphabets
+
+Tasks, such as computing an alignment, searching for patterns online or indexing a genome or protein database are required in many bioinformatics applications.
+For these tasks, SeqAn provides fundamental data structures to work efficiently with biological sequences.
+SeqAn implements special alphabets, such as DNA, RNA, AminoAcid, Iupac and more.
+The alphabets available in SeqAn can be reviewed :ref:`here <tutorial-datastructures-sequences-alphabets>`.
+You will also find some more information about using the alphabet types.
+
+Besides the alphabets SeqAn also implements a string class.
+SeqAn strings are generic containers in which characters of any alphabet are stored continuously in memory.
+The default string class implementation is equivalent to the STL `vector <http://en.cppreference.com/w/cpp/container/vector>`_ class.
+However, the memory mangement of the SeqAn string class is optimized for working with SeqAn's alphabets.
+Apart of the default string class implementation SeqAn provides many useful specializations of this class, which are very useful in the bioinformatics context.
+The tutorial about :ref:`tutorial-datastructures-sequences-strings-and-segments` gives you a more detailed overview over the string class and it's functionality.
+
+Another generic container data structure used very often is the string set.
+The string set is a special container to represent a collection of strings, which in addition provides many helpful functions to make the work even easier and more efficient.
+The :ref:`StringSet tutorial <tutorial-datastructures-sequences-string-sets>` introduces you to this class and how to work with it.
diff --git a/manual/source/Tutorial/AnnotationStore.png b/manual/source/Tutorial/DataStructures/Store/AnnotationStore.png
similarity index 100%
rename from manual/source/Tutorial/AnnotationStore.png
rename to manual/source/Tutorial/DataStructures/Store/AnnotationStore.png
diff --git a/manual/source/Tutorial/AnnotationTree.png b/manual/source/Tutorial/DataStructures/Store/AnnotationTree.png
similarity index 100%
rename from manual/source/Tutorial/AnnotationTree.png
rename to manual/source/Tutorial/DataStructures/Store/AnnotationTree.png
diff --git a/manual/source/Tutorial/FragmentStore.png b/manual/source/Tutorial/DataStructures/Store/FragmentStore.png
similarity index 100%
rename from manual/source/Tutorial/FragmentStore.png
rename to manual/source/Tutorial/DataStructures/Store/FragmentStore.png
diff --git a/manual/source/Tutorial/FragmentStore.rst b/manual/source/Tutorial/DataStructures/Store/FragmentStore.rst
similarity index 97%
rename from manual/source/Tutorial/FragmentStore.rst
rename to manual/source/Tutorial/DataStructures/Store/FragmentStore.rst
index 216c1f7..da1c4cf 100644
--- a/manual/source/Tutorial/FragmentStore.rst
+++ b/manual/source/Tutorial/DataStructures/Store/FragmentStore.rst
@@ -1,12 +1,11 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-fragment-store:
+.. _tutorial-datastructures-store-fragment-store:
 
 Fragment Store
---------------
+==============
 
 Learning Objective
   You will learn about the SeqAn FragmentStore for handling fragments.
@@ -20,7 +19,10 @@ Duration
   1 h
 
 Prerequisites
-  The basic tutorials.
+  :ref:`tutorial-getting-started`, :ref:`tutorial-datastructures-sequences`
+
+Overview
+--------
 
 The :dox:`FragmentStore` is a data structure specifically designed for read mapping, genome assembly or gene annotation.
 These tasks typically require lots of data structures that are related to each other like:
@@ -32,7 +34,7 @@ These tasks typically require lots of data structures that are related to each o
 The Fragment Store subsumes all these data structures in an easy to use interface.
 It represents a multiple alignment of millions of reads or mate-pairs against a reference genome consisting of multiple contigs.
 Additionally, regions of the reference genome can be annotated with features like 'gene', 'mRNA', 'exon', 'intron' or custom features.
-The Fragment Store supports I/O functions to read/write a read alignment in `SAM/BAM <http://samtools.sourceforge.net/>`_ or `AMOS <http://www.cbcb.umd.edu/research/contig_representation.shtml>`_ format and to read/write annotations in `GFF <http://genome.ucsc.edu/FAQ/FAQformat.html#format3>`_ or `GTF <http://genome.ucsc.edu/FAQ/FAQformat.html#format4>`_ format.
+The Fragment Store supports I/O functions to read/write a read alignment in `SAM/BAM <http://samtools.sourceforge.net/>`_ or `AMOS <http://amos.sourceforge.net/wiki/index.php/AMOS>`_ format and to read/write annotations in `GFF <http://genome.ucsc.edu/FAQ/FAQformat.html#format3>`_ or `GTF <http://genome.ucsc.edu/FAQ/FAQformat.html#format4>`_ format.
 
 The Fragment Store can be compared with a database where each table (called "store") is implemented as a :dox:`String` member of the :dox:`FragmentStore` class.
 The rows of each table (implemented as structs) are referred by their ids which are their positions in the string and not stored explicitly (marked with ``*`` in the Figures 2 and 5).
@@ -43,11 +45,11 @@ All stores are present in the Fragment Store and empty if unused.
 The concrete types, e.g. the position types or read/contig alphabet, can be easily changed by defining a custom config struct which is a template parameter of the Fragment Store class.
 
 Multiple Read Alignment
-^^^^^^^^^^^^^^^^^^^^^^^
+-----------------------
 
 The Fragment Store can represent a multiple read alignment, i.e. is an alignment between the contigs and the set of reads, where one read can be aligned at zero, one or multiple positions of a contig.
 In the multiple alignment the contig is represented by one line with gaps (``-``) and the remaining lines are to reads or read segments with gaps aligned to the contig.
-The following figure shows one contig (blue line at the top) and multiple reads aligned to it arranged as stairs (reads in lower-case align to the reverse strand):
+The following figure shows one contig (the line at the top) and multiple reads aligned to it arranged as stairs (reads in lower-case align to the reverse strand):
 
 ::
 
@@ -81,7 +83,6 @@ The following figure shows which tables represent the multiple read alignment:
 
    ***Figure 2:*** Stores used to represent a multiple read alignment
 
-
 The main table is the :dox:`FragmentStore::alignedReadStore` which stores :dox:`AlignedReadStoreElement AlignedReadStoreElements`.
 Each entry is an alignment of a read (``readId``) and a contig (``contigId``).
 Introduced gaps are stored as a string of gap anchors in the ``gaps`` member of the alignedReadStore entry and the contigStore entry.
@@ -125,7 +126,7 @@ Then we create a stairs layout of the aligned reads and output a window from gap
 
 .. includefrags:: demos/tutorial/fragment_store/display_aligned_reads.cpp.stdout
 
-The same window can also be exported as a scalable vector graphic in SVG format (supported by Browsers, Inkscape; see :download:`original file <ReadLayout.svg>`]):
+The same window can also be exported as a scalable vector graphic in SVG format.
 
 .. includefrags:: demos/tutorial/fragment_store/display_aligned_reads.cpp
    :fragment: svg
@@ -203,7 +204,7 @@ Assignment 1
         .. includefrags:: demos/tutorial/fragment_store/access_aligned_reads2.cpp.stdout
 
 Gene Annotation
-^^^^^^^^^^^^^^^
+---------------
 
 Annotations are represented as a tree that at least contains a root node where all annotations of children or grandchildren of.
 A typical annotation tree looks as follows:
@@ -279,10 +280,10 @@ The following tables summarizes the functions provided by the AnnotationTree ite
 
 
 File I/O
-^^^^^^^^
+--------
 
 Reads and Contigs
-"""""""""""""""""
+^^^^^^^^^^^^^^^^^
 
 To efficiently load reads, use the function :dox:`FragmentStore#loadReads` which auto-detects the file format, supporting Fasta, Fastq, QSeq and Raw (see :dox:`AutoSeqFormat`), and uses memory mapping to efficiently load millions of reads, their names and quality values.
 If not only one but two file names are given, :dox:`FragmentStore#loadReads` loads mate pairs or paired-end reads stored in two separate files.
@@ -298,7 +299,7 @@ The function :dox:`FragmentStore#unlockAndFreeContig` can be used to clear the c
 To write all contigs to an open output stream use :dox:`FragmentStore#writeContigs`.
 
 Multiple Read Alignments
-""""""""""""""""""""""""
+^^^^^^^^^^^^^^^^^^^^^^^^
 
 A multiple read alignment can be loaded from an open :dox:`BamFileIn` with :dox:`FragmentStore#readRecords`.
 Similarly, it can be written to an open :dox:`BamFileOut` with :dox:`FragmentStore#writeRecords`.
@@ -326,12 +327,12 @@ A subsequent call of :dox:`FragmentStore#loadContigs` would load the sequences o
 Please note, that UCSC files cannot be written due to limitations of the file format.
 
 Stores
-^^^^^^
+------
 
 The Fragment Store consists of the following tables:
 
 Read Stores
-"""""""""""
+^^^^^^^^^^^
 
 +-------------------------------------+-----------------------------+--------------------------------------------------------------+
 | Store                               | Description                 | Details                                                      |
@@ -347,7 +348,7 @@ Read Stores
 
 
 Contig Stores
-"""""""""""""
+^^^^^^^^^^^^^
 
 +---------------------------------------+--------------------------------------------------+---------------------------------------------------------------------------------+
 | Store                                 | Description                                      | Details                                                                         |
@@ -358,7 +359,7 @@ Contig Stores
 +---------------------------------------+--------------------------------------------------+---------------------------------------------------------------------------------+
 
 Read Alignment Stores
-"""""""""""""""""""""
+^^^^^^^^^^^^^^^^^^^^^
 
 +-------------------------------------------+-----------------------------------------+-----------------------------------------------------------------------------------------+
 | Store                                     | Description                             | Details                                                                                 |
@@ -372,7 +373,7 @@ Read Alignment Stores
 
 
 Annotation Stores
-"""""""""""""""""
+^^^^^^^^^^^^^^^^^
 
 +---------------------------------------+-------------------------------+----------------------------------------------------------------------------------------------------------------------------+
 | Store                                 | Description                   | Details                                                                                                                    |
@@ -382,7 +383,7 @@ Annotation Stores
 
 
 Name Stores
-"""""""""""
+^^^^^^^^^^^
 
 +-------------------------------------------+-------------------------------+------------------------------------------------------+
 | :dox:`FragmentStore::annotationNameStore` | Annotation names              | String that maps from ``annoId`` to ``annoName``     |
diff --git a/manual/source/Tutorial/GenomeAnnotations.rst b/manual/source/Tutorial/DataStructures/Store/GenomeAnnotations.rst
similarity index 96%
rename from manual/source/Tutorial/GenomeAnnotations.rst
rename to manual/source/Tutorial/DataStructures/Store/GenomeAnnotations.rst
index 758d48f..47b12b4 100644
--- a/manual/source/Tutorial/GenomeAnnotations.rst
+++ b/manual/source/Tutorial/DataStructures/Store/GenomeAnnotations.rst
@@ -1,17 +1,16 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-genome-annotations:
+.. _tutorial-datastructures-store-genome-annotations:
 
 Genome Annotations
-------------------
+==================
 
 Learning Objective
   You will learn how to work with annotations in SeqAn.
   After this tutorial, you will be able to write your own programs using annotations and analyzing them.
-  You will be ready to continue with the :ref:`tutorial-fragment-store` Tutorial, e.g. if you want to combine your annotations with information from alignments.
+  You will be ready to continue with the :ref:`tutorial-datastructures-store-fragment-store` Tutorial, e.g. if you want to combine your annotations with information from alignments.
 
 Difficulty
   Average
@@ -20,14 +19,14 @@ Duration
   1 h
 
 Prerequisites
-  :ref:`tutorial-sequences`, :ref:`tutorial-iterators`
+  :ref:`tutorial-datastructures-sequences`
 
 This tutorial will present SeqAn's efficient and easy-to-use data structures to work with annotations.
 They allow to annotate genome regions with features like 'gene', 'mRNA', 'exon', 'intron' and if required with custom features.
 We will give you an understanding of how to load annotations from a `GFF <http://genome.ucsc.edu/FAQ/FAQformat.html#format3>`_ or `GTF <http://genome.ucsc.edu/FAQ/FAQformat.html#format4>`_ file, store them in efficient data structures, as well as how to traverse and access these information.
 
 AnnotationStore as Part of the FragmentStore
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+--------------------------------------------
 
 This section will give you a short introduction to data structures relevant for working with annotations.
 
@@ -41,7 +40,7 @@ The position of each element in the string implicitly represents the Id of such
 All such strings are members of the class :dox:`FragmentStore`, are always present and empty if unused.
 For example, the member :dox:`FragmentStore::contigStore` is a string of elements, each one containing among others a contig sequence.
 
-For detailed information about the :dox:`FragmentStore` read the :ref:`tutorial-fragment-store` Tutorial.
+For detailed information about the :dox:`FragmentStore` read the :ref:`tutorial-datastructures-store-fragment-store` Tutorial.
 
 Accordingly, the :dox:`FragmentStore::annotationStore` is a :dox:`String`, where each element represents one annotation.
 Each element holds the necessary information, e.g. beginPos, endPos, parentId etc., as data members.
@@ -50,7 +49,7 @@ Each element holds the necessary information, e.g. beginPos, endPos, parentId et
    The name store is a  StringSet that stores the element name at the position of its id.
 
 AnnotationStore
-~~~~~~~~~~~~~~~
+---------------
 
 In this section you will learn how to work with the :dox:`FragmentStore::annotationStore` itself.
 
@@ -294,7 +293,7 @@ Assignment 4
        #. Output the average number of mRNAs for genes.
        #. Output the average number of exons for mRNAs.
        #. Additionally output the average exon length.
-       #. Test your program also on large data, e.g. the annotation of the mouse genome `sim40mio_onlyY.sam.zip <http://ftp.seqan.de/manual_files/seqan-1.4/sim40mio_onlyY.sam.zip>`_ (don't forget to unzip first).
+       #. Test your program also on large data, e.g. the annotation of the mouse genome `Mus_musculus.NCBIM37.61.gtf.zip <http://ftp.seqan.de/manual_files/seqan-1.4/Mus_musculus.NCBIM37.61.gtf.zip>`_ (don't forget to unzip first).
 
      Solution
       Click **more...** to see one possible solution.
diff --git a/manual/source/Tutorial/ReadLayout.png b/manual/source/Tutorial/DataStructures/Store/ReadLayout.png
similarity index 100%
rename from manual/source/Tutorial/ReadLayout.png
rename to manual/source/Tutorial/DataStructures/Store/ReadLayout.png
diff --git a/manual/source/Tutorial/ReadLayout.svg b/manual/source/Tutorial/DataStructures/Store/ReadLayout.svg
similarity index 100%
rename from manual/source/Tutorial/ReadLayout.svg
rename to manual/source/Tutorial/DataStructures/Store/ReadLayout.svg
diff --git a/manual/source/Tutorial/assignment_annotations.gtf b/manual/source/Tutorial/DataStructures/Store/assignment_annotations.gtf
similarity index 100%
rename from manual/source/Tutorial/assignment_annotations.gtf
rename to manual/source/Tutorial/DataStructures/Store/assignment_annotations.gtf
diff --git a/manual/source/Tutorial/DataStructures/Store/index.rst b/manual/source/Tutorial/DataStructures/Store/index.rst
new file mode 100644
index 0000000..e4ed248
--- /dev/null
+++ b/manual/source/Tutorial/DataStructures/Store/index.rst
@@ -0,0 +1,15 @@
+.. _tutorial-datastructures-store:
+
+Store
+=====
+
+..  toctree::
+    :hidden:
+    :titlesonly:
+
+    GenomeAnnotations
+    FragmentStore
+
+In this tutorial we will explain the GenomeAnnotation store and the FragmentStore.
+Both are very comprehensive and feature rich data structures that come with many advantages when dealing with annotation trees or read alignments.
+However, these are more advanced topics and rather aimed for more experienced SeqAn users.
diff --git a/manual/source/Tutorial/graph_cities.jpg b/manual/source/Tutorial/DataStructures/graph_cities.jpg
similarity index 100%
rename from manual/source/Tutorial/graph_cities.jpg
rename to manual/source/Tutorial/DataStructures/graph_cities.jpg
diff --git a/manual/source/Tutorial/DataStructures/index.rst b/manual/source/Tutorial/DataStructures/index.rst
new file mode 100644
index 0000000..8c2f21b
--- /dev/null
+++ b/manual/source/Tutorial/DataStructures/index.rst
@@ -0,0 +1,52 @@
+.. We create this roles for putting the "Introduction: etc. headings
+    on this page without them displaying in the ToC.  This would break
+    rendering the ToC correctly on readthedocs style.  The rubric
+    headings are formatted using CSS.
+
+.. role:: rubric-heading1
+    :class: rubric-heading1
+.. role:: rubric-heading2
+    :class: rubric-heading2
+
+.. _tutorial-datastructures:
+
+Data Structures
+===============
+
+.. toctree::
+    :hidden:
+    :titlesonly:
+
+    Sequence/index
+    Indices/index
+    Alignment/index
+    Store/index
+    Graphs
+    Seeds
+    Modifiers
+    JournalStringTree
+
+SeqAn has numerous data structures that are helpful for analyzing biological sequences. Those range from simple containers for strings that can be saved in different ways, to collection of strings or compressed strings.
+
+The Journaled string tree, for example allows the user to traverse all sequence contexts, given a window of a certain size, that are present in a set of sequences.
+Similar sequences are hence only traversed once, and the coordinate bookkeeping is all within the data  structure. This allows for example speedup of up to a 100x given sequences from the 1000 Genome project and compared to traversing the sequences one after another.
+
+Another strong side of SeqAn are its generic string indices. You can think “suffix tree” but the implementations range from an enhanced suffix array to (bidirectional) FM-indices.
+
+In this section you find tutorials addressing the most common of SeqAn's data structures.
+
+The tutorials under :ref:`tutorial-datastructures-sequences` will introduce you to alphabets, sequence containers, iterators and various kinds of string sets, among them also comrpessed, reference based representations.
+The tutorials under :ref:`tutorial-datastructures-indices` will introduce you to the interfaces and implementations of SeqAn's string and q-gram indices and the corresponding interators.
+
+The tutorials under :ref:`tutorial-datastructures-alignment-alignment-gaps` will introduce you to how SeqAn implements alignment objects (e.g. gaps in sequences).
+The tutorials under :ref:`tutorial-datastructures-store` will introduce you to SeqAn's store data structures for NGS read mapping and annotation
+
+The tutorials under :ref:`tutorial-datastructures-graphs` will introduce you to SeqAn's graph type. Its simple and we provide in the algorithms section various standard graph algorithms for the datatype.
+The tutorials under :ref:`tutorial-datastructures-seeds` will introduce you to seeds in SeqAn.
+Its what you need if you think 'seed-and-extend'.
+
+The tutorials under :ref:`tutorial-datastructures-modifiers` will introduce you SeqAn's modifier concept. If you want the reverse complement of a string, there is no need to explicitely allocate memory for it. Modifiers leave the sequence as it is but provide a different access to it.
+
+The tutorials under :ref:`tutorial-datastructures-journaledstringtree` will introduce you to a data structure which allows you to have data parallel access to a collection of similar strings. If you have an algorithm that scans collections of sequences one after another and left to right, this will be of interest for you, since it avoids a lot of redundant work if the sequences in the collection are similar.
+
+
diff --git a/manual/source/Tutorial/modify_string.png b/manual/source/Tutorial/DataStructures/modify_string.png
similarity index 100%
copy from manual/source/Tutorial/modify_string.png
copy to manual/source/Tutorial/DataStructures/modify_string.png
diff --git a/manual/source/Tutorial/GenericProgramming.rst b/manual/source/Tutorial/GenericProgramming.rst
deleted file mode 100644
index 39597a0..0000000
--- a/manual/source/Tutorial/GenericProgramming.rst
+++ /dev/null
@@ -1,94 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _tutorial-template-subclassing:
-
-Generic Programming
-===================
-
-A generic algorithm that is applicable to a type ``T`` needs not to be optimal for that type.
-The algorithm find in the standard library (ISO/IEC 1998, section 25.3.1.1) for example performs a sequential linear time search and is therefore capable of finding a given value in any standard compliant container.
-However, the container map was designed to support a faster logarithmic time search, so the algorithm find – though applicable – is not optimal for searching in map.
-This shows that sometimes a special algorithm could be faster than a generic algorithm.
-Hence, in order to achieve better performance, SeqAn supports refinements of algorithms.
-A special version is only useful if it really allows a speedup in some cases, and only in this case it will actually be implemented.
-Therefore we assume that for a given case always the most special applicable variant is the best, where we have to assure that there is always a definite most special candidate according to the C++ function overload resolution rules (ISO/IEC 1998, sections 13.3 and 14.5.8).
-We can write ``find(obj)`` for any container type ``obj``, and this invokes the most suitable implementation of ``find`` depending on the type of ``obj``.
-We call this approach **template subclassing**.
-
-The technique of template subclassing may be summarized as follows:
-
-*  The data types are realized as default implementation or specialization of class templates, e.g., ``Class``, which have at least one template parameter ``TSpec``.
-*  Refinements of ``Class`` are specified by using in ``TSpec`` a tag class, e.g., ``Subclass``, that means they are implemented as class template specializations ``Class<Subclass>``.
-*  Whenever further refinements may be possible, we declare the tag classes as class templates with at least one template parameter ``TSpec``, in which more tag classes can be used.
-   For example we may implement a class template specialization ``Class<Subclass<Subsubclass<...> > >``.
-   This way, we can reach arbitrary levels of specialization.
-*  Algorithms can be implemented for each level of specialization.
-   If multiple implementations for different levels of specialization exist, then the C++ function overload resolution selects the most special from all applicable variants.
-
-Example: Generic q-gram hashing
--------------------------------
-
-In many applications in bioinformatics so called q-grams are used.
-A short string of length q can be interpreted as a number to the base of the cardinality of the alphabet.
-So for example for the Dna alphabet ``cgta=0*1+3*4+2*16+1*64=108``.
-q-grams can be gapped or ungapped.
-In the gapped case they are often called :dox:`Shape shapes` and are simply an ordered list of integers.
-The number of integers in the list is called the ``size`` of a shape whereas the largest element -1 is called the ``span``.
-
-The following code sniplet shows a generic algorithm for computing all hash values for a shape.
-The function ``span`` applied to the shape s = ⟨s1, . . . , sq⟩ returns sq − 1.
-
-.. includefrags:: demos/tutorial/generic_programming/example_hashing.cpp
-      :fragment: hashAll
-
-Each shape has to know the alphabet :math:`\Sum`, so we specify this value type in the first template parameter of ``Shape``.
-The actual specialization is selected in the second template parameter ``TSpec``.
-
-.. includefrags:: demos/tutorial/generic_programming/example_hashing.cpp
-      :fragment: classShape
-
-the default is :dox:`SimpleShape` which is simply an ungapped shape storing merely the length of the shape from which it can deduce its span and size.
-
-.. includefrags:: demos/tutorial/generic_programming/example_hashing.cpp
-      :fragment: classSimpleShape
-
-If we know q at compile time, then we can specify it in a template parameter and define span as a static member:
-
-.. includefrags:: demos/tutorial/generic_programming/example_hashing.cpp
-      :fragment: classUngappedShape
-
-The question is now, whether we can speed up the above ``hashAll`` functions for specializations of the class ``shape`` like ungapped shapes.
-A little thinking yields a positive answer to that question.
-Indeed, for ungapped shapes, we can incrementally compute the next hash value form a given hashvalue in constant time using the formula ``hash(a_{i+1}...a{_i+q})=hash(a_{i}...a_{i+q−1})|Σ|−a_{i}|Σ|^q +a_{i+q``}, that means when shifting the shape along the sequence, we have to subtract the effect of the leftmost letter and add the effect of the rightmost letter, all scaled with the corresponding factor. All digits in between are *shifted* by multiplying them with the alphabet size.
-Obviously this allows for a much more efficient implementation of the ``hashAll`` function. This functionality can be encoded in the following function :dox:`Shape#hashNext`.
-
-.. includefrags:: demos/tutorial/generic_programming/example_hashing.cpp
-      :fragment: hashNext
-
-SeqAn aims at not using virtual functions for introducing polymorphism.
-Instead the concept is called ``template subclassing``.
-Hence we can now define a specialized ``hashAll`` function for all ungapped shapes as follows.
-
-.. includefrags:: demos/tutorial/generic_programming/example_hashing.cpp
-      :fragment: specializedHashAll
-
-Thats pretty much it.
-The C++ resolution mechanisms will ensure that whenever you use an ungapped shape in your code, the more efficient ``hashAll`` function above will be compiled.
-Note that this decision is made at *compile time* as opposed to the virtual function mechanism which is invoked at *run time*.
-
-Further reading
----------------
-
-For more information about generic programming and the STL we recommend reading.
-
-* Vandervoorde, Josuttis: C++ Templates - The complete guide, Addison-Wesley
-
-Template Subclassing Demo
--------------------------
-
-Here is an example of template subclassing.
-
-.. includefrags:: demos/tutorial/generic_programming/template_subclassing.cpp
diff --git a/manual/source/Tutorial/GettingStarted.rst b/manual/source/Tutorial/GettingStarted.rst
deleted file mode 100644
index 7c70a42..0000000
--- a/manual/source/Tutorial/GettingStarted.rst
+++ /dev/null
@@ -1,77 +0,0 @@
-.. _tutorial-getting-started:
-
-Getting Started
----------------
-
-This chapter gives you the necessary steps to get started with SeqAn:
-
--  Necessary Prerequisites
--  Getting SeqAn from GitHub
--  Creating a first build.
--  Creating your own first application.
-
-Use the following links to select your target operating system and IDE/build system.
-The bold items show the recommended build system for the given platforms.
-
-Linux using
-  * :ref:`Makefiles <tutorial-getting-started-linux-makefiles>`
-  * :ref:`Eclipse <tutorial-getting-started-linux-eclipse>`
-
-Mac Os X
-  * :ref:`Makefiles <tutorial-getting-started-mac-makefiles>`
-  * :ref:`Xcode <tutorial-getting-started-mac-xcode>`
-
-Windows
-  * :ref:`Visual Studio <tutorial-getting-started-windows-visual-studio>`
-
-Click "more" for details on the supported development platforms.
-
-.. container:: foldable
-
-   .. note ::
-      **In-Depth Information:** Supported OS, Build Systems, and Compilers
-
-      The content of this box is meant as additional information.
-      You do not need to understand it to use SeqAn or follow the tutorials.
-
-      There are three degrees of freedom when selecting a SeqAn development platform.
-      The degrees of freedom are:
-
-      #. The **operating system**.
-         We support Linux, Mac Os X and Windows.
-      #. The **build system**.
-         This is partially orthogonal to the operating system, although each build system is only available on some platforms (e.g. Visual Studio is only supported on Windows).
-         We use CMake to generate the actual build files and the build system maps to "CMake generators".
-         A CMake generator creates either build files for a build system (e.g. GNU Make) or a project file for an IDE (e.g. for Visual Studio 2008).
-      #. The **compiler**.
-         This is partially orthogonal to the operating system and build system, although only some combinations of each are possible.
-         For example, Visual Studio projects of a particular version can only use the Visual Studio compiler of the same version.
-
-    The SeqAn team offers support for the following operating systems, build systems, and compilers:
-
-    * **Operating System:** Linux, Mac Os X, Windows.
-    * **Build System:** Makefiles, Visual Studio projects, XCode projects, Eclipse CDT projects.
-    * **Compilers:** GNU g++ from version 4.1, LLVM/Clang from version 3.0, Visual C++ from Version 8.
-
-    We are told that SeqAn also works on FreeBSD.
-    It should work with all `generators available in CMake <http://www.cmake.org/cmake/help/v2.8.8/cmake.html#section_Generators>`_ that work with the supported compilers (e.g. the CodeBlocks generator will probably work as long as you use it on a operating system with a supported compiler, although we cannot offer any support for CodeBlocks).
-
-Relevant How-Tos
-~~~~~~~~~~~~~~~~
-
-Although slightly more advanced than "getting started", the following
-How-Tos apply to setting up your build environment:
-
-* :ref:`how-to-use-parallel-build-directories`
-* :ref:`how-to-install-contribs-on-windows`
-* :ref:`build-manual-integration-with-your-own-build-system`
-
-.. toctree::
-   :hidden:
-   :maxdepth: 2
-
-   GettingStarted/LinuxMakefiles
-   GettingStarted/LinuxEclipse
-   GettingStarted/MacMakefiles
-   GettingStarted/MacXcode
-   GettingStarted/WindowsVisualStudio
diff --git a/manual/source/Tutorial/AFirstExample.rst b/manual/source/Tutorial/GettingStarted/AFirstExample.rst
similarity index 94%
rename from manual/source/Tutorial/AFirstExample.rst
rename to manual/source/Tutorial/GettingStarted/AFirstExample.rst
index e846e7c..ff7446f 100644
--- a/manual/source/Tutorial/AFirstExample.rst
+++ b/manual/source/Tutorial/GettingStarted/AFirstExample.rst
@@ -1,12 +1,11 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-first-steps-in-seqan:
+.. _tutorial-getting-started-first-steps-in-seqan:
 
 A First Example
----------------
+===============
 
 Learning Objective
   You will learn the most basic concepts of SeqAn.
@@ -37,9 +36,9 @@ This tutorial will walk you through a simple example program that highlights the
 * and more.
 
 Running Example
-~~~~~~~~~~~~~~~
+---------------
 
-Let's start with a simple example programm. The program will do a pattern search of a short query sequence (pattern) in a long database sequence (text).
+Let's start with a simple example programm. The program will do a pattern search of a short query sequence (pattern) in a long subject sequence (text).
 We define the score for each position of the database sequence as the sum of matching characters between the pattern and the text.
 
 The following figure shows an expected result:
@@ -80,15 +79,15 @@ However, during this tutorial we will not do this, such that SeqAn classes and f
    The code compiles nevertheless.
    The compiler automatically looks for a function ``length`` in the namespace of its arguments.
 
-Note that we follow the rules for variable, function, and class names as outlined in the :ref:`SeqAn style guide <style-guide-cpp>`.
-For example: 
+Note that we follow the rules for variable, function, and class names as outlined in the :ref:`SeqAn style guide <infra-contribute-style-cpp>`.
+For example:
 1. variables and functions use lower case,
 2. struct, enum and classes use CamelCase,
-3. metafunctions start with a capital letter, and 
+3. metafunctions start with a capital letter, and
 4. metafunction values are UPPERCASE.
 
 Assignment 1
-^^^^^^^^^^^^
+""""""""""""
 
 .. container:: assignment
 
@@ -110,7 +109,7 @@ Assignment 1
         .. includefrags:: demos/tutorial/a_first_example/solution_1.cpp
 
 SeqAn and Templates
-~~~~~~~~~~~~~~~~~~~
+-------------------
 
 Let us now have a detailed look at the program.
 
@@ -119,7 +118,7 @@ We first include the IOStreams library that we need to print to the screen and t
 .. includefrags:: demos/tutorial/a_first_example/basic_code_detailed.cpp
    :fragment: includes
 
-The :dox:`String String class` is one of the most fundamental classes in SeqAn, which comes as no surprise since SeqAn is used to analyse sequences (there is an extra tutorial for SeqAn :ref:`sequences <tutorial-sequences>` and :ref:`alphabets <tutorial-alphabets>`).
+The :dox:`String String class` is one of the most fundamental classes in SeqAn, which comes as no surprise since SeqAn is used to analyse sequences (there is an extra tutorial for SeqAn :ref:`sequences <tutorial-datastructures-sequences>` and :ref:`alphabets <tutorial-datastructures-sequences-alphabets>`).
 
 In contrast to the popular string classes of Java or C++, SeqAn provides different string implementations and different alphabets for its strings.
 There is one string implementation that stores characters in memory, just like normal C++ strings.
@@ -130,7 +129,6 @@ SeqAn uses **template functions** and **template classes** to implement the diff
 Template functions/classes are normal functions/classes with the additional feature that one passes the type of a variable as well as its value (see also: `templates in cpp <http://www.cplusplus.com/doc/tutorial/templates/>`_).
 This means that SeqAn algorithms and data structures are implemented in such a way that they work on all types implementing an informal interface (see information box below for more details).
 This is similar to the philosophy employed in the C++ STL (Standard Template Library).
-Even though we provide further tutorials on templates in SeqAn (:ref:`tutorial-basic-techniques`, :ref:`tutorial-metafunctions`, :ref:`tutorial-template-subclassing`, :ref:`tutorial-global-function-interface`), they are more advanced and not required to follow this tutorial.
 
 The following two lines make use of template programming to define two strings of type char, a text and a pattern.
 
@@ -184,8 +182,8 @@ This gives the similarity of the pattern to the string at each position.
 .. includefrags:: demos/tutorial/a_first_example/basic_code_detailed.cpp
    :fragment: print
 
-Code Encapsulation
-~~~~~~~~~~~~~~~~~~
+Refactoring
+-----------
 
 At this point, we have already created a working solution!
 However, in order to make it easier to maintain and reuse parts of the code we need to export them into functions.
@@ -203,7 +201,7 @@ The function call ``infix(text, i, j)`` generates a substring equal to ``text[i
 To be more precise, infix() generates a :dox:`InfixSegment Infix` which can be used as a string, but is implemented using pointers such that no copying is necessary and running time and memory is saved.
 
 Assignment 2
-^^^^^^^^^^^^
+""""""""""""
 
 .. container:: assignment
 
@@ -227,7 +225,7 @@ Assignment 2
         .. includefrags:: demos/tutorial/a_first_example/solution_2.cpp
 
 The Role of References in SeqAn
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-------------------------------
 
 Let us now have a closer look at the signature of ``computeScore()``.
 
@@ -257,7 +255,7 @@ Reading from right to left the function expects two ``references`` to
 ``const objects`` of type ``String`` of ``char``.
 
 Assignment 3
-^^^^^^^^^^^^
+""""""""""""
 
 .. container:: assignment
 
@@ -274,7 +272,7 @@ Assignment 3
 
         .. includefrags:: demos/tutorial/a_first_example/solution_3.cpp
            :fragment: head_local
-        
+
 
    Solution
      .. container:: foldable
@@ -282,7 +280,7 @@ Assignment 3
         .. includefrags:: demos/tutorial/a_first_example/solution_3.cpp
 
 Generic and Reusable Code
-~~~~~~~~~~~~~~~~~~~~~~~~~
+-------------------------
 
 As mentioned earlier, there is another issue: the function computeScore only works for Strings having the alphabet ``char``.
 If we wanted to use it for ``Dna`` or ``AminoAcid`` strings then we would have to reimplement it even though the only difference is the signature of the function.
@@ -304,7 +302,7 @@ Now the function signature is better in terms of memory consumption, time effici
 
    The SeqAn Style Guide
 
-   The :ref:`SeqAn style guide <style-guide-cpp>` gives rules for formatting and structuring C++ code as well as naming conventions.
+   The :ref:`SeqAn style guide <infra-contribute-style-cpp>` gives rules for formatting and structuring C++ code as well as naming conventions.
    Such rules make the code more consistent, easier to read, and also easier to use.
 
    #. **Naming Scheme**.
@@ -323,7 +321,7 @@ Now the function signature is better in terms of memory consumption, time effici
    This will change in the near future to be more in line with the style guide.
 
 Assignment 4
-^^^^^^^^^^^^
+""""""""""""
 
 .. container:: assignment
 
@@ -339,7 +337,7 @@ Assignment 4
         .. includefrags:: demos/tutorial/a_first_example/solution_4.cpp
 
 From Object-Oriented Programming to SeqAn
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-----------------------------------------
 
 There is another huge advantage of using templates: we can specialize a function without touching the existing function.
 In our working example it might be more appropriate to treat ``AminoAcid`` sequences differently.
@@ -358,7 +356,7 @@ When looking into the documentation of :dox:`Score#score` you will notice that t
 This object tells the function how to compare two letters and there are several types of scoring schemes available in SeqAn (of course, you can extend this with your own).
 In addition, because they are so frequently used there are shortcuts as well.
 For example :dox:`Blosum62` is really a **shortcut** for ``Score<int, ScoreMatrix<AminoAcid, Blosum62_> >``, which is obviously very helpful.
-Other shortcuts are ``DnaString`` for ``String<Dna>`` (:ref:`sequence tutorial <tutorial-sequences>`), ``CharString`` for ``String<char>``, ...
+Other shortcuts are ``DnaString`` for ``String<Dna>`` (:ref:`sequence tutorial <tutorial-datastructures-sequences>`), ``CharString`` for ``String<char>``, ...
 
 .. tip::
 
@@ -369,10 +367,8 @@ Other shortcuts are ``DnaString`` for ``String<Dna>`` (:ref:`sequence tutorial <
 
    .. includefrags:: demos/tutorial/a_first_example/example_tempSubclassing.cpp
 
-For a detailed description and more examples see the tutorial :ref:`Template Subclassing <tutorial-template-subclassing>`.
-
 Assignment 5
-^^^^^^^^^^^^
+""""""""""""
 
 .. container:: assignment
 
@@ -393,7 +389,7 @@ Assignment 5
         .. includefrags:: demos/tutorial/a_first_example/solution_5.cpp
 
 Tags in SeqAn
-~~~~~~~~~~~~~
+-------------
 
 Sometimes you will see something like this:
 
@@ -439,7 +435,7 @@ If we call ``print()`` with something different than ``MaxOnly`` then we print a
 On the other hand, if we call print with ``MaxOnly`` only the positions with the maximum similarity as well as the maximal similarity will be shown.
 
 Assignment 6
-^^^^^^^^^^^^
+""""""""""""
 
 .. container:: assignment
 
@@ -463,7 +459,7 @@ Because SeqAn is very generic we do not know the datatypes of template functions
 This would pose a problem because the function call of function ``b()`` in function ``a()`` may depend on the data types of the template arguments of function ``a()``.
 
 The Final Result
-~~~~~~~~~~~~~~~~
+----------------
 
 Don't worry if you have not fully understood the last section.
 If you have -- perfect.
diff --git a/manual/source/Tutorial/GettingStarted/BackgroundAndMotivation.rst b/manual/source/Tutorial/GettingStarted/BackgroundAndMotivation.rst
new file mode 100644
index 0000000..194558b
--- /dev/null
+++ b/manual/source/Tutorial/GettingStarted/BackgroundAndMotivation.rst
@@ -0,0 +1,242 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _tutorial-getting-started-background-and-motivation:
+
+Background and Motivation
+=========================
+
+Learning Objective
+  You will learn about the design goals and fundamental ideas used in the SeqAn library.
+  Also, you will see how the SeqAn library can be generic while still retaining high performance.
+
+Difficulty
+  Very basic
+
+Duration
+  Take the time you need!
+
+Prerequisites
+  Basic C or C++ knowledge
+
+Hi, we are glad you made it here.
+You being here, and reading these lines means you are eager to learn more about SeqAn and this is the right place to start.
+In this tutorial, we will give you an overview about the design goals, design decisions of the SeqAn library, and explain the motivation for these decisions.
+The next chapter :ref:`First Steps <tutorial-getting-started-first-steps-in-seqan>` will flesh out the most important points of this chapter with code examples of everyday SeqAn use.
+
+Library Design Aims
+-------------------
+
+The following lists some library design aims of the SeqAn library.
+Note that they are contradicting.
+The focus is on efficiency but small trade-offs are allowed to improve consistency and ease of use.
+
+#. **Efficiency**.
+   The focus of SeqAn is to provide a library of efficient and reusable algorithmic components for biological sequence analysis.
+   Algorithms should have good practical implementations with low overhead, even at the cost of being harder to use.
+#. **Consistency**.
+   Be consistent wherever possible, even at slight costs of efficiency.
+#. **Ease of use**.
+   The library should be easily usable wherever possible, even at slight costs of efficiency.
+#. **Reusability and Generosity**.
+   The algorithms in SeqAn should be reusable and generic, even at small costs of efficiency.
+
+Modern C++
+----------
+
+C++ is sometimes described as a language that most people know only 20% of but everyone knows a different 20%.
+This section gives an overview over some C++ idioms we use.
+This might be no news if you are a seasoned C++ programmer who is apt at using the STL and Boost libraries.
+However, programmers coming from C and Java might find them interesting (We still encourage to read the `C++ FAQ <https://isocpp.org/faq>`_ if you are new to C++).
+
+References
+  References are alternatives to pointers in C++ to construct value aliases.
+  Also see `Wikipedia on C++ references <http://en.wikipedia.org/wiki/Reference_(C%2B%2B)>`_.
+
+Templates
+  C++ allows you to perform `generic programming <http://en.wikipedia.org/wiki/Generic_programming>`_ using templates.
+  While similar to generics in Java (C++ templates are more than a decade older), C++ templates are designed to write zero-overhead abstractions that can be written to be as efficient as hand-written code while retaining a high level of abstraction.
+  See `cplusplus.com on C++ templates <http://www.cplusplus.com/doc/tutorial/templates/>`_.
+  Note that there is no way to restrict the type that can be used in templates, there is no mechanism such as Java's ``? extends T`` in C++.
+  Using an incompatible type leads to compiler errors because some operator or function could not be found.
+
+Memory Management / No Pointers
+  Object oriented programming is another key programming paradigm made available with C++ (Compared to C).
+  This means, that instead of using raw pointers to allocated chunks of memory, memory management should be done using containers.
+  The STL provides containers such as `std::vector <http://www.cplusplus.com/reference/stl/vector/>`_ and SeqAn offers :dox:`String`.
+
+Memory Management in SeqAn
+--------------------------
+
+C++ allows to allocate complex objects on the stack (in contrast to Java where objects are always constructed on the heap).
+The objects are constructed when the code execution enters the scope/block they are defined in and freed when the block is left.
+Allocation of resources (e.g. memory) happens on construction and deallocation happens when the current block is left.
+This is best explained in an example.
+
+.. includefrags:: demos/tutorial/background_and_motivation/example.cpp
+
+``seqan::String<char>`` is a class (actually an instantiation of the class template :dox:`String`) that allows to store strings of ``char`` values, similar to ``std::vector<char>`` or ``std::string``.
+
+When the variable ``programName`` is allocated, the constructor of the ``String<char>`` class is called.
+It allocates sufficient memory to store the value of ``argv[0]`` and then copies over the values from this string.
+The variable exists until the current block is left.
+Since it is defined in the ``main()`` function, this can only happen in the last line of ``main()`` at the ``return 0``.
+When the variable goes out of scope, its value is deconstructed and all allocated memory is freed.
+
+If an argument was given to the program, the block in the ``if`` clause is entered.
+When this happens, the variable ``firstArg`` is constructed, memory is allocated and the value of ``argv[1]`` is copied into the buffer.
+When the block is left, the variable is deconstructed and all memory is deallocated.
+
+Note that all memory is released when the ``main()`` function is left, regardless whether it is left in the ``return 0`` or the ``return 1``.
+Corresponding code in C would be (arguably) more messy, either requiring ``goto`` or multiple ``free()`` calls, one before either ``return``.
+
+Motivation for Template Programming
+-----------------------------------
+
+In this section, we will give a short rationale why C++ with heavy use of template programming was used for SeqAn.
+
+Any sequence analysis will have sequence data structures and algorithms on sequences at its heart.
+Even when only considering DNA and amino acid alphabets, there are various variants for alphabets that one has to consider.
+Otherwise, important applications in bioinformatics cannot be covered:
+
+* 4-character DNA,
+* 5-character DNA with ``N``,
+* 15-character IUPAC, and
+* 27-character amino acids.
+
+A simple implementation could simply store such strings as ASCII characters.
+However, there are some implementation tricks that can lead to great reduction of memory usage (e.g. encoding eight 4-character DNA characters in one byte) or running time (fast lookup tables for characters or q-grams) for small alphabets.
+Thus, simply using a ``std::string`` would come at high costs to efficiency.
+
+Given that in the last 10-15 years, Java and C# have gained popularity, one could think about an object oriented solution: strings could simply be arrays of ``Character`` objects.
+Using polymorphism (e.g. overwriting of functions in subclasses), one could then write generic and reusable algorithms.
+For example, the Java 2 platform defines the sort function for all objects implementing a ``Comparable`` interface.
+Note that such an implementation would have to rely on `virtual functions <http://en.wikipedia.org/wiki/Virtual_function>`_ of some sort.
+However, as we will see in the section OOP vs. Generic Progamming, **this comes at a high performance cost, being in conflict with efficiency**.
+For a sequence library, we could implement functions that map values from an alphabet to an ordinal value between ``0`` and ``S - 1`` where ``S`` is the number of elements in the alphabet.
+
+Generic programming offers one way out: C++ templates allow to define template classes, e.g. the STL's ``std::vector<T>`` or SeqAn's :dox:`String`.
+Here, instead of creating a string class around an array of ``char`` values (or objects), we can leave the type of the array's elements open.
+We can then introduce different types, e.g. ``Dna`` or ``Dna5`` for 4- and 5-character DNA alphabets.
+
+Algorithms can be implemented using template functions and the template types are fixed at compile time.
+Thus, the compiler does not have to use virtual function tables and other "crutches", less indirection is involved, and more code can be inlined and aggressively optimized.
+When written appropriately, such algorithms can also work on different string implementations! Also, when defining our own alphabet types, we can directly influence how their abstractions (and APIs) work.
+
+Thus, C++ allows us to implement (1) a generic and reusable library with (2) high level abstractions (and thus ease of use) that still allows the compiler to employ aggressive optimization and thus achieves (3) efficiency.
+With the words of the C++ inventor `Bjarne Stroustrup <http://www.artima.com/intv/abstreffi.html>`_:
+
+   A high level of abstraction is good, not just in C++, but in general.
+   We want to deal with problems at the level we are thinking about those problems.
+   When we do that, we have no gap between the way we understand problems and the way we implement their solutions.
+   We can understand the next guy's code. We don't have to be the compiler.
+
+OOP vs. Generic Programming
+---------------------------
+
+In SeqAn, we use a technique called `template subclassing <tutorial-getting-started-template-subclassing>`_ which is based on generic programming.
+This technique provides `polymorphism <http://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming>`_ into C++ programs at **compile time** using templates.
+Such static polymorphism is different from **runtime polymorphism** which is supported in C++ using subclassing and virtual functions.
+It comes at the cost of some additional typing but has the advantage that the compiler can inline all function calls and thus achieve better performance.
+An example will be given in `the section "From OOP to SeqAn" in the First Steps Tutorial <tutorial-getting-started-first-steps-in-seqan>`_.
+
+.. todo::
+    We need a little code example here.
+
+The important point is that in contrast to runtime polymorphism such static polymorphism allows the compiler to inline functions, which has huge effect on the overall performance of the program.
+Which as you recall correctly from above, is the main objective of the SeqAn library :)!
+
+Global Function Interface
+-------------------------
+
+As we already stated, using template subclassing to achieve OOP like behavior in a more efficient way comes with a certain drawback.
+Subclassed objects are seen by the compiler as singular instances of a specific type.
+That means a subclassed object does not inherit the member or member functions of the alleged base class.
+In order to reduce the overhead of reimplementing the same member functions for every subclassed object, we use global interface functions.
+
+You might already have get in touch with global function interfaces while working with the STL.
+With the new C++11 standard the STL now provides some global interface functions, e.g., the `begin <http://en.cppreference.com/w/cpp/iterator/begin>`_ or `end <http://en.cppreference.com/w/cpp/iterator/end>`_ interface.
+
+The rationale behind is the following observation.
+Global interface functions allow us to implement a general functionality that is used for all subclassed objects of this template class (assuming the accessed member variables exists in all subclassed objects as in the base template class, otherwise the compiler will complain).
+If the behavior for any subclassed object changes, the corresponding global function will be reimplemented for this special type covering the desired functionality.
+Due to template deduction the compiler already chooses the correct function and inlines the kernel if possible, which very likely improves the performance of the program.
+By this design, we can avoid code duplication, and by that increasing maintainability and reducing subtle errors due to less copy-and-paste code.
+
+So, while most C++ developers, who are familiar with the STL and have a strong background in OO programming, are used to the typical dot notation, in SeqAn you have to get used to global function interfaces instead.
+But, cheer up! You will adapt to this very quickly. Promised!
+
+Meta-Programming
+----------------
+
+Generic algorithms usually have to know certain types that correspond to their arguments.
+An algorithm on containers may need to know which type of values are stored in the string, or what kind of iterator we need to access it.
+The usual way in the STL is to define the value type of a class like ``vector`` as a *member typedef* of this class, so it can be retrieved by ``vector::value_type``.
+
+Unfortunately member typedef declarations have the same disadvantages as any members: Since they are specified by the class definition, they cannot be changed or added to the class without changing the code of the class, and it is not possible in C++ to define members for built-in types.
+What we need therefore is a mechanism that returns an output type (e.g. the value type) given an input type (e.g. the string) and doing so does not rely on members of the input type, but instead uses some kind of global interface.
+
+Such task can be performed by **metafunctions**, also known as **type traits**.
+A metafunction is a construct to map some types or constants to other entities like types, constants, functions, or objects at compile time.
+The name metafunction comes from fact that they can be regarded as part of a meta-programming language that is evaluated during compilation.
+
+In SeqAn we use class templates to implement metafunctions in C++.
+Generic algorithms usually have to know certain types that correspond to their arguments: An algorithm on strings may need to know which type of characters are stored in the string, or what kind of iterator can be used to browse it.
+SeqAn uses Metafunctions (also known as "traits") for that purpose.
+
+Looking at an Example
+^^^^^^^^^^^^^^^^^^^^^
+
+Assuming that we define a string of amino acids:
+
+.. includefrags:: demos/tutorial/metafunctions/base.cpp
+    :fragment: amino
+
+Now lets define a function that exchanges the first two values in a string:
+
+.. includefrags:: demos/tutorial/metafunctions/base.cpp
+    :fragment: func_exchange1
+
+Since this function only works for instances of :dox:`String String<`:dox:`AminoAcid AminoAcid>`, we could try to make it more general by making a template out of it.
+
+.. includefrags:: demos/tutorial/metafunctions/base.cpp
+    :fragment: func_exchange2
+
+Now the function works for all sequence types ``T`` that store ``AminoAcid`` objects, but it will fail for other value types as soon as the variable temp cannot store ``str[0]`` anymore.
+To overcome this problem, we must redefine ``temp`` in a way that it can store a value of the correct type.
+The question is: "Given a arbitrary type ``T``, what is the value type of ``T``?"
+
+The metafunction :dox:`ContainerConcept#Value` answers this question: "The value type of ``T`` is given by ``Value<T>::Type``."
+
+Hence, the final version of our function ``exchangeFirstValues`` reads as follows:
+
+.. includefrags:: demos/tutorial/metafunctions/base.cpp
+    :fragment: func_exchange3
+
+We can view ``Value`` as a kind of "function" that takes ``T`` as an argument (in angle brackets) and returns the required value type of ``T``.
+In fact, ``Value`` is not implemented as a C++ function, but as a class template.
+This class template is specialized for each sequence type ``T`` in a way that the ``typedef Type`` provides the value type of ``T``.
+Unfortunately, the current C++ language standard does not allow to write simply "``Value<T> temp``;", so we must select the return value by appending "``::Type``".
+The leading "``typename``" becomes necessary since ``Value<T>::Type`` is a type that depends on a template parameter of the surrounding function template.
+
+And now?
+--------
+
+Wow, this was quite some information to digest, wasn't it?
+We suggest you take a break!
+Get some fresh air!
+Grab something to drink or to eat!
+Let the information settle down.
+
+Do you think you've got everything?
+Well, if not don't worry!
+Follow the :ref:`First Steps <tutorial-getting-started-first-steps-in-seqan>` tutorial which will cover the topics discussed above.
+This gives you the chance to apply the recently discussed paradigms to an actual (uhm, simplistic) use case.
+But it will help you to better understand the way data structures and algorithms are implemented in SeqAn.
+
+We recommend you to also read the :ref:`Argument Parser Tutorial <tutorial-getting-started-parsing-command-line-arguments>`.
+This tutorial will teach you how to easily add command line arguments for your program and how to generate a help page for the options.
+Or you go back to the :ref:`main page <manual-main-tutorials>` and stroll through the other tutorials.
+You are now ready to dive deeper into SeqAn.
+Enjoy!
diff --git a/manual/source/Tutorial/GettingStarted/Eclipse.png b/manual/source/Tutorial/GettingStarted/Eclipse.png
deleted file mode 100644
index 6c1121f..0000000
Binary files a/manual/source/Tutorial/GettingStarted/Eclipse.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/Linux.png b/manual/source/Tutorial/GettingStarted/Linux.png
deleted file mode 100644
index 4b87084..0000000
Binary files a/manual/source/Tutorial/GettingStarted/Linux.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/LinuxEclipse.rst b/manual/source/Tutorial/GettingStarted/LinuxEclipse.rst
deleted file mode 100644
index 1eb1cd4..0000000
--- a/manual/source/Tutorial/GettingStarted/LinuxEclipse.rst
+++ /dev/null
@@ -1,249 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _tutorial-getting-started-linux-eclipse:
-
-Getting Started With SeqAn On Linux Using Eclipse CDT
------------------------------------------------------
-
-This article describes how to get started with SeqAn on Linux using Eclipse CDT.
-
-We assume that you are using the Debian or a Debian-like Linux distributions such as Ubuntu.
-The only difference to other distributions is the name of the packages and the package management system in the Prerequisites section.
-It should be very simple for you to tailor these instructions to your requirements.
-
-Prerequisites
-~~~~~~~~~~~~~
-
-Use the following command line to install the required dependencies: the `Git`__ client, the `GNU C++ compiler <http://gcc.gnu.org/>`_, `CMake <http://cmake.org>`_ for the build system, the `Python <http://python.org>`_ script interpreter for running helper scripts, and `Eclipse <http://www.eclipse.org>`_ with the `CDT plugin <http://www.eclipse.org/cdt/>`_ for C++ development.
-
-.. __: http://git-scm.com/
-
-.. code-block:: console
-
-    ~ # sudo apt-get install git g++ cmake python eclipse-cdt
-
-The following command line installs optional dependencies: developer versions of `zlib <http://zlib.org>`_ and `libbzip2 <http://bzip.org>`_ (for compressed I/O support) and the `Boost <http://boost.org>`_ library (required by a few apps).
-
-.. code-block:: console
-
-    ~ # sudo apt-get install zlib1g-dev libbz2-dev libboost-dev
-
-Install
-~~~~~~~
-
-.. important::
-	
-	In the following we describe the easiest way to get up and running with SeqAn.
-	This is especially recommended for novel users working through the tutorials in the beginning.
-	If you are planning to contribute to SeqAn at any point, you need to read the :ref:`infrastructure-seqan-git-workflow` instructions first. 
-	This manual will guide you through the SeqAn workflow required to submit bug-fixes and new features.
-
-Go to the directory you want to keep your SeqAn install in (e.g. ``Development`` in your home folder).
-
-.. code-block:: console
-
-    ~ # cd $HOME/Development
-
-Then, use git to retrieve the current SeqAn source-base:
-
-.. code-block:: console
-
-    # Development # git clone https://github.com/seqan/seqan.git seqan-src
-
-You can now find the whole tree with the SeqAn library and applications in ``$HOME/Development/seqan-src``.
-
-
-.. tip::
-
-    By default git creates a local branch pointing to the stable master branch.
-    This branch is only updated when hot fixes are applied or a new release is published.
-    
-    If you want to have access to regular updates and new features you can switch to the ``develop`` branch of SeqAn:
-    
-    .. code-block:: console
-
-		# Development # cd seqan-src
-		# Development/seqan-src # git checkout -b develop origin/develop
-	
-    For more help on git, please read the documentation ``git help`` and consult the homepage `Git`__.
-
-.. __: http://git-scm.com/
-
-.. warning::
-
-    Note that the state of develop is not guaranteed to be stable at any time.
-
-A First Build
-~~~~~~~~~~~~~
-
-We will now use CMake to create Eclipse CDT project files.
-For this, we create a separate folder ``seqan-build`` on the same level as the folder ``seqan-src``.
-
-.. code-block:: console
-
-    # Development # mkdir seqan-build
-
-When using Eclipse CDT, we have to create separate project files for debug builds (including debug symbols with no optimization) and release builds (debug symbols are stripped, optimization is high).
-Thus, we create a subdirectory for each build type.
-We start with debug builds since this is best for learning: debug symbols are enabled and assertions are active
-
-.. warning::
-
-    Compiling **debug mode yields very slow binaries** since optimizations are disabled.
-    Compile your programs in release mode if you want to run them on large data sets.
-
-    The reason for disabling optimizations in debug mode is that the compiler performs less inlining and does not optimize variables away.
-    This way, debugging your programs in a debugger becomes much easier.
-
-.. code-block:: console
-
-    # Development # mkdir seqan-build/debug-eclipse
-    # Development # cd seqan-build/debug-eclipse
-
-The resulting directory structure will look as follows.
-
-::
-
-       ~/Development
-         ├─ seqan-src          source directory
-         └─ seqan-build
-            └─ debug-eclipse   build directory with debug symbols
-
-Within the **build directory** ``debug-eclipse``, we call CMake to generate The Eclipse CDT project in the debug mode.
-
-.. code-block:: console
-
-    # debug-eclipse # cmake ../../seqan-src -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug
-
-Now, open Eclipse.
-If this is your first Eclipse start then you have to select a workspace.
-This is unrelated to the SeqAn project files generated earlier and you can pick any directory, e.g. use the default.
-
-We will now import the generated CDT project: Select the ``Project Explorer`` in Eclipse (**C++** perspective) and right click somewhere into the view.
-Select ``Import...`` and choose ``Existing Project into Workspace`` in the current dialog.
-Select ``Next`` and browse to your build directory in your workspace.
-Eclipse recognizes that there is a project file and selects it automatically.
-Confirm the selection with ``Finish``.
-
-.. image:: eclipse_linux_import_projects.png
-
-.. image:: eclipse_linux_import_projects_2.png
-
-Before you build any target you should change the launch preferences of Eclipse.
-In the menu select ``Window > Preferences`` Go to the menu ``Run/Debug > Launching`` and uncheck ``Build (if required) before launching``.
-This prevents the project for building the target **all** (default preference), which can take quite a while depending on the system you are using.
-This can happen if, e.g. you accidentally run a binary before building the target after you changed some code.
-
-.. image:: eclipse_linux_preference_build.png
-
-Now you have successfully setup Eclipse and can build your targets using the ``Make Target`` view (usually on the right hand side of the workbench).
-To build RazerS 2, open the folder ``apps > razers2`` in the ``Make Target`` view.
-Then, double-click on ``exe] razers2`` and or mark it and then push the ``Build Make Target`` icon in the top.
-This will build the program **razers2**.
-
-.. image:: eclipse_linux_select_target.png
-
-The last line you see on the console at the bottom of the screen should be
-
-::
-
-    Built target razers2
-    make[2]: Leaving directory `/home/USER/Development/seqan-build/debug-eclipse'
-    /usr/bin/cmake -E cmake_progress_start /home/USER/Development/seqan-build/debug-eclipse/CMakeFiles 0
-    make[1]: Leaving directory `/home/USER/Development/seqan-build/debug-eclipse'
-
-Hello World!
-~~~~~~~~~~~~
-
-Now it is time to write your first little application in SeqAn.
-Go to the demos folder in the ``seqan-src`` directory and create a new folder with the same name as your username.
-In this tutorial we use ``seqan_dev`` as the username.
-Create a new cpp file called ``hello_seqan.cpp``
-
-.. code-block:: console
-	
-    # debug-eclipse # cd ../../seqan-src/demos
-    # demos # mkdir seqan_dev; cd seqan_dev
-    # seqan_dev # echo "" > hello_seqan.cpp
-
-Now, we go back into the build directory and call CMake again to make it detect the new source file.
-
-.. code-block:: console
-
-    # seqan_dev # cd ../../../seqan-build/debug-eclipse
-    # debug # cmake .
-
-.. tip::
-
-    When and where do you have to call CMake?
-
-    CMake is a cross-platform tool for creating and updating build files (IDE projects or Makefiles).
-    When you first create the build files, you can configure things such as the build mode or the type of the project files.
-
-    Whenever you add a new application, a demo or a test or whenever you make changes to ``CMakeLists.txt`` you need to call CMake again.
-    Since CMake remembers the settings you chose the first time you called CMake in a file named ``CMakeCache.txt``, all you have to do is to switch to your ``debug`` or ``release`` build directory and call "``cmake .``" in there.
-
-    .. code-block:: console
-
-       ~ # cd $HOME/Development/seqan-build/debug-eclipse
-       # debug # cmake .
-
-    Do not try to call "``cmake .``" from within the ``seqan-src`` directory **but only from your build directory**.
-
-After CMake is done with building the project files you can simply refresh the imported build project in Eclipse in order to make the applied changes working: In the ``Project Explorer`` view, right-click on ``seqan-Debug at debug-eclipse`` and select ``Refresh (F5)``.
-
-.. tip::
-
-    In some cases the refresh does not work.
-    In this case simply close and reopen Eclipse.
-    
-Open the file under ``seqan-Debug at debug-eclipse > [Source directory] > demos > seqan_dev > hello_seqan.cpp`` and copy the following source code to it:
-
-.. code-block:: cpp
-
-    #include <iostream>
-    #include <seqan/sequence.h>  // CharString, ...
-    #include <seqan/stream.h>    // to stream a CharString into cout
-
-    int main(int, char const **)
-    {
-        std::cout << "Hello World!" << std::endl;
-        seqan::CharString mySeqAnString = "Hello SeqAn!";
-        std::cout << mySeqAnString << std::endl;
-        return 1;
-    }
-
-Then, browse to your target in the ``Make Target`` view.
-Double-click on the target of your application and the binary is built immediately.
-
-.. image:: eclipse_linux_build_demo.png
-
-After the build is complete go into the menu and select ``Run > Run Configurations``.
-Add a new ``C/C++ Application``.
-Under ``Project`` select the seqan-build project.
-Then you can select your recently built binary under ``C/C++ Application:``.
-Finally, you can give your application a name.
-Confirm your selection with ``Apply`` and hit the ``Run`` button in the bottom of the dialog.
-Done!
-
-.. image:: eclipse_linux_run_configurations.png
-
-If everything went well, you will see something similar to this:
-
-.. image:: eclipse_linux_run.png
-
-Congratulations, you have successfully created your first application within the SeqAn build system using Eclipse and CDT.
-
-Further Steps
-~~~~~~~~~~~~~
-
-As a next step, we suggest the following:
-
-* :ref:`Continue with the Tutorials <tutorial>`
-* For the tutorial, using the SeqAn build system is great!
-  If you later want to use SeqAn as a library, have a look at :ref:`build-manual-integration-with-your-own-build-system`.
-* If you plan to contribute to SeqAn, please read the following document: :ref:`infrastructure-seqan-git-workflow`.
-
diff --git a/manual/source/Tutorial/GettingStarted/LinuxMakefiles.rst b/manual/source/Tutorial/GettingStarted/LinuxMakefiles.rst
deleted file mode 100644
index 4aedfe3..0000000
--- a/manual/source/Tutorial/GettingStarted/LinuxMakefiles.rst
+++ /dev/null
@@ -1,215 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _tutorial-getting-started-linux-makefiles:
-
-Getting Started With SeqAn On Linux Using Makefiles
----------------------------------------------------
-
-This tutorial explains how to get started with SeqAn on Linux using Makefiles.
-
-We assume that you are using the Debian or a Debian-like Linux distributions such as Ubuntu.
-The only difference to other distributions is the name of the packages and the package management system in the Prerequisites section.
-It should be very simple for you to tailor these instructions to your requirements.
-
-Prerequisites
-~~~~~~~~~~~~~
-
-Use the following command line to install the required dependencies: the `Git`__ client, the `GNU C++ compiler <http://gcc.gnu.org/>`_, `CMake <http://cmake.org>`_ for the build system and the `Python <http://python.org>`_ script interpreter for running helper scripts.
-
-.. __: http://git-scm.com/
-
-.. code-block:: console
-
-    ~ # sudo apt-get install git g++ cmake python
-
-The following command line installs optional dependencies:
-developer versions of `zlib <http://zlib.org>`_ and `libbzip2 <http://bzip.org>`_ (for compressed I/O support) and the `Boost <http://boost.org>`_ library (required by a few apps).
-
-.. code-block:: console
-
-    ~ # sudo apt-get install zlib1g-dev libbz2-dev libboost-dev
-
-Install
-~~~~~~~
-
-.. important::
-	
-	In the following we describe the easiest way to get up and running with SeqAn.
-	This is especially recommended for novel users working through the tutorials in the beginning.
-	If you are planning to contribute to SeqAn at any point, you need to read the :ref:`infrastructure-seqan-git-workflow` instructions first. 
-	This manual will guide you through the SeqAn workflow required to submit bug-fixes and new features.
-
-Go to the directory you want to keep your SeqAn install in (e.g. ``Development`` in your home folder).
-
-.. code-block:: console
-
-    ~ # cd $HOME/Development
-
-Then, use git to retrieve the current SeqAn source-base:
-
-.. code-block:: console
-
-    # Development # git clone https://github.com/seqan/seqan.git seqan-src
-
-You can now find the whole tree with the SeqAn library and applications in ``$HOME/Development/seqan-src``.
-
-.. tip::
-
-    By default git creates a local branch pointing to the stable master branch.
-    This branch is only updated when hot fixes are applied or a new release is published.
-    
-    If you want to have access to regular updates and new features you can switch to the ``develop`` branch of SeqAn:
-    
-    .. code-block:: console
-
-		# Development # cd seqan-src
-		# Development/seqan-src # git checkout -b develop origin/develop
-	
-    For more help on git, please read the documentation ``git help`` and consult the homepage `Git`__.
-
-.. __: http://git-scm.com/
-
-.. warning::
-
-    Note that the state of develop is not guaranteed to be stable at any time.
-
-
-A First Build
-~~~~~~~~~~~~~
-
-Next, we will use CMake to create Makefiles for building the applications, demo programs (short: demos), and tests.
-For this, we create a separate folder ``seqan-build`` on the same level as the folder ``seqan-src``.
-
-.. code-block:: console
-
-    # Development # mkdir seqan-build
-
-When using Makefiles, we have to create separate Makefiles for debug builds (including debug symbols with no optimization) and release builds (debug symbols are stripped, optimization is high).
-Thus, we create a subdirectory for each build type.
-
-We start with debug builds since this is best for learning:
-debug symbols are enabled and assertions are active.
-
-.. warning ::
-
-    Compiling **debug mode yields very slow binaries** since optimizations are disabled.
-    Compile your programs in release mode if you want to run them on large data sets.
-
-    The reason for disabling optimizations in debug mode is that the compiler performs less inlining and does not optimize variables away.
-    This way, debugging your programs in a debugger becomes much easier.
-
-.. code-block:: console
-
-    # Development # mkdir seqan-build/debug
-    # Development # cd seqan-build/debug
-
-The resulting directory structure will look as follows.
-
-::
-
-       ~/Development
-         ├─ seqan-src                 source directory
-         └─ seqan-build
-            └─ debug                  build directory with debug symbols
-
-Within the **build directory** ``debug``, we call CMake to generate Makefiles in *Debug* mode.
-
-.. code-block:: console
-
-    # debug # cmake ../../seqan-src -DCMAKE_BUILD_TYPE=Debug
-
-We can then build one application, for example RazerS 2:
-
-.. code-block:: console
-
-    # debug # make razers2
-
-Optionally, we could also use "``make``\ " instead of "``make razers2``\ ".
-However, this builds all demos, tests and applications, which **can take a long time and is not really necessary**.
-
-Hello World!
-~~~~~~~~~~~~
-
-Now it is time to write your first little application in SeqAn.
-Go to the demos folder in the ``seqan-src`` directory and create a new folder with the same name as your username.
-In this tutorial we use ``seqan_dev`` as the username.
-Create a new cpp file called ``hello_seqan.cpp``
-
-.. code-block:: console
-	
-    # debug # cd ../../seqan-src/demos
-    # demos # mkdir seqan_dev; cd seqan_dev
-    # seqan_dev # echo "" > hello_seqan.cpp
-
-Now, we go back into the build directory and call CMake again to make it detect the new source file.
-
-.. code-block:: console
-
-    # seqan_dev # cd ../../../seqan-build/debug
-    # debug # cmake .
-
-.. tip::
-
-    When and where do you have to call CMake?
-
-    CMake is a cross-platform tool for creating and updating build files (IDE projects or Makefiles).
-    When you first create the build files, you can configure things such as the build mode or the type of the project files.
-
-    Whenever you add a new application, a demo or a test or whenever you make changes to ``CMakeLists.txt`` you need to call CMake again.
-    Since CMake remembers the settings you chose the first time you called CMake in a file named ``CMakeCache.txt``, all you have to do is to switch to your ``debug`` or ``release`` build directory and call "``cmake .``" in there.
-
-    .. code-block:: console
-
-       ~ # cd $HOME/Development/seqan-build/debug
-       # debug # cmake .
-
-    Do not try to call "``cmake .``" from within the ``seqan-src`` directory **but only from your build directory**.
-
-.. raw:: html
-
-   </pre>
-
-Open the file ``demos/seqan_dev/hello_seqan.cpp`` (in your ``seqan-src`` directory) with a text editor and replace its contents with the following:
-
-.. code-block:: cpp
-
-    #include <iostream>
-    #include <seqan/sequence.h>  // CharString, ...
-    #include <seqan/stream.h>    // to stream a CharString into cout
-
-    int main(int, char const **)
-    {
-        std::cout << "Hello World!" << std::endl;
-        seqan::CharString mySeqAnString = "Hello SeqAn!";
-        std::cout << mySeqAnString << std::endl;
-        return 1;
-    }
-
-Afterwards, you can simply compile and run your application:
-
-.. code-block:: console
-
-    # debug # make demo_seqan_dev_hello_seqan
-    # debug # ./bin/demo_seqan_dev_hello_seqan
-
-On completion, you should see the following output:
-
-.. code-block:: console
-
-    Hello World!
-    Hello SeqAn!
-
-Congratulations, you have successfully created your first application within the SeqAn build system with Makefiles!
-
-Further Steps
-~~~~~~~~~~~~~
-
-As a next step, we suggest the following:
-
-* :ref:`Continue with the Tutorials <tutorial>`
-* For the tutorial, using the SeqAn build system is great!
-  If you later want to use SeqAn as a library, have a look at :ref:`build-manual-integration-with-your-own-build-system`.
-* If you plan to contribute to SeqAn, please read the following document: :ref:`infrastructure-seqan-git-workflow`.
diff --git a/manual/source/Tutorial/GettingStarted/LinuxTerminal.png b/manual/source/Tutorial/GettingStarted/LinuxTerminal.png
deleted file mode 100644
index cf269b3..0000000
Binary files a/manual/source/Tutorial/GettingStarted/LinuxTerminal.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/MacMakefiles.rst b/manual/source/Tutorial/GettingStarted/MacMakefiles.rst
deleted file mode 100644
index df42759..0000000
--- a/manual/source/Tutorial/GettingStarted/MacMakefiles.rst
+++ /dev/null
@@ -1,215 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _tutorial-getting-started-mac-makefiles:
-
-Getting Started With SeqAn On Mac Os X Using Makefiles
-------------------------------------------------------
-
-This tutorials explains how to get started with SeqAn on Mac Os X using Makefiles.
-
-We assume that you want to use `MacPorts <http://www.macports.org/>`_ for installing some dependencies (MacPorts is a package management system that easily allows you to install Unix software on Os X).
-Of course, if you want to use a different way for installing the dependencies (e.g. using Homebrew) then you are free to do so.
-
-Prerequisites
-~~~~~~~~~~~~~
-
-First, you have to install the Apple `Xcode SDK <https://developer.apple.com/downloads/index.action>`_ (Apple ID needed).
-
-.. warning::
-
-    Please choose Xcode SDK version 4.2 or lower, because the current version has some compatibility problems with the SeqAn build system.
-
-After installing the Xcode SDK, please install MacPorts following `these instructions <http://www.macports.org/install.php>`_.
-To check that the MacPorts install was successful, enter the following on your shell.
-If the ``port`` program is found then you can go on.
-
-.. code-block:: console
-
-    # port info
-
-Next, install `CMake <http://cmake.org>`_ and `Git`__  using the ``port`` command.
-
-.. __: http://git-scm.com
-
-.. code-block:: console
-
-    # port install cmake
-    # port install git
-
-Install
-~~~~~~~
-
-.. important::
-	
-	In the following we describe the easiest way to get up and running with SeqAn.
-	This is especially recommended for novel users working through the tutorials in the beginning.
-	If you are planning to contribute to SeqAn at any point, you need to read the :ref:`infrastructure-seqan-git-workflow` instructions first. 
-	This manual will guide you through the SeqAn workflow required to submit bug-fixes and new features.
-
-Go to the directory you want to keep your SeqAn install in (e.g. ``Development`` in your home folder).
-
-.. code-block:: console
-
-    ~ # cd $HOME/Development
-
-Then, use git to retrieve the current SeqAn source-base:
-
-.. code-block:: console
-
-    # Development # git clone https://github.com/seqan/seqan.git seqan-src
-
-You can now find the whole tree with the SeqAn library and applications in ``$HOME/Development/seqan-src``.
-
-.. tip::
-
-    By default git creates a local branch pointing to the stable master branch.
-    This branch is only updated when hot fixes are applied or a new release is published.
-    
-    If you want to have access to regular updates and new features you can switch to the ``develop`` branch of SeqAn:
-    
-    .. code-block:: console
-
-		# Development # cd seqan-src
-		# Development/seqan-src # git checkout -b develop origin/develop
-	
-    For more help on git, please read the documentation ``git help`` and consult the homepage `Git`__.
-
-.. __: http://git-scm.com/
-
-.. warning::
-
-    Note that the state of develop is not guaranteed to be stable at any time.
-
-A First Build
-~~~~~~~~~~~~~
-
-Next, we will use CMake to create Makefiles for building the applications, demo programs (short: demos), and tests.
-For this, we create a separate folder ``seqan-build`` on the same level as the folder ``seqan-src``.
-
-.. code-block:: console
-
-    # Development # mkdir seqan-build
-
-When using Makefiles, we have to create separate Makefiles for debug builds (including debug symbols with no optimization) and release builds (debug symbols are stripped, optimization is high).
-Thus, we create a subdirectory for each build type.
-We start with debug builds since this is best for learning: Debug symbols are enabled and assertions are active
-
-.. warning::
-
-    Compiling ''debug mode yields very slow binaries''' since optimizations are disabled.
-    Compile your programs in release mode if you want to run them on large data sets.
-
-    The reason for disabling optimizations in debug mode is that the compiler performs less inlining and does not optimize variables away.
-    This way, debugging your programs in a debugger becomes much easier.
-
-.. code-block:: console
-
-    # Development # mkdir seqan-build/debug
-    # Development # cd seqan-build/debug
-
-The resulting directory structure will look as follows.
-
-::
-
-       ~/Development
-         ├─ seqan-src          source directory
-         └─ seqan-build
-            └─ debug           build directory with debug symbols
-
-Within the **build directory** ``debug``, we use CMake to generate Makefiles in *Debug* mode.
-
-.. code-block:: console
-
-    # debug # cmake ../../seqan-src -DCMAKE_BUILD_TYPE=Debug
-
-We can then build one application, for example RazerS 2:
-
-.. code-block:: console
-
-    # debug # make razers2
-
-Optionally, we could also use "``make``" instead of "``make razers2``". However, this builds all apps, demos and tests, which **can take a long time and is not really necessary**.
-
-Hello World!
-~~~~~~~~~~~~
-
-Now it is time to write your first little application in SeqAn.
-Go to the demos folder in the ``seqan-src`` directory and create a new folder with the same name as your username.
-In this tutorial we use ``seqan_dev`` as the username.
-Create a new cpp file called ``hello_seqan.cpp``
-
-.. code-block:: console
-	
-    # debug # cd ../../seqan-src/demos
-    # demos # mkdir seqan_dev; cd seqan_dev
-    # seqan_dev # echo "" > hello_seqan.cpp
-
-Now, we go back into the build directory and call CMake again to make it detect the new source file.
-
-.. code-block:: console
-
-    # seqan_dev # cd ../../../seqan-build/debug
-    # debug # cmake .
-
-
-.. tip::
-
-    When and where do you have to call CMake?
-
-    CMake is a cross-platform tool for creating and updating build files (IDE projects or Makefiles).
-    When you first create the build files, you can configure things such as the build mode or the type of the project files.
-
-    Whenever you add a new application, a demo or a test or whenever you make changes to ``CMakeLists.txt`` you need to call CMake again.
-    Since CMake remembers the settings you chose the first time you called CMake in a file named ``CMakeCache.txt``, all you have to do is to switch to your ``debug`` or ``release`` build directory and call "``cmake .``" in there.
-
-    .. code-block: console
-
-       ~ # cd $HOME/Development/seqan-build/debug
-       # debug # cmake .
-
-    Do not try to call "``cmake .``" from within the ``seqan-src`` directory **but only from your build directory**.
-
-Open the file ``demos/seqan_dev/hello_seqan.cpp`` (in your ``seqan-src`` directory) with a text editor and replace its contents with the following:
-
-.. code-block:: cpp
-
-    #include <iostream>
-    #include <seqan/sequence.h>  // CharString, ...
-    #include <seqan/stream.h>    // to stream a CharString into cout
-
-    int main(int, char const **)
-    {
-        std::cout << "Hello World!" << std::endl;
-        seqan::CharString mySeqAnString = "Hello SeqAn!";
-        std::cout << mySeqAnString << std::endl;
-        return 1;
-    }
-
-Afterwards, you can simply compile and run your application:
-
-.. code-block:: console
-
-    # debug # make demo_seqan_dev_hello_seqan
-    # debug # ./bin/demo_seqan_dev_hello_seqan
-
-On completion, you should see the following output:
-
-.. code-block:: console
-
-    Hello World!
-    Hello SeqAn!
-
-Congratulations, you have successfully created your first application within the SeqAn build system with Makefiles!
-
-Further Steps
-~~~~~~~~~~~~~
-
-As a next step, we suggest the following:
-
-* :ref:`Continue with the Tutorials <tutorial>`
-* For the tutorial, using the SeqAn build system is great!
-  If you later want to use SeqAn as a library, have a look at :ref:`build-manual-integration-with-your-own-build-system`.
-* If you plan to contribute to SeqAn, please read the following document: :ref:`infrastructure-seqan-git-workflow`.
diff --git a/manual/source/Tutorial/GettingStarted/MacOsX.png b/manual/source/Tutorial/GettingStarted/MacOsX.png
deleted file mode 100644
index b8eff31..0000000
Binary files a/manual/source/Tutorial/GettingStarted/MacOsX.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/MacTerminal.png b/manual/source/Tutorial/GettingStarted/MacTerminal.png
deleted file mode 100644
index d4469ff..0000000
Binary files a/manual/source/Tutorial/GettingStarted/MacTerminal.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/MacXcode.rst b/manual/source/Tutorial/GettingStarted/MacXcode.rst
deleted file mode 100644
index d24e7ba..0000000
--- a/manual/source/Tutorial/GettingStarted/MacXcode.rst
+++ /dev/null
@@ -1,256 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _tutorial-getting-started-mac-xcode:
-
-Getting Started With SeqAn On Mac OS X Using Xcode
---------------------------------------------------
-
-This article describes how to get started with SeqAn on Mac OS X using XCode.
-
-We assume that you want to use `MacPorts <http://www.macports.org/>`_ for installing some dependencies (MacPorts is a package management system that easily allows you to install Unix software on OS X).
-Of course, if you want to use a different way for installing the dependencies (e.g. using Homebrew) then you are free to do so.
-
-Prerequisites
-~~~~~~~~~~~~~
-
-First, you have to install the Apple `Xcode via Apple Developer <https://developer.apple.com/downloads/index.action>`_ or preferably `Xcode via the Mac App Store <http://itunes.apple.com/de/app/xcode/id497799835?mt=12>`_.
-
-After having done so you also need to install the **Command Line Tools**.
-Open Xcode, go to ``Xcode > Preferences...`` or simply press ``⌘`` to open the preferences. Switch to the ``Downloads`` tab.
-In the shown table you will find the Command Line Tools.
-Click on ``Install`` to install them.
-
-.. image:: download-command-line-tools.png
-
-.. warning::
-
-   If you already had Xcode installed and you **updated to Xcode 4.3** it is likely that ``xcode-select`` is not pointing to the new Xcode location.
-
-   To make sure you can properly work with Xcode 4.3 please open your ``Terminal`` and type:
-
-   .. code-block:: console
-
-      ~ # xcode-select -print-path
-
-The command should output ``/Applications/Xcode.app/Contents/Developer``.
-If it doesn't please note down the actual output (for backup purpose) and type in:
-
-.. code-block:: console
-
-    ~ # sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
-
-This will configure ``xcode-select`` properly and make it work with SeqAn.
-
-.. warning::
-
-    .. todo:: Put patched version somewhere.
-
-    With the current MacPort version of CMake it is no more possible to open sub projects.
-    Either open only the root project ``seqan.xcodeproj`` or install our `patched version of CMake <http://ftp.seqan.de/manual_files/seqan-1.4/cmake-2.8.9.20120903-g6ef858-dirty-Darwin-i386.dmg>`_ instead.
-
-    Note: The package installs the binary at ``/usr/usr/bin/cmake``.
-    Please add the following line to your ``~/.profile`` file:
-
-    .. code-block:: console
-
-       export PATH=/usr/usr/bin:$PATH
-
-After installing the Xcode SDK, please install MacPorts following `these instructions <http://www.macports.org/install.php>`_.
-To check that the MacPorts install was successful, enter the following on your shell.
-If the ``port`` program is found then you can go on.
-
-.. code-block:: console
-
-    ~ # port info
-
-Next, install `Git <http://git-scm.com/>`_ using the ``port`` command.
-
-.. code-block:: console
-
-    ~ # sudo port install git
-
-There is a problem with the current version of CMake. Please read
-**Problem with CMake** box above and either install our patched version
-of CMake (see attachments) or the current MacPort version which has a
-problem with sub projects:
-
-.. code-block:: console
-
-    ~ # sudo port install cmake
-
-Install
-~~~~~~~
-
-.. important::
-	
-	In the following we describe the easiest way to get up and running with SeqAn.
-	This is especially recommended for novel users working through the tutorials in the beginning.
-	If you are planning to contribute to SeqAn at any point, you need to read the :ref:`infrastructure-seqan-git-workflow` instructions first. 
-	This manual will guide you through the SeqAn workflow required to submit bug-fixes and new features.
-
-Go to the directory you want to keep your SeqAn install in (e.g. ``Development`` in your home folder).
-
-.. code-block:: console
-
-    ~ # cd $HOME/Development
-
-Then, use git to retrieve the current SeqAn source-base:
-
-.. code-block:: console
-
-    # Development # git clone https://github.com/seqan/seqan.git seqan-src
-
-You can now find the whole tree with the SeqAn library and applications in ``$HOME/Development/seqan-src``.
-
-.. tip::
-
-    By default git creates a local branch pointing to the stable master branch.
-    This branch is only updated when hot fixes are applied or a new release is published.
-    
-    If you want to have access to regular updates and new features you can switch to the ``develop`` branch of SeqAn:
-    
-    .. code-block:: console
-
-		# Development # cd seqan-src
-		# seqan-src # git checkout -b develop origin/develop
-	
-    For more help on git, please read the documentation ``git help`` and consult the homepage `Git <http://git-scm.com/>`_.
-
-
-.. warning::
-
-    Note that the state of develop is not guaranteed to be stable at any time.
-
-A First Build
-~~~~~~~~~~~~~
-
-Next, we will use CMake to create an Xcode project for building the
-applications, demo programs (short: demos), and tests. For this, we
-create a separate folder ``seqan-build`` on the same level as the
-folder ``seqan-src``.
-
-.. code-block:: console
-
-    # Development # mkdir -p seqan-build/xcode
-
-The resulting directory structure will look as follows.
-
-::
-
-       ~/Development
-         ├─ seqan-src             source directory
-         └┬ seqan-build
-          └─ xcode                  build directory
-
-Within the **build directory** ``xcode``, we call CMake to generate
-Xcode project files.
-
-.. code-block:: console
-
-    # Development # cd seqan-build/xcode
-    # xcode # cmake ../../seqan-src -G Xcode
-
-This will generate several Xcode project files in ``xcode``, namely for
-the SeqAn applications, demos, and tests.
-
-Now, open the project for the applications:
-
-.. code-block:: console
-
-    # xcode # open seqan.xcodeproj
-
-Xcode starts and will look like this:
-
-.. image:: xcode_startup.png
-
-Now we are ready to compile and run our first application. 
-For this, please choose the target ``razers2`` in the top left corner of your Xcode application. 
-When selected click on ``Run`` just left to where you chose the target.
-
-.. image:: razers2_selection.png
-
-Optionally, we could also use "``ALL_BUILD``" instead of "``razers2``".
-However, this **can take a long time and is not really necessary**.
-
-After having compiled and run ``razers2`` your Xcode should display ``razers2``'s output in the bottom right area.
-
-.. image:: razers2_built.png
-
-Hello World!
-~~~~~~~~~~~~
-
-Now it is time to write your first little application in SeqAn.
-Go to the demos folder in the ``seqan-src`` directory and create a new folder with the same name as your username.
-In this tutorial we use ``seqan_dev`` as the username.
-Create a new cpp file called ``hello_seqan.cpp``
-
-.. code-block:: console
-	
-    # xcode # cd ../../seqan-src/demos
-    # demos # mkdir seqan_dev; cd seqan_dev
-    # seqan_dev # echo "" > hello_seqan.cpp
-
-Now, we go back into the build directory and call CMake again to make it detect the added app.
-
-.. code-block:: console
-
-    # seqan-src # cd ../../../seqan-build/xcode
-    # xcode # cmake .
-
-.. tip::
-
-    When and where do you have to call CMake?
-
-    CMake is a cross-platform tool for creating and updating build files (IDE projects or Makefiles).
-    When you first create the build files, you can configure things such as the build mode or the type of the project files.
-
-    Whenever you add a new application, a demo or a test or whenever you make changes to ``CMakeLists.txt`` you need to call CMake again.
-    Since CMake remembers the settings you chose the first time you called CMake in a file named ``CMakeCache.txt``, all you have to do is to switch to your ``debug`` or ``release`` build directory and call "``cmake .``" in there.
-
-   .. code-block:: console
-
-       ~ # cd $HOME/Development/seqan-build/xcode
-       debug # cmake .
-
-   Do not try to call "``cmake .``" from within the ``seqan-src`` directory **but only from your build directory**.
-
-Select the file ``/Sources/demo_seqan_dev_hello_seqan/Source Files/hello_seqan.cpp`` in Xcode and open it:
-
-.. image:: first_demo_inital.png
-
-Replace its contents with the following:
-
-.. code-block:: cpp
-
-    #include <iostream>
-    #include <seqan/sequence.h>  // CharString, ...
-    #include <seqan/stream.h>    // to stream a CharString into cout
-
-    int main(int, char const **)
-    {
-        std::cout << "Hello World!" << std::endl;
-        seqan::CharString mySeqAnString = "Hello SeqAn!";
-        std::cout << mySeqAnString << std::endl;
-        return 1;
-    }
-
-Afterwards, you select the run target accordingly and compile and run your application by clicking on the ``Run`` button on the very top left corner in Xcode.
-
-On completion, you should see the following output:
-
-.. image:: first_demo_run.png
-
-Congratulations, you have successfully created your first application within the SeqAn build system with Xcode!
-
-Further Steps
-~~~~~~~~~~~~~
-
-As a next step, we suggest the following:
-
-* :ref:`Continue with the Tutorials <tutorial>`
-* For the tutorial, using the SeqAn build system is great!
-  If you later want to use SeqAn as a library, have a look at :ref:`build-manual-integration-with-your-own-build-system`.
-* If you plan to contribute to SeqAn, please read the following document: :ref:`infrastructure-seqan-git-workflow`.
\ No newline at end of file
diff --git a/manual/source/Tutorial/ParsingCommandLineArguments.rst b/manual/source/Tutorial/GettingStarted/ParsingCommandLineArguments.rst
similarity index 93%
rename from manual/source/Tutorial/ParsingCommandLineArguments.rst
rename to manual/source/Tutorial/GettingStarted/ParsingCommandLineArguments.rst
index 7b7dd0d..80cc333 100644
--- a/manual/source/Tutorial/ParsingCommandLineArguments.rst
+++ b/manual/source/Tutorial/GettingStarted/ParsingCommandLineArguments.rst
@@ -1,12 +1,11 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-parsing-command-line-arguments:
+.. _tutorial-getting-started-parsing-command-line-arguments:
 
 Parsing Command Line Arguments
-------------------------------
+==============================
 
 Learning Objective
   You will learn how to use the :dox:`ArgumentParser` class to parse command line arguments.
@@ -19,7 +18,7 @@ Duration
   30-60 min
 
 Prerequisites
-  :ref:`tutorial-first-steps-in-seqan`, :ref:`tutorial-sequences`, familiarity with building SeqAn apps
+  :ref:`tutorial-getting-started-first-steps-in-seqan`, :ref:`tutorial-datastructures-sequences`, familiarity with building SeqAn apps
 
 The simplest possible and also most flexible interface to a program is through the command line. This tutorial explains how to parse the command line using the SeqAn library's :dox:`ArgumentParser` class.
 
@@ -29,7 +28,7 @@ Using this class will give you the following functionality:
 * Simple verification of arguments (e.g. within a range, one of a list of allowed values).
 * Automatically generated and nicely formatted help screens when called with ``--help``.
   You can also export this help to HTML and man pages.
-* In the future, you will be able to automatically generate nodes for
+* You are able to automatically generate nodes for
   workflow engines such as `KNIME <http://knime.org/>`_ or
   `Galaxy <http://en.wikipedia.org/wiki/Galaxy_(computational_biology)>`_.
 
@@ -46,15 +45,15 @@ The program has three types of command line options/arguments:
 
 * Two **flag options** ``--uppercase`` and ``--lowercase`` that select the operation.
 * One **(value) option** ``-i`` that selects the period of the characters that the operation is to be applied to and is given a
-  value (``2`` in the first call, ``1`` in the second).
-* One **(positional) argument** with the text to modify (above ``"This is some text!"``.
+  value (``2`` in the first call above, ``1`` in the second).
+* One **(positional) argument** with the text to modify (``"This is some text!"`` in both calls above.
   In contrast to options, arguments are not identified by their names but by their position.
 
 Command line options can have a **long name** (e.g. ``--lowercase``)
 and/or a **short name** (e.g. ``-i``).
 
 A First Working Example
-^^^^^^^^^^^^^^^^^^^^^^^
+-----------------------
 
 The following small program will (1) setup a :dox:`ArgumentParser` object named ``parser``, (2) parse the command line, (3) exit the program if there were errors or the user requested a functionality that is already built into the command line parser, and (4) printing the settings given from the command line.
 Such functionality is printing the help, for example.
@@ -107,7 +106,7 @@ This is not surprising since we did not tell the argument parser about this opti
    modify_string: illegal option -- L
 
 A Detailed Look
-^^^^^^^^^^^^^^^
+---------------
 
 Let us look at this program in detail now. The required SeqAn module is ``seqan/arg_parse.h``.
 After inclusion, we can create an :dox:`ArgumentParser` object:
@@ -117,7 +116,7 @@ After inclusion, we can create an :dox:`ArgumentParser` object:
 
 Then, we define a positional argument using the function :dox:`ArgumentParser#addArgument`.
 The function accepts the parser and an :dox:`ArgParseArgument` object.
-We call the :dox:`ArgParseArgument` constructor with three parameters: the type of the argument (a string), and a label for the documentation.
+We call the :dox:`ArgParseArgument` constructor with two parameters: the type of the argument (a string), and a label for the documentation.
 
 .. includefrags:: demos/tutorial/parsing_command_line_arguments/example1_detailed.cpp
    :fragment: argument
@@ -132,6 +131,31 @@ The :dox:`ArgParseOption` constructor is called in two different variants.
 Within the first :dox:`ArgumentParser#addOption` call, we construct an integer option with a short and long name, a documentation string, and give it the label "INT".
 The second option is a flag (indicated by not giving a type) with a short and a long name and a description.
 
+Next, we parse the command line using :dox:`ArgumentParser#parse`.
+
+.. includefrags:: demos/tutorial/parsing_command_line_arguments/example1_detailed.cpp
+   :fragment: parse
+
+We then check the result of the parsing operation.
+The result is ``seqan::ArgumentParser::PARSE_ERROR`` if there was a problem with the parsing.
+Otherwise, it is ``seqan::ArgumentParser::PARSE_OK`` if there was no problem and no special functionality of the argument parser was triggered.
+The command line parser automatically adds some arguments, such as ``--help``.
+If such built-in functionality is triggered, it will return a value that is neither ``PARSE_ERROR`` nor ``PARSE_OK``.
+
+The following two lines have the following behaviour.
+If the parsing went through and no special functionality was triggered then the branch is not taken.
+Otherwise, the method ``main()`` is left with ``1`` in case of errors and with ``0`` in case special behaviour was triggered (e.g. the help was printed).
+
+.. includefrags:: demos/tutorial/parsing_command_line_arguments/example1_detailed.cpp
+   :fragment: check
+
+Finally, we access the values from the command line using the :dox:`ArgumentParser`.
+The function :dox:`ArgumentParser#getOptionValue` allows us to access the values from the command line after casting into C++ types.
+The function :dox:`ArgumentParser#isSet` allows us to query whether a given argument was set on the command line.
+
+.. includefrags:: demos/tutorial/parsing_command_line_arguments/example1_detailed.cpp
+   :fragment: print
+
 .. tip::
 
     List Arguments and Options.
@@ -159,31 +183,6 @@ Consider this program call:
 For example, if the program has three arguments and the first one is a list then ``arg0`` and ``arg1`` would be the content of the first argument.
 If it has two arguments and the last one is a list then ``arg1``, ``arg2``, and ``arg3`` would be the content of the last argument.
 
-Next, we parse the command line using :dox:`ArgumentParser#parse`.
-
-.. includefrags:: demos/tutorial/parsing_command_line_arguments/example1_detailed.cpp
-   :fragment: parse
-
-We then check the result of the parsing operation.
-The result is ``seqan::ArgumentParser::PARSE_ERROR`` if there was a problem with the parsing.
-Otherwise, it is ``seqan::ArgumentParser::PARSE_OK`` if there was no problem and no special functionality of the argument parser was triggered.
-The command line parser automatically adds some arguments, such as ``--help``.
-If such built-in functionality is triggered, it will return a value that is neither ``PARSE_ERROR`` nor ``PARSE_OK``.
-
-The following two lines have the following behaviour.
-If the parsing went through and no special functionality was triggered then the branch is not taken.
-Otherwise, the method ``main()`` is left with ``1`` in case of errors and with ``0`` in case special behaviour was triggered (e.g. the help was printed).
-
-.. includefrags:: demos/tutorial/parsing_command_line_arguments/example1_detailed.cpp
-   :fragment: check
-
-Finally, we access the values from the command line using the :dox:`ArgumentParser`.
-The function :dox:`ArgumentParser#getOptionValue` allows us to access the values from the command line after casting into C++ types.
-The function :dox:`ArgumentParser#isSet` allows us to query whether a given argument was set on the command line.
-
-.. includefrags:: demos/tutorial/parsing_command_line_arguments/example1_detailed.cpp
-   :fragment: print
-
 Assignment 1
 """"""""""""
 
@@ -215,7 +214,7 @@ Assignment 2
      As for the ``--uppercase`` option, the program should print whether the flag was set or not.
 
    Hint
-     Copy the two lines for defining the <tt>--uppercase</tt> option and replace the strings appropriately.
+     Copy the two lines for defining the ``--uppercase`` option and replace the strings appropriately.
 
    Solution
      .. container:: foldable
@@ -223,7 +222,7 @@ Assignment 2
         .. includefrags:: demos/tutorial/parsing_command_line_arguments/assignment2_solution.cpp
 
 Using Default Values
-^^^^^^^^^^^^^^^^^^^^
+--------------------
 
 Would it not be nice if we could specify a default value for ``--period``, so it is ``1`` if not specified and simply each character is modified?
 We can do this by using the function :dox:`ArgumentParser#setDefaultValue`:
@@ -255,7 +254,7 @@ Assignment 3
           .. includefrags:: demos/tutorial/parsing_command_line_arguments/assignment3_solution.cpp
 
 Best Practice: Using Option Structs
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+-----------------------------------
 
 Instead of just printing the options back to the user, we should actually store them.
 To follow best practice, we should not use global variables for this but instead pass them as parameters.
@@ -263,32 +262,23 @@ To follow best practice, we should not use global variables for this but instead
 We will thus create a ``ModifyStringOptions`` struct that encapsulates the settings the user can give to the ``modify_string`` program.
 Note that we initialize the variables of the struct with initializer lists, as it is best practice in modern C++.
 
-The <tt>ModifyStringOptions</tt> struct's definition is shown below.
-Click ''more...'' to see the whole updated program.
-
-.. code-block:: cpp
+The ``ModifyStringOptions`` struct's looks as follows:
 
-   struct ModifyStringOptions
-   {
-       unsigned period;
-       bool toUppercase;
-       bool toLowercase;
-       seqan::CharString text;
+.. includefrags:: demos/tutorial/parsing_command_line_arguments/example_with_struct.cpp
+      :fragment: struct
 
-       ModifyStringOptions() :
-	   period(1), toUppercase(false), toLowercase(false)
-       {}
-   };
+Click **more...** to see the whole updated program.
 
 .. container:: foldable
 
    .. includefrags:: demos/tutorial/parsing_command_line_arguments/example_with_struct.cpp
+          :fragment: full
 
 Best Practice: Wrapping Parsing In Its Own Function
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+---------------------------------------------------
 
 As a next step towards a cleaner program, we should extract the argument parsing into its own function, e.g. call it ``parseCommandLine()``.
-Following the style guide (:ref:`style-guide-cpp`), we first pass the output parameter, then the input parameters.
+Following the style guide (:ref:`infra-contribute-style-cpp`), we first pass the output parameter, then the input parameters.
 The return value of our function is a ``seqan::ArgumentParser::ParseResult`` such that we can differentiate whether the program can go on, the help was printed and the program is to exit with success, or there was a problem with the passed argument and the program is to exit with an error code.
 
 Also, note that we should check that the user cannot specify both to-lowercase and to-uppercase.
@@ -303,7 +293,7 @@ Click **more...** to see the updated program.
 
 
 Feature-Complete Example Program
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+--------------------------------
 
 The command line parsing part of our program is done now.
 Let us now add a function ``modifyText()`` that is given a ``ModifyStringOptions`` object and text and modifies the text.
@@ -313,7 +303,7 @@ We simply use the C standard library functios ``toupper()`` and ``tolower()`` fr
 
 
 Setting Restrictions
-^^^^^^^^^^^^^^^^^^^^
+--------------------
 
 One nice feature of the :dox:`ArgumentParser` is that it is able to perform some simple checks on the parameters.
 We can:
@@ -325,7 +315,7 @@ We can:
 In this section, we will give some examples.
 
 Setting Minimum and Maximum Values
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+""""""""""""""""""""""""""""""""""
 
 The functions :dox:`ArgParseArgument#setMinValue` and :dox:`ArgParseArgument#setMaxValue` allow to give a smallest and/or largest value for a given option.
 Of course, this only works with integer- and double-typed command line options.
@@ -361,9 +351,8 @@ Assignment 4
 
          .. includefrags:: demos/tutorial/parsing_command_line_arguments/assignment4_solution.cpp
 
-
 Marking Options as Required
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
+"""""""""""""""""""""""""""
 
 We can mark options as being required using the function :dox:`ArgumentParser#setRequired`:
 
@@ -377,7 +366,7 @@ We can mark options as being required using the function :dox:`ArgumentParser#se
    setRequired(parser, "i");
 
 Setting List of Valid Values
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+""""""""""""""""""""""""""""
 
 Sometimes, it is useful to give a list of valid values for a command line option.
 You can give it as a space-separated list in a string to :dox:`ArgumentParser#setValidValues`.
@@ -393,12 +382,12 @@ The check whether the value from the command line is valid is case sensitive.
     setValidValues(parser, "distance-model", "HAMMING EDIT");
 
 More Option and Argument Types
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+------------------------------
 
 There are two slightly more special option and argument types: paths to input/output files and tuple values.
 
 Input/Output File Names
-^^^^^^^^^^^^^^^^^^^^^^^
+"""""""""""""""""""""""
 
 We could use ``ArgParseArgument::STRING`` to specify input and output files.
 However, there are two special argument/option types ``ArgParseArgument::INPUT_FILE`` and ``ArgParseArgument::OUTPUT_FILE`` that are more suitable:
@@ -449,7 +438,7 @@ Assignment 5
     Type
       Reproduction
     Objective
-      Replace the argument ``TEXT`` by a a command line option ``-I``/``--input-file`` in the program above.
+      Replace the argument ``TEXT`` by a command line option ``-I``/``--input-file`` in the program above.
       The program should then read in the text instead of using the command line argument.
 
     Hint
@@ -461,7 +450,7 @@ Assignment 5
          .. includefrags:: demos/tutorial/parsing_command_line_arguments/assignment5_solution.cpp
 
 Tuples
-^^^^^^
+""""""
 
 We can define an :dox:`ArgParseArgument` and :dox:`ArgParseOption` to be a tuple with a fixed number of arguments.
 For example, an integer pair (tuple with two entries) could describe a range:
@@ -512,9 +501,8 @@ Assignment 6
 
          .. includefrags:: demos/tutorial/parsing_command_line_arguments/assignment6_solution.cpp
 
-
 Embedding Rich Documentation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+----------------------------
 
 Another very useful feature of :dox:`ArgumentParser` is that you can embed rich documentation into your programs.
 You can set the short description, the version string, date, synopsis and add text documentation settings.
@@ -550,7 +538,7 @@ This information will go to the Synopsis section of the program help.
     ``I`` selects italic text (underlined on the shell), ``B`` selects bold and ``P`` resets the formatting to normal text.
     These font operators are legacies of man pages from Unix and offered a simple-to-implement solution to text formatting.
 
-    For example, ``"Words \\fBwere\\fP made for \\fIbeing\\fP written!"`` would result in the formatted string "Words **were** made for ''being'' written!".
+    For example, ``"Words \\fBwere\\fP made for \\fIbeing\\fP written!"`` would result in the formatted string "Words **were** made for *being* written!".
 
     Note that formatting the command line relies on `ANSI escape codes <http://en.wikipedia.org/wiki/ANSI_escape_code>`_ which is not supported by modern Windows versions.
     If you are using Windows, you will not see bold or underlined text.
diff --git a/manual/source/Tutorial/GettingStarted/VisualStudio2010.png b/manual/source/Tutorial/GettingStarted/VisualStudio2010.png
deleted file mode 100644
index ca1cff9..0000000
Binary files a/manual/source/Tutorial/GettingStarted/VisualStudio2010.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/Windows7.png b/manual/source/Tutorial/GettingStarted/Windows7.png
deleted file mode 100644
index 5396b76..0000000
Binary files a/manual/source/Tutorial/GettingStarted/Windows7.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/WindowsVisualStudio.rst b/manual/source/Tutorial/GettingStarted/WindowsVisualStudio.rst
deleted file mode 100644
index 9bc39e0..0000000
--- a/manual/source/Tutorial/GettingStarted/WindowsVisualStudio.rst
+++ /dev/null
@@ -1,253 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _tutorial-getting-started-windows-visual-studio:
-
-Getting Started With SeqAn On Windows Using Visual Studio
----------------------------------------------------------
-
-This tutorial explains how to get started with SeqAn on Windows using Visual Studio.
-
-We use Visual Studio 12 here, but you should be able to easily follow the tutorial if you are using any other supported version (9, 10, 11).
-
-Prerequisites
-~~~~~~~~~~~~~
-
-We assume that you have the following software installed:
-
-* `GitHub for Windows <https://windows.github.com>`_ for version control and retrieving
-* Microsoft Visual Studio for compiling C++ code.
-  If you do not have Visual Studio yet, you can download the `free Visual Studio Express Edition from Microsoft <http://www.microsoft.com/express/>`_.
-  Note that at some point, you can pick between the Express Edition and a demo of the full version.
-  Pick the Express Edition here for a smaller and continuously free version.
-* `CMake <http://www.cmake.org/cmake/resources/software.html>`_ for generating project files
-* `Python 2.x <http://python.org/download/>`_ for the code generator.
-  Note that Python 3 will not work, thus use a Python 2 version.
-
-Also, we assume that your user name is ``seqan_dev``.
-Replace ``seqan_dev`` by your actual user name in the steps below.
-
-.. warning::
-
-    When installing CMake and Python, make sure to let the installers add the paths to the ``cmake.exe`` and ``python.exe`` binaries to your ``PATH`` environment variable.
-
-Install
-~~~~~~~
-
-.. important::
-	
-	In the following we describe the easiest way to get up and running with SeqAn.
-	This is especially recommended for novel users working through the tutorials in the beginning.
-	If you are planning to contribute to SeqAn at any point, you need to read the :ref:`infrastructure-seqan-git-workflow` instructions first. 
-	This manual will guide you through the SeqAn workflow required to submit bug-fixes and new features.
-
-Open a new Git Shell (``Start > All Programs > GitHub, Inc > Git Shell``).
-Note that within in the shell you can use the common unix commands to operate within the filesystem and more.
-Go to the directory you want to keep your SeqAn install in (e.g. ``Development`` in your home folder).
-
-.. code-block:: console
-
-    ~ # cd Development
-
-Then, use git to retrieve the current SeqAn source-base:
-
-.. code-block:: console
-
-    # Development # git clone https://github.com/seqan/seqan.git seqan-src
-
-You can now find the whole tree with the SeqAn library and applications in the explorer in the following path ``C:\Users\seqan_dev\Development\seqan-src``.
-
-.. tip::
-
-    By default git creates a local branch pointing to the stable master branch.
-    This branch is only updated when hot fixes are applied or a new release is published.
-    
-    If you want to have access to regular updates and new features you can switch to the ``develop`` branch of SeqAn:
-    
-    .. code-block:: console
-
-		# Development # cd seqan-src
-		# seqan-src # git checkout -b develop origin/develop
-	
-    For more help on git, please read the documentation ``git help`` and consult the homepage `Git`__.
-
-.. __: http://git-scm.com/
-
-A First Build
-~~~~~~~~~~~~~
-
-Next, we will use CMake to create a Visual Studio 12 project for building the applications, demo programs (short: demos), and tests.
-
-Within the Git Shell go back to the parent directory of ``seqan-src``.
-There, we create a separate folder ``seqan-build``:
-
-.. code-block:: console
-
-    # seqan-src # cd ../
-    # Development # mkdir seqan-build
-
-In the future, we might create a different set of project files (e.g. when we upgrade our Visual Studio version or switch to 64 bit builds).
-Thus, we create a subdirectory called ``release`` for release builds and within this folder we create a subfolder called ``vs12`` for our Visual Studio 12 project.
-
-.. code-block:: console
-
-    # Development # cd seqan-build
-    # seqan-build # mkdir -p debug-vs12
-
-The resulting directory structure will look as follows.
-
-::
-
-       ~/Development
-         ├─ seqan-src                    source directory
-         └─ seqan-build
-            └─ debug-vs12                Visual Studio 12 project
-
-Within the **build directory** ``debug-vs12``, we call CMake to generate the Visual Studio 12 project:
-
-.. code-block:: console
-
-    # debug-vs12 # cmake ../../seqan-src -G "Visual Studio 12 2013" -DCMAKE_BUILD_TYPE=Debug
-
-.. tip::
-
-   It is possible to use a different version or multiple versions of Visual Studio and different build types.
-
-   To build a release version for Visual Studio 10 project files follow the subsequent steps:
-   
-   .. code-block:: console
-       
-       # Development # cd seqan-build
-       # seqan-build # mkdir release-vs10
-       # seqan-build # cd release-vs10
-       
-   Then, use the appropriate generator:
-
-   .. code-block:: console
-
-      # release-vs10 # cmake ../../seqan-src -G "Visual Studio 10 2010"
-
-   Also, if you want to create 64 bit builds, you need to use another generator.
-   Changing generators in an existing project directory is not possible.
-
-    * If you use another version of Visual Studio, you can find out the correct parameter by typing ``cmake --help``.
-    * If you plan to use different versions of Visual Studio then follow :ref:`how-to-use-parallel-build-directories`.
-    *  Note that you have to choose the `Win64` variants of the `Visual Studio` generators if you want to build 64 bit binaries.
-
-Now, you can open the project file from the Windows explorer: go to the ``C:\Users\seqan_dev\Development\seqan-build\debug-vs12\apps`` directory and double click on the file ``seqan_apps.sln``.
-In the ``Solution Explorer`` you will find all applications of the SeqAn core.
-
-.. image:: vs-solution-explorer.png
-
-As an example you can open, compile, and execute the program RazerS 2.  
-Click on the ``+``/``▷`` in front of ``razers2`` in the Solution Explorer and also on the ``+``/``▷`` in front of ``Source Files``.
-Double click on the file ``razers.cpp`` to open it in the main window.
-Right click on ``razers2`` in the Solution Explorer and choose ``Set as StartUp Project`` from the context menu.
-
-.. image:: vs-startup-project.png
-
-To compile and execute RazerS 2, choose ``Debug > Start Without Debugging`` from the main menu or press ``Ctrl`` + ``F5``.
-On successful compilation and execution, a terminal windows should pop up and display:
-
-.. code-block:: console
-
-    ***********************************************************
-    *** RazerS - Fast Read Mapping with Sensitivity Control ***
-    ***          (c) Copyright 2009 by David Weese          ***
-    ***********************************************************
-    Usage: razers2.exe [OPTION]... <GENOME FILE> <READS FILE>
-           razers2.exe [OPTION]... <GENOME FILE> <MP-READS FILE1> <MP-READS FILE2>
-    Try 'razers2.exe --help' for more information.
-    Press any key to continue . . .
-
-.. tip ::
-
-    Starting with and without Debugging in Visual Studio
-
-    Starting a program without debugger in Visual Studio will make the program wait for the user pressing a key.
-    This is very useful for inspecting the output.
-    In Debug mode, the program does not wait when executed and the window simply disappears.
-    The reason for this is that when using the debugger, the user is expected to set a breakpoint.
-
-Hello World!
-~~~~~~~~~~~~
-
-Now it is time to write your first little application within SeqAn.
-Go to the demos folder in the ``seqan-src`` directory and create a new folder with the same name as your username.
-In this tutorial we use ``seqan_dev``.
-Create a new cpp file called ``hello_seqan.cpp``
-
-.. code-block:: console
-	
-    # debug-vs12 # cd ../../seqan-src/demos
-    # demos # mkdir seqan_dev; cd seqan_dev
-    # seqan_dev # echo "" > hello_seqan.cpp
-
-Now, we go back into the build directory and call CMake again to make it detect the new source file.
-
-.. code-block:: console
-
-    # seqan-src # cd ../../../seqan-build/debug-vs12
-    # debug-vs12 # cmake .
-
-.. tip::
-
-    When and where do you have to call CMake?
-
-    CMake is a cross-platform tool for creating and updating build files (IDE projects or Makefiles).
-    When you first create the build files, you can configure things such as the build mode or the type of the project files.
-
-    Whenever you add a new application, a demo or a test or whenever you make changes to ``CMakeLists.txt`` you need to call CMake again.
-    Since CMake remembers the settings you chose the first time you called CMake in a file named ``CMakeCache.txt``, all you have to do is to switch to your ``debug`` or ``release`` build directory and call "``cmake .``" in there.
-
-    .. code-block:: console
-
-       ~ # cd Development/seqan-build/debug-vs12
-       # debug-vs12 # cmake .
-
-    Do not try to call "``cmake .``" from within the ``seqan-src`` directory **but only from your build directory**.
-
-Now, you can open the project file ``C:\Users\seqan_dev\Development\seqan-build\debug-vs12\demos\seqan_demos.sln`` using Visual Studio.
-Right-click ``demo_seqan_dev_hello_seqan`` in the ``Solution Explorer`` and click ``Set as StartUp Project``.
-Open the source file ``hello_seqan.cpp`` and replace its contents with the following:
-
-.. code-block:: cpp
-
-    #include <iostream>
-    #include <seqan/sequence.h>  // CharString, ...
-    #include <seqan/stream.h>    // to stream a CharString into cout
-
-    int main(int, char const **)
-    {
-        std::cout << "Hello World!" << std::endl;
-        seqan::CharString mySeqAnString = "Hello SeqAn!";
-        std::cout << mySeqAnString << std::endl;
-        return 1;
-    }
-
-
-Now, start the program without debugging using ``Debug > Start Without Debugging``.
-Visual Studio will now compile your program and execute it. 
-A command line window will pop up and should display the following.
-
-.. code-block:: console
-
-    Hello World!
-    Hello SeqAn!
-    Press any key to continue . . .
-
-Congratulations, you have successfully created your first application within the SeqAn build system using Visual studio.
-
-Further Steps
-~~~~~~~~~~~~~
-
-As a next step, we suggest the following:
-
-* :ref:`Continue with the Tutorials <tutorial>`
-* If you have not done so, install optional dependencies of SeqAn.
-  To read and write compressed files, follow :ref:`how-to-install-contribs-on-windows`.
-* For the tutorial, using the SeqAn build system is great!
-  If you later want to use SeqAn as a library, have a look at :ref:`build-manual-integration-with-your-own-build-system`.
-* If you plan to contribute to SeqAn, please read the following document: :ref:`infrastructure-seqan-git-workflow`.
\ No newline at end of file
diff --git a/manual/source/Tutorial/GettingStarted/Xcode.png b/manual/source/Tutorial/GettingStarted/Xcode.png
deleted file mode 100644
index eb29f9a..0000000
Binary files a/manual/source/Tutorial/GettingStarted/Xcode.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/download-command-line-tools.png b/manual/source/Tutorial/GettingStarted/download-command-line-tools.png
deleted file mode 100644
index e651f53..0000000
Binary files a/manual/source/Tutorial/GettingStarted/download-command-line-tools.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/eclipse_linux_build_demo.png b/manual/source/Tutorial/GettingStarted/eclipse_linux_build_demo.png
deleted file mode 100755
index 782be25..0000000
Binary files a/manual/source/Tutorial/GettingStarted/eclipse_linux_build_demo.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/eclipse_linux_import_projects.png b/manual/source/Tutorial/GettingStarted/eclipse_linux_import_projects.png
deleted file mode 100755
index 0886d41..0000000
Binary files a/manual/source/Tutorial/GettingStarted/eclipse_linux_import_projects.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/eclipse_linux_import_projects_2.png b/manual/source/Tutorial/GettingStarted/eclipse_linux_import_projects_2.png
deleted file mode 100755
index 3cb877a..0000000
Binary files a/manual/source/Tutorial/GettingStarted/eclipse_linux_import_projects_2.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/eclipse_linux_preference_build.png b/manual/source/Tutorial/GettingStarted/eclipse_linux_preference_build.png
deleted file mode 100755
index af4f6b7..0000000
Binary files a/manual/source/Tutorial/GettingStarted/eclipse_linux_preference_build.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/eclipse_linux_run.png b/manual/source/Tutorial/GettingStarted/eclipse_linux_run.png
deleted file mode 100755
index 883b05e..0000000
Binary files a/manual/source/Tutorial/GettingStarted/eclipse_linux_run.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/eclipse_linux_run_configurations.png b/manual/source/Tutorial/GettingStarted/eclipse_linux_run_configurations.png
deleted file mode 100755
index 6f5e67b..0000000
Binary files a/manual/source/Tutorial/GettingStarted/eclipse_linux_run_configurations.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/eclipse_linux_select_target.png b/manual/source/Tutorial/GettingStarted/eclipse_linux_select_target.png
deleted file mode 100755
index cbac18e..0000000
Binary files a/manual/source/Tutorial/GettingStarted/eclipse_linux_select_target.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/first_demo_inital.png b/manual/source/Tutorial/GettingStarted/first_demo_inital.png
deleted file mode 100644
index 26cdfd6..0000000
Binary files a/manual/source/Tutorial/GettingStarted/first_demo_inital.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/first_demo_run.png b/manual/source/Tutorial/GettingStarted/first_demo_run.png
deleted file mode 100644
index fee9e67..0000000
Binary files a/manual/source/Tutorial/GettingStarted/first_demo_run.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/index.rst b/manual/source/Tutorial/GettingStarted/index.rst
new file mode 100644
index 0000000..cc3e007
--- /dev/null
+++ b/manual/source/Tutorial/GettingStarted/index.rst
@@ -0,0 +1,26 @@
+.. We create this roles for putting the "Introduction: etc. headings
+    on this page without them displaying in the ToC.  This would break
+    rendering the ToC correctly on readthedocs style.  The rubric
+    headings are formatted using CSS.
+    .. role:: rubric-heading1
+        :class: rubric-heading1
+
+.. _tutorial-getting-started:
+
+
+Getting Started
+===============
+
+These Tutorials will help you with your first steps in SeqAn.
+
+.. important::
+
+    Before you start, make sure that you have installed SeqAn correctly by following the :ref:`User Guide <infra-use>`!
+
+
+.. toctree::
+    :titlesonly:
+
+    BackgroundAndMotivation
+    AFirstExample
+    ParsingCommandLineArguments
diff --git a/manual/source/Tutorial/modify_string.png b/manual/source/Tutorial/GettingStarted/modify_string.png
similarity index 100%
rename from manual/source/Tutorial/modify_string.png
rename to manual/source/Tutorial/GettingStarted/modify_string.png
diff --git a/manual/source/Tutorial/GettingStarted/razers2_built.png b/manual/source/Tutorial/GettingStarted/razers2_built.png
deleted file mode 100644
index 7a847ff..0000000
Binary files a/manual/source/Tutorial/GettingStarted/razers2_built.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/razers2_selection.png b/manual/source/Tutorial/GettingStarted/razers2_selection.png
deleted file mode 100644
index 35dc444..0000000
Binary files a/manual/source/Tutorial/GettingStarted/razers2_selection.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/vs-solution-explorer.png b/manual/source/Tutorial/GettingStarted/vs-solution-explorer.png
deleted file mode 100644
index 70de7f9..0000000
Binary files a/manual/source/Tutorial/GettingStarted/vs-solution-explorer.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/vs-startup-project.png b/manual/source/Tutorial/GettingStarted/vs-startup-project.png
deleted file mode 100644
index 4891c1d..0000000
Binary files a/manual/source/Tutorial/GettingStarted/vs-startup-project.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/win_tortoise.png b/manual/source/Tutorial/GettingStarted/win_tortoise.png
deleted file mode 100644
index 2b5dc37..0000000
Binary files a/manual/source/Tutorial/GettingStarted/win_tortoise.png and /dev/null differ
diff --git a/manual/source/Tutorial/GettingStarted/xcode_startup.png b/manual/source/Tutorial/GettingStarted/xcode_startup.png
deleted file mode 100644
index 1a488b6..0000000
Binary files a/manual/source/Tutorial/GettingStarted/xcode_startup.png and /dev/null differ
diff --git a/manual/source/Tutorial/GlobalFunctionInterface.rst b/manual/source/Tutorial/GlobalFunctionInterface.rst
deleted file mode 100644
index 87566f9..0000000
--- a/manual/source/Tutorial/GlobalFunctionInterface.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _tutorial-global-function-interface:
-
-Global Function Interface
-=========================
-
-.. TODO Write me!
-
-Example to include STL bitset such that they can be used as a String in SeqAn.
diff --git a/manual/source/HowTo/AccessIndexFibres.rst b/manual/source/Tutorial/HowTo/Recipes/AccessIndexFibres.rst
similarity index 90%
rename from manual/source/HowTo/AccessIndexFibres.rst
rename to manual/source/Tutorial/HowTo/Recipes/AccessIndexFibres.rst
index 4156b11..44286d2 100644
--- a/manual/source/HowTo/AccessIndexFibres.rst
+++ b/manual/source/Tutorial/HowTo/Recipes/AccessIndexFibres.rst
@@ -1,9 +1,8 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _how-to-access-index-fibres:
+.. _how-to-recipes-access-index-fibres:
 
 Accessing Index Fibres
 ======================
@@ -75,17 +74,9 @@ The set of available fibres of an index ``Index<TText, TSpec>`` depends on the i
 | QGramRawText            | Virtually concatenates all strings of the QGramText fibre.                                                 | :dox:`ContainerConcept` over the alphabet of the text.                                       |
 +-------------------------+------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+
 
-+---------------------------------------------------------+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
-| :dox:`PizzaChiliIndexFibres Pizza & Chili Index Fibres` | Description                                                            | Type                                                                                               |
-+=========================================================+========================================================================+====================================================================================================+
-| PizzaChiliText                                          | The original text the index should be based on.                        | First template argument of the :dox:`Index`. Must be a sequence (no support for :dox:`StringSet`). |
-+---------------------------------------------------------+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
-| PizzaChiliCompressed                                    | Specialization dependent data structure to store the compressed index. | Depends on the compressed index.                                                                   |
-+---------------------------------------------------------+------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
-
 The first column in each table above contains the tags to select the corresponding fibre.
 Most of these tags are aliases for the same tag, e.g. ``EsaSA``, ``QGramSA``, ... are aliases for ``FibreSA``.
-If you write an algorithm that is generic in the type of index can use ``FibreText`` to specify the fibre that stores the index text.
+If you write an algorithm that is generic in the type of index, you can use ``FibreText`` to specify the fibre that stores the index text.
 
 Creation
 --------
@@ -130,7 +121,7 @@ For the ease of use, there exist shortcuts to access frequently used fibres:
 | :dox:`Index#indexText indexText(index)`                | :dox:`Index#getFibre getFibre(index, FibreText())`      |
 +--------------------------------------------------------+---------------------------------------------------------+
 
-and to access a single values:
+and to access a single value:
 
 +----------------------------------------------+---------------------------------------------------------+
 | Shortcut                                     | Expands To ...                                          |
diff --git a/manual/source/HowTo/ChooseTheJre.rst b/manual/source/Tutorial/HowTo/Recipes/ChooseTheJre.rst
similarity index 83%
rename from manual/source/HowTo/ChooseTheJre.rst
rename to manual/source/Tutorial/HowTo/Recipes/ChooseTheJre.rst
index 491221b..3ef56a9 100644
--- a/manual/source/HowTo/ChooseTheJre.rst
+++ b/manual/source/Tutorial/HowTo/Recipes/ChooseTheJre.rst
@@ -1,9 +1,8 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _how-to-choose-the-jre-version:
+.. _how-to-recipes-choose-the-jre-version:
 
 Choosing The JRE Version
 ========================
@@ -27,7 +26,7 @@ In order to do so go to ``Project`` and select ``Properties``.
 
 .. figure:: ProjectProperties.png
 
-No select ``Java Compiler`` and select the correct JRE at the ``Compiler compliance level:``
+Now select ``Java Compiler`` and select the correct JRE at the ``Compiler compliance level:``
 
 .. figure:: JavaCompiler.png
 
diff --git a/manual/source/HowTo/ClipAlignments.rst b/manual/source/Tutorial/HowTo/Recipes/ClipAlignments.rst
similarity index 89%
rename from manual/source/HowTo/ClipAlignments.rst
rename to manual/source/Tutorial/HowTo/Recipes/ClipAlignments.rst
index 5971c2a..5304faa 100644
--- a/manual/source/HowTo/ClipAlignments.rst
+++ b/manual/source/Tutorial/HowTo/Recipes/ClipAlignments.rst
@@ -1,9 +1,8 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _how-to-clip-alignments:
+.. _how-to-recipes-clip-alignments:
 
 Computing Positions In Clipped Alignments
 =========================================
@@ -33,3 +32,6 @@ The following extensive example shows how to practically translate between the c
 
 .. includefrags:: demos/howto/align_gaps_clipping.cpp
 
+The output looks as follows:
+
+.. includefrags:: demos/howto/align_gaps_clipping.cpp.stdout
diff --git a/manual/source/HowTo/FilterSimilarSequences.rst b/manual/source/Tutorial/HowTo/Recipes/FilterSimilarSequences.rst
similarity index 90%
rename from manual/source/HowTo/FilterSimilarSequences.rst
rename to manual/source/Tutorial/HowTo/Recipes/FilterSimilarSequences.rst
index 8972ad9..f608594 100644
--- a/manual/source/HowTo/FilterSimilarSequences.rst
+++ b/manual/source/Tutorial/HowTo/Recipes/FilterSimilarSequences.rst
@@ -1,8 +1,8 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-.. _how-to-filter-similar-sequences:
+.. _how-to-recipes-filter-similar-sequences:
 
 Filtering Similar Sequences
 ===========================
@@ -11,12 +11,12 @@ Using Swift
 -----------
 
 In the next example we are going to use the **Swift** filter to efficiently find pairs of similar reads.
-The Swift algorithms searches for so-called epsilon matches, local alignments, of two sequences with an error rate below a certain epsilon threshold.
+The Swift algorithm searches for so-called epsilon matches (local alignments) of two sequences with an error rate below a certain epsilon threshold.
 
 The Swift implementation in SeqAn provides a :dox:`Finder#find` interface and requires the :dox:`Finder` and :dox:`Pattern` to be specialized with ``Swift<..>``.
 Millions of sequences can be searched simultaneously with one :dox:`SwiftPattern Swift Pattern` in a :dox:`SwiftFinder Swift Finder` of a single haystack sequence.
 The error rate of a local alignment is the number of errors divided by the length of the needle sequence part of the match.
-There are currently two version of the Swift algorithm implemented in SeqAn, ``SwiftSemiGlobal`` and ``SwiftLocal``.
+There are currently two version of the Swift algorithm implemented in SeqAn: ``SwiftSemiGlobal`` and ``SwiftLocal``.
 Both can be used to search epsilon-matches of a certain minimum length.
 
 .. hint::
diff --git a/manual/source/HowTo/JavaCompiler.png b/manual/source/Tutorial/HowTo/Recipes/JavaCompiler.png
similarity index 100%
rename from manual/source/HowTo/JavaCompiler.png
rename to manual/source/Tutorial/HowTo/Recipes/JavaCompiler.png
diff --git a/manual/source/HowTo/JreHome.png b/manual/source/Tutorial/HowTo/Recipes/JreHome.png
similarity index 100%
rename from manual/source/HowTo/JreHome.png
rename to manual/source/Tutorial/HowTo/Recipes/JreHome.png
diff --git a/manual/source/HowTo/MacOSJre.png b/manual/source/Tutorial/HowTo/Recipes/MacOSJre.png
similarity index 100%
rename from manual/source/HowTo/MacOSJre.png
rename to manual/source/Tutorial/HowTo/Recipes/MacOSJre.png
diff --git a/manual/source/Tutorial/HowTo/Recipes/Metafunctions.rst b/manual/source/Tutorial/HowTo/Recipes/Metafunctions.rst
new file mode 100644
index 0000000..212c97d
--- /dev/null
+++ b/manual/source/Tutorial/HowTo/Recipes/Metafunctions.rst
@@ -0,0 +1,90 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _tutorial-how-to-recipes-metafunctions:
+
+Metafunctions
+=============
+
+Type Metafunctions
+------------------
+
+For example, the metafunction :dox:`ContainerConcept#Iterator` is a type metafunction, i.e. it is used to determine a type.
+Type metafunctions have the form:
+
+``typename TypeMetaFunc<T1, T2, ..., TN>::Type``
+
+``TypeMetaFunc``
+  The name of the metafunction
+
+``T1, T2, ..., TN``
+  Arguments (types or constants)
+
+``Type``
+  The resulting type
+
+The keyword ``typename`` must be stated if one of the arguments ``T1, T2, ..., TN`` is or uses a template parameter.
+For example the following piece of code uses the metafunction ``Iterator`` to determine an iterator type for a string class:
+
+.. includefrags:: demos/tutorial/metafunctions/base.cpp
+    :fragment: iterator
+
+.. includefrags:: demos/tutorial/metafunctions/base.cpp.stdout
+    :fragment: iterator
+
+Value Metafunctions
+-------------------
+
+Metafunctions can also be used to determine constant values at compile time.
+The general form of value metafunctions is:
+
+``VALUE_META_FUNC<T1, T2, ..., TN>::VALUE``
+
+``VALUE_META_FUNC``
+  The name of the metafunction
+
+``T1, T2, ..., TN``
+  Arguments (types or constants)
+
+``VALUE``
+  The resulting constant value
+
+For example the following function prints the length of a fixed sized string using the value metafunction :dox:`LENGTH`:
+
+.. includefrags:: demos/tutorial/metafunctions/base.cpp
+    :fragment: length
+
+.. includefrags:: demos/tutorial/metafunctions/base.cpp.stdout
+    :fragment: length
+
+.. important::
+      Different uses of "*Value*":
+
+      Please note that :dox:`ContainerConcept#Value` (``Value<TSomeType>::Type``) is a **Type Metafunction**, because it returns a Type (e.g. of values in a container) and not a value.
+
+Assignment 1
+""""""""""""
+
+.. container:: assignment
+
+   Objective
+     Write a generic function ``checkContainerForDna(T & container)`` that prints out a message if the value inside the container is of the type :dox:`Dna`. The type ``T`` of the container should be specified as a template argument. Test you function with some examples.
+
+   Hint
+      * Use the **Type Metafunction** :dox:`ContainerConcept#Value` to access the (alphabet-)type of the elements in the container.
+      * Use the **Value Metafunction** :dox:`IsSameType` to check for type equality.
+
+   Solution
+     .. container:: foldable
+
+        Your program should look something like this:
+
+        .. includefrags:: demos/tutorial/metafunctions/assignment1_solution.cpp
+
+        Note: Because the Value Metafunction ``IsSameType<>`` is evaluated at compile time, the part of the if-statement code that does not apply won't even appear in the compiled code. This can be an improvement to the runtime of your code.
+
+        The output is the following:
+
+        .. includefrags:: demos/tutorial/metafunctions/assignment1_solution.cpp.stdout
+
diff --git a/manual/source/HowTo/Preferences.png b/manual/source/Tutorial/HowTo/Recipes/Preferences.png
similarity index 100%
rename from manual/source/HowTo/Preferences.png
rename to manual/source/Tutorial/HowTo/Recipes/Preferences.png
diff --git a/manual/source/HowTo/ProjectProperties.png b/manual/source/Tutorial/HowTo/Recipes/ProjectProperties.png
similarity index 100%
rename from manual/source/HowTo/ProjectProperties.png
rename to manual/source/Tutorial/HowTo/Recipes/ProjectProperties.png
diff --git a/manual/source/HowTo/WorkWithCustomScoreMatrices.rst b/manual/source/Tutorial/HowTo/Recipes/WorkWithCustomScoreMatrices.rst
similarity index 66%
rename from manual/source/HowTo/WorkWithCustomScoreMatrices.rst
rename to manual/source/Tutorial/HowTo/Recipes/WorkWithCustomScoreMatrices.rst
index 0ee3be9..965939a 100644
--- a/manual/source/HowTo/WorkWithCustomScoreMatrices.rst
+++ b/manual/source/Tutorial/HowTo/Recipes/WorkWithCustomScoreMatrices.rst
@@ -1,9 +1,8 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _how-to-work-with-custom-score-matrices:
+.. _how-to-recipes-work-with-custom-score-matrices:
 
 Working With Custom Score Matrices
 ==================================
@@ -13,32 +12,32 @@ This How To describes how to create new scoring matrices for Amino Acids and DNA
 Creating A New Built-In Score Matrix
 ------------------------------------
 
-The following program demonstrate how to implement a new built-in score matrix.
+The following program demonstrates how to implement a new built-in score matrix.
 
 .. includefrags:: demos/howto/scores/init_score.cpp
    :fragment: includes
 
-Then, we perform the necessary definitions for the matrix.
-This consists of three steps:
+We need to perform the necessary definitions for the matrix.
+This consists of two steps:
 
-* defining a tag struct
-* specializing the class ``ScoringMatrixData_`` with your tag
+#. Defining a tag struct.
+#. Specializing the class ``ScoringMatrixData_`` with your tag.
 
 Note how we use enum values to compute the matrix size which itself is retrieved from the :dox:`FiniteOrderedAlphabetConcept#ValueSize` metafunction.
 
 .. includefrags:: demos/howto/scores/init_score.cpp
    :fragment: user-defined-matrix
 
-We define a function ``showScoringMatrix`` for displaying a matrix.
+Now we define a function ``showScoringMatrix`` for displaying a matrix.
 
 .. includefrags:: demos/howto/scores/init_score.cpp
    :fragment: show-scoring-matrix
 
-Finally, the function ``main`` function demostrates some of the things you can do with scores:
+Finally, the ``main`` function demostrates some of the things you can do with scores:
 
-* Construct empty score matrix object (2.)
-* Programmatically fill the score matrix in a loop (3.1)
-* Programatically fill the matrix with the user-defined matrix values (3.2)
+* Construct an empty score matrix object (2.)
+* Fill the score matrix in a loop (3.1)
+* Fill the matrix with the user-defined matrix values (3.2)
 * Directly create a score matrix with the user-defined matrix values (4)
 
 .. includefrags:: demos/howto/scores/init_score.cpp
@@ -52,7 +51,7 @@ Loading Score Matrices From File
 ------------------------------------
 
 This small demo program shows how to load a score matrix from a file.
-Examples for score file are ``demos/howto/scores/dna_example.txt`` for DNA alphabets and ``tests/sPAM250`` for amino acids.
+Examples for a score file are ``demos/howto/scores/dna_example.txt`` for DNA alphabets and ``tests/sPAM250`` for amino acids.
 
 Include the necessary headers.
 
diff --git a/manual/source/HowTo/gaps_transformations.png b/manual/source/Tutorial/HowTo/Recipes/gaps_transformations.png
similarity index 100%
rename from manual/source/HowTo/gaps_transformations.png
rename to manual/source/Tutorial/HowTo/Recipes/gaps_transformations.png
diff --git a/manual/source/Tutorial/HowTo/Recipes/index.rst b/manual/source/Tutorial/HowTo/Recipes/index.rst
new file mode 100644
index 0000000..02d48ed
--- /dev/null
+++ b/manual/source/Tutorial/HowTo/Recipes/index.rst
@@ -0,0 +1,12 @@
+.. _tutorial-how-to-recipes:
+
+Recipes
+=======
+
+After reading the Tutorial we recommend to read some of the following recipes:
+
+.. toctree::
+    :glob:
+    :titlesonly:
+
+    *
diff --git a/manual/source/Tutorial/HowTo/UseCases/Overlapper.rst b/manual/source/Tutorial/HowTo/UseCases/Overlapper.rst
new file mode 100644
index 0000000..960db54
--- /dev/null
+++ b/manual/source/Tutorial/HowTo/UseCases/Overlapper.rst
@@ -0,0 +1,10 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _how-to-use-cases-overlapper:
+
+Simple Overlapper
+=================
+
+.. image:: ../../../under_construction.jpg
diff --git a/manual/source/Tutorial/SimpleRnaSeq.rst b/manual/source/Tutorial/HowTo/UseCases/SimpleRnaSeq.rst
similarity index 94%
rename from manual/source/Tutorial/SimpleRnaSeq.rst
rename to manual/source/Tutorial/HowTo/UseCases/SimpleRnaSeq.rst
index 6a3dc68..0dc7713 100644
--- a/manual/source/Tutorial/SimpleRnaSeq.rst
+++ b/manual/source/Tutorial/HowTo/UseCases/SimpleRnaSeq.rst
@@ -1,9 +1,8 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-simple-rna-seq:
+.. _how-to-use-cases-simple-rna-seq:
 
 Simple RNA-Seq
 ==============
@@ -18,13 +17,13 @@ Duration
   2h
 
 Prerequisites
-  :ref:`tutorial-genome-annotations`, :ref:`tutorial-fragment-store`, experience with OpenMP (optional)
+  :ref:`tutorial-datastructures-store-genome-annotations`, :ref:`tutorial-datastructures-store-fragment-store`, experience with OpenMP (optional)
 
 RNA-Seq refers to high-throughput sequencing of cDNA in order to get information about the RNA molecules available in a sample.
 Knowing the sequence and abundance of mRNA allows to determine the (differential) expression of genes, to detect alternative splicing variants, or to annotate yet unknown genes.
 
 In the following tutorial you will develop a simple gene quantification tool.
-It will load a file containing gene annotations and a file with RNA-Seq read alignments, computes abundances, and outputs RPKM values for each expressed gene.
+It will load a file containing gene annotations and a file with RNA-Seq read alignments, compute abundances, and output RPKM values for each expressed gene.
 
 Albeit its simplicity, this example can be seen as a starting point for more complex applications, e.g. to extend the tool from quantification of genes to the quantification of (alternatively spliced) isoforms, or to de-novo detect yet unannotated isoforms/genes.
 
@@ -48,8 +47,8 @@ These tasks typically require lots of data structures that are related to each o
 
 The Fragment Store subsumes all these data structures in an easy to use interface.
 It represents a multiple alignment of millions of reads or mate-pairs against a reference genome consisting of multiple contigs.
-Additionally, regions of the reference genome can be annotated with features like 'gene', 'mRNA', 'exon', 'intro' or custom features.
-The Fragment Store supports I/O functionality to read/write a read alignment in `SAM <http://samtools.sourceforge.net/>`_ or `AMOS <http://www.cbcb.umd.edu/research/contig_representation.shtml>`_ format and to read/write annotations in `GFF <http://genome.ucsc.edu/FAQ/FAQformat.html#format3>`_ or `GTF <http://genome.ucsc.edu/FAQ/FAQformat.html#format4>`_ format.
+Additionally, regions of the reference genome can be annotated with features like 'gene', 'mRNA', 'exon', 'intron' (see :dox:`FragmentStore::PredefinedAnnotationTypes`) or custom features.
+The Fragment Store supports I/O functionality to read/write a read alignment in `SAM <http://samtools.sourceforge.net/>`_ or `AMOS <http://amos.sourceforge.net/wiki/index.php/AMOS>`_ format and to read/write annotations in `GFF <http://genome.ucsc.edu/FAQ/FAQformat.html#format3>`_ or `GTF <http://genome.ucsc.edu/FAQ/FAQformat.html#format4>`_ format.
 
 The Fragment Store can be compared with a database where each table (called "store") is implemented as a :dox:`String` member of the :dox:`FragmentStore` class.
 The rows of each table (implemented as structs) are referred by their ids which are their positions in the string and not stored explicitly.
@@ -65,7 +64,7 @@ Annotation Tree
 Annotations are represented as a tree that at least contains a root node where all annotations are children or grandchildren of.
 A typical annotation tree looks as follows:
 
-.. figure:: AnnotationTree.png
+.. figure:: ../../DataStructures/Store/AnnotationTree.png
 
    Annotation tree example
 
@@ -152,7 +151,7 @@ The string of strings of intervals can now be defined as:
 .. includefrags:: demos/tutorial/simple_rna_seq/base.cpp
       :fragment: interval
 
-In your second assignment you should use an :dox:`AnnotationTreeIterator AnnotationTree Iterator` annotation tree iterator] to traverse all genes in the annotation tree.
+In your second assignment you should use an :dox:`AnnotationTreeIterator AnnotationTree Iterator` to traverse all genes in the annotation tree.
 For each gene, determine its genomic range (projected to the forward strand) and add a new ``TInterval`` object to the ``intervals[contigId]`` string, where ``contigId`` is the id of the contig containing that gene.
 
 Assignment 2
@@ -192,7 +191,7 @@ Assignment 2
    Hint
      .. container:: foldable
 
-        You can assume that all genes are children of the root node, i.e. create an :dox:`AnnotationTreeIterator AnnotationTree Iterator`, [:dox:`AnnotationTreeIterator#goDown go down` to the first gene and :dox:`AnnotationTreeIterator#goRight go right` to visit all other genes.
+        You can assume that all genes are children of the root node, i.e. create an :dox:`AnnotationTreeIterator AnnotationTree Iterator`, :dox:`AnnotationTreeIterator#goDown go down` to the first gene and :dox:`AnnotationTreeIterator#goRight go right` to visit all other genes.
         Use :dox:`AnnotationTreeIterator#getAnnotation` to access the gene annotation and :dox:`IteratorAssociatedTypesConcept#value` to get the annotation id.
 
      .. container:: foldable
@@ -433,6 +432,6 @@ Next Steps
 ----------
 
 * See :cite:`Mortazavi2008` for further reading.
-* Read the :ref:`tutorial-sam-bam-io` Tutorial and change your program to stream a SAM file instead of loading it as a whole.
+* Read the :ref:`tutorial-io-sam-bam-io` Tutorial and change your program to stream a SAM file instead of loading it as a whole.
 * Change the program such that it attaches the RPKM value as a key-value pair (see :dox:`AnnotationTreeIterator#assignValueByKey`) to the annotation of each gene and output a GFF file.
 * Continue with the :ref:`tutorial` rest of the tutorials]].
diff --git a/manual/source/Tutorial/HowTo/UseCases/index.rst b/manual/source/Tutorial/HowTo/UseCases/index.rst
new file mode 100644
index 0000000..2f7eabf
--- /dev/null
+++ b/manual/source/Tutorial/HowTo/UseCases/index.rst
@@ -0,0 +1,12 @@
+.. _tutorial-how-to-use-cases:
+
+Use Cases
+=========
+
+After reading the Tutorial we recommend to read some of the following use cases:
+
+.. toctree::
+    :glob:
+    :titlesonly:
+
+    *
diff --git a/manual/source/Tutorial/mini_bowtie_search.png b/manual/source/Tutorial/HowTo/UseCases/mini_bowtie_search.png
similarity index 100%
rename from manual/source/Tutorial/mini_bowtie_search.png
rename to manual/source/Tutorial/HowTo/UseCases/mini_bowtie_search.png
diff --git a/manual/source/Tutorial/HowTo/index.rst b/manual/source/Tutorial/HowTo/index.rst
new file mode 100644
index 0000000..48042ba
--- /dev/null
+++ b/manual/source/Tutorial/HowTo/index.rst
@@ -0,0 +1,16 @@
+.. _tutorial-how-to:
+
+
+How-Tos
+=======
+
+.. toctree::
+    :hidden:
+    :titlesonly:
+
+    Recipes/index
+    UseCases/index
+
+
+For experienced SeqAn developers we gathered some recipes and use cases that might become handy in some situations.
+Feel free to contact us if you have a great recipe or a nice use case that uses the SeqAn library.
\ No newline at end of file
diff --git a/manual/source/Tutorial/BedIO.rst b/manual/source/Tutorial/InputOutput/BedIO.rst
similarity index 83%
rename from manual/source/Tutorial/BedIO.rst
rename to manual/source/Tutorial/InputOutput/BedIO.rst
index 9c1616c..f2fd548 100644
--- a/manual/source/Tutorial/BedIO.rst
+++ b/manual/source/Tutorial/InputOutput/BedIO.rst
@@ -1,9 +1,8 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-bed-io:
+.. _tutorial-io-bed-io:
 
 BED I/O
 =======
@@ -18,7 +17,7 @@ Duration
   45min
 
 Prerequisites
-  :ref:`tutorial-sequences`, :ref:`tutorial-input-output-overview`, `BED Format Specification <http://genome.ucsc.edu/FAQ/FAQformat.html#format1>`_
+  :ref:`tutorial-datastructures-sequences`, :ref:`tutorial-io-input-output-overview`, `BED Format Specification <http://genome.ucsc.edu/FAQ/FAQformat.html#format1>`_
 
 This tutorial shows how to read and write BED files using the :dox:`BedFileIn` and :dox:`BedFileOut` classes.
 It starts out with a quick reminder on the structure of BED files and will then continue with how to read and write BED files.
@@ -28,12 +27,12 @@ Such an annotation track consists of multiple annotation records.
 Each annotation adds some meta information to a genomic interval (an interval with begin/end position on a contig/chromosome) The original specification of the format can be found in the `UCSC Genome Browser FAQ <https://genome.ucsc.edu/FAQ/FAQformat.html#format1>`_.
 
 The BED format is a TSV format and contains 12 columns.
-The first three column specify a genomic region (contig/chromsome name, begin, and end position) and the remaining columns contain additional information.
+The first three columns specify a genomic region (contig/chromsome name, begin, and end position) and the remaining columns contain additional information.
 The full format will be described below.
 
 Since genomic intervals are very useful and because there were many tools for manipulating BED files (sorting, intersecting intervals etc.), many other authors and projects created variants of the BED format.
 Usually, three or more columns have the same meaning as in BED and are followed by other, arbitrary tab-separated columns with additional annotation information.
-The "full" BED format is then called BED12, and BED3, BED4, BED5, and BED6 use the first 3-6 columns and keep the remaining information as data.
+The "full" BED format is then called BED12. BED3, BED4, BED5, and BED6 use the first 3-6 columns and keep the remaining information as data.
 
 BED files can be manipuluated using standard Unix tools such as ``sed``, ``awk``, and ``sort``.
 There also is the `bedtools <https://code.google.com/p/bedtools/>`_ suite with additional functionality.
@@ -45,7 +44,7 @@ BED Format
 
 The following is an example of a BED file:
 
-    .. literalinclude:: ../../../demos/tutorial/bed_io/example.bed
+    .. literalinclude:: ../../../../demos/tutorial/bed_io/example.bed
 
 The meaning of the columns are as follows:
 
@@ -92,10 +91,10 @@ blockSizes (12)
    There are two common ways of specifying intervals.
 
    #. Start counting positions at 1 and give intervals by the first and last position that are part of the interval (closed intervals).
-      For example, the interval ``[1,000; 2,000]`` starts at character 1,000 and ends at character 2,000 and includes it.
+      For example, the interval ``[1000; 2000]`` starts at character 1000 and ends at character 2000 and includes it.
       This way is natural to non-programmers and used when giving coordinates in GFF files or genome browsers such as UCSC Genome Browser and IGV.
    #. Start counting positions at 0 and give intervals by the first position that is part of the interval and giving the position behind the last position that is part of the interval.
-      The interval from above would be ``[999; 2,000)`` in this case.
+      The interval from above would be ``[999; 2000)`` in this case.
 
    In text representations, such as GFF and GTF, 1-based closed intervals are used whereas in the internal binary data structures, SeqAn uses 0-based half-open intervals.
    BED is a text format using 0-based positions.
@@ -103,7 +102,7 @@ blockSizes (12)
 A First Working Example
 -----------------------
 
-The following example shows an example of a program that reads the file with the path ``example.bed`` and prints its contents back to the user on standard output.
+The following example shows an example of a program that reads the file ``example.bed`` and prints its contents back to the user on standard output.
 
 .. includefrags:: demos/tutorial/bed_io/example1.cpp
 
@@ -111,6 +110,10 @@ The program first opens a :dox:`BedFileIn` for reading and a :dox:`BedFileOut` f
 The BED records are read into :dox:`BedRecord` objects which we will focus on below.
 In this case, we use the :dox:`Bed3Record` specialization of the :dox:`BedRecord` class.
 
+The output of the example program looks as follows:
+
+.. includefrags:: demos/tutorial/bed_io/example1.cpp.stdout
+
 Assignment 1
 """"""""""""
 
@@ -139,7 +142,7 @@ The other specializations have less fields.
 .. includefrags:: demos/tutorial/bed_io/base.cpp
       :fragment: bedRecord
 
-The static members ``INVALID_POS``, ``INVALID_REFID`` store sentinel values for marking positions and reference sequence ids as invalid.
+The static members ``INVALID_POS`` and ``INVALID_REFID`` store sentinel values for marking positions and reference sequence ids as invalid.
 
 Assignment 2
 """"""""""""
diff --git a/manual/source/Tutorial/BlastIO.rst b/manual/source/Tutorial/InputOutput/BlastIO.rst
similarity index 82%
rename from manual/source/Tutorial/BlastIO.rst
rename to manual/source/Tutorial/InputOutput/BlastIO.rst
index ffe0310..82ef0ec 100644
--- a/manual/source/Tutorial/BlastIO.rst
+++ b/manual/source/Tutorial/InputOutput/BlastIO.rst
@@ -1,9 +1,8 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-blast-io:
+.. _tutorial-io-blast-io:
 
 Blast I/O
 =========
@@ -18,13 +17,14 @@ Duration
   1h30min - 2h30min
 
 Prerequisite Tutorials
-  :ref:`tutorial-sequences`, :ref:`tutorial-input-output-overview`, :ref:`tutorial-alignment-representation`, :ref:`tutorial-pairwise-sequence-alignment`
+  :ref:`tutorial-datastructures-sequences`, :ref:`tutorial-io-input-output-overview`, :ref:`tutorial-datastructures-alignment`, :ref:`tutorial-algorithms-alignment-pairwise-sequence-alignment`
 
 Other recommended reading
   `Basics of Blast Statistics <http://www.ncbi.nlm.nih.gov/BLAST/tutorial/Altschul-1.html>`_
 
 Technical requirements
-  Full C++11 support required in compiler (GCC>=4.9, Clang>=3.4 or MSVC>=2015)
+  Full C++11 support required in compiler
+  (GCC :math:`\ge` 4.9, Clang :math:`\ge` 3.4 or MSVC :math:`\ge` 2015)
 
 
 The Basic local alignment search tool (BLAST) by the NCBI is one of the most widely used tools in Bioinformatics.
@@ -34,8 +34,8 @@ dealing with Blast IO is more difficult than with other file formats.
 
 Furthermore it is important to distinguish between the Blast version written in C (known by its `blastall` executable)
 and the C++ version (individual `blastn`, `blastp`... executables), also known as BLAST+.
-The formats and their identifiers changed
-between versions, the following table gives an overview:
+The formats and their identifiers changed between versions.
+The following table gives an overview:
 
 +---------------------------------------------------+------------------+-------------+
 | Description                                       | `blastall`       |  `blast*`   |
@@ -133,7 +133,7 @@ The twelve default columns are:
 
    #. **Interval notation:** Blast uses 1-based closed intervals for positions, i.e. a match from the 100th position to
       the 200th position of a sequence will be shown as ``100  200`` in the file. SeqAn internally uses 0-based
-      half open intervals, i.e. it starts counting at positition 0 and stores the first position behind the sequence
+      half open intervals, i.e. it starts counting at position 0 and stores the first position behind the sequence
       as "end", e.g. position ``99`` and ``200`` for our example.
    #. **Reverse strands:** For matches found on the reverse complement strand the positions are counted backwards from
       the end of the sequence, e.g. a match from the 100th position to the 200th position on a reverse complement strand
@@ -145,13 +145,13 @@ The twelve default columns are:
 
 A **tabular** file could look like this (matches per query are sorted by e-value):
 
-.. literalinclude:: ../../../tests/blast/defaultfields.m8
+.. literalinclude:: ../../../../tests/blast/defaultfields.m8
 
 The **tabular with comment lines** format additionally prefixes every block belonging to one query sequence with
 comment lines that include the program version, the database name and column labels. The above example would look
 like this:
 
-.. literalinclude:: ../../../tests/blast/defaultfields.m9
+.. literalinclude:: ../../../../tests/blast/defaultfields.m9
     :lines: 5-37
 
 As you can see, comment lines are also printed for query sequences which don't have any matches.
@@ -160,7 +160,7 @@ difference of these formats in BLAST+ vs the legacy application are that the *mi
 include the number of gap characters, but it does not in BLAST+. The comments also look slightly different
 in the **tabular with comment lines (legacy)** format:
 
-.. literalinclude:: ../../../tests/blast/defaultfields_legacy.m9
+.. literalinclude:: ../../../../tests/blast/defaultfields_legacy.m9
     :lines: 5-35
 
 
@@ -168,11 +168,11 @@ in the **tabular with comment lines (legacy)** format:
 Pairwise format
 ---------------
 
-The pairwise format is the default format in Blast, it is more verbose than the tabular formats and very human readable.
+The pairwise format is the default format in Blast. It is more verbose than the tabular formats and very human readable.
 
 This is what the last record from above would look like (the other queries are omitted):
 
-.. literalinclude:: ../../../demos/tutorial/blast/plus_sub.m0
+.. literalinclude:: ../../../../demos/tutorial/blast_io/plus_sub.m0
 
 
 Blast formats in SeqAn
@@ -192,7 +192,7 @@ this tutorial (see the dox for a simple example).
 To work with the first two formats you need to understand at least the following data structures:
   * :dox:`BlastRecord`: the record covers all :dox:`BlastMatch` es belonging to one query sequence.
   * :dox:`FormattedFile`: one of :dox:`BlastReportFileOut`, :dox:`BlastTabularFileOut` and :dox:`BlastTabularFileIn`.
-  * :dox:`BlastIOContext`: the context of the FormatteFile.
+  * :dox:`BlastIOContext`: the context of the FormattedFile.
 
 The context contains file-global data like the name of the database and can also be used to read/write certain file
 format properties, e.g. "with comment lines" or "legacyFormat".
@@ -200,7 +200,7 @@ format properties, e.g. "with comment lines" or "legacyFormat".
 .. caution::
     Due to the structure of blast tabular files lots of information is repeated in every block of comment lines, e.g.
     the database name. Because it is expected that these stay the same they are saved in the context and not the record.
-    You may still, however, check everytime you ``readRecord()`` if you want to make sure.
+    You may still, however, check every time you ``readRecord()`` if you want to make sure.
 
 File reading example
 --------------------
@@ -210,7 +210,7 @@ Only tabular formats are covered in this example, because no input support is av
 Copy the contents of the **tabular with comment lines** example above into a file and give it to the following
 program as the only parameter. Please use ``.m9`` as file type extension.
 
-.. literalinclude:: ../../../demos/tutorial/blast/read_assignment.cpp
+.. literalinclude:: ../../../../demos/tutorial/blast_io/read_assignment.cpp
     :language: c++
     :lines: 1-18, 74-84
 
@@ -227,21 +227,21 @@ Assignment 1
       Top
         .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/read_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/read_assignment.cpp
                 :language: c++
                 :lines: 1-18
 
       New code
         .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/read_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/read_assignment.cpp
                 :language: c++
                 :lines: 19-34, 57-60
 
       Bottom
           .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/read_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/read_assignment.cpp
                 :language: c++
                 :lines: 74-84
 
@@ -259,14 +259,14 @@ Assignment 2
       Top
         .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/read_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/read_assignment.cpp
                 :language: c++
                 :lines: 1-34
 
       New code
         .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/read_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/read_assignment.cpp
                 :language: c++
                 :lines: 41-60
 
@@ -276,7 +276,7 @@ Assignment 2
       Bottom
           .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/read_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/read_assignment.cpp
                 :language: c++
                 :lines: 74-84
 
@@ -300,21 +300,21 @@ Assignment 3
       Top
         .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/read_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/read_assignment.cpp
                 :language: c++
                 :lines: 1-34, 41-60
 
       New code
         .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/read_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/read_assignment.cpp
                 :language: c++
                 :lines: 61-73
 
       Bottom
           .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/read_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/read_assignment.cpp
                 :language: c++
                 :lines: 74-84
 
@@ -328,12 +328,12 @@ without further configuration in SeqAn.
 
 .. tip::
     Don't believe it? Look at ``tests/blast/customfields.m9``, as as you can see the bit score is in the 13th column
-    (instead of the twelfth). If you run your program on this file, it should still print the corrent bit-scores!
+    (instead of the twelfth). If you run your program on this file, it should still print the correct bit-scores!
 
 .. container:: assignment
 
   Objective
-    Read :dox:`BlastIOContext` again focussing on :dox:`BlastIOContext::fields` and also read :dox:`BlastMatchField`.
+    Read :dox:`BlastIOContext` again focusing on :dox:`BlastIOContext::fields` and also read :dox:`BlastMatchField`.
     Now adapt the previous program to print for every record the ``optionLabel`` of each field used.
 
     Verify that the results are as expected on the files ``tests/blast/defaultfields.m9`` and
@@ -343,21 +343,21 @@ without further configuration in SeqAn.
       Top
         .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/read_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/read_assignment.cpp
                 :language: c++
                 :lines: 1-34
 
       New code
         .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/read_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/read_assignment.cpp
                 :language: c++
                 :lines: 35-40
 
       Bottom
           .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/read_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/read_assignment.cpp
                 :language: c++
                 :lines: 41-84
 
@@ -369,9 +369,9 @@ File writing example
 The following program stub creates three query sequences and two subject sequences in amino acid alphabet.
 We will later generate records with matches and print these to disk.
 
-.. literalinclude:: ../../../demos/tutorial/blast/write_assignment.cpp
+.. literalinclude:: ../../../../demos/tutorial/blast_io/write_assignment.cpp
     :language: c++
-    :lines: 1-49, 109-119
+    :lines: 1-49, 105-114
 
 Assignment 5
 """"""""""""
@@ -392,21 +392,21 @@ Assignment 5
       Top
         .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/write_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/write_assignment.cpp
                 :language: c++
                 :lines: 1-49
 
       New code
         .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/write_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/write_assignment.cpp
                 :language: c++
                 :lines: 50-64
 
       Bottom
           .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/write_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/write_assignment.cpp
                 :language: c++
                 :lines: 106-116
 
@@ -423,21 +423,21 @@ Assignment 6
       Top
         .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/write_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/write_assignment.cpp
                 :language: c++
                 :lines: 1-64
 
       New Code
        .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/write_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/write_assignment.cpp
                 :language: c++
-                :lines: 65-82, 98-99, 103
+                :lines: 65-82, 97-99, 103
 
       Bottom
        .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/write_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/write_assignment.cpp
                 :language: c++
                 :lines: 106-116
 
@@ -455,25 +455,25 @@ Assignment 7
       Top
         .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/write_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/write_assignment.cpp
                 :language: c++
                 :lines: 1-82
 
       New Code
        .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/write_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/write_assignment.cpp
                 :language: c++
                 :lines: 83-92
 
       Bottom
        .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/write_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/write_assignment.cpp
                 :language: c++
-                :lines: 98-99, 103, 106-116
+                :lines: 97-99, 103, 106-116
 
-Assignment 7
+Assignment 8
 """"""""""""
 
 .. container:: assignment
@@ -490,30 +490,30 @@ Assignment 7
       Top
        .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/write_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/write_assignment.cpp
                 :language: c++
                 :lines: 1-92
 
       New Code
        .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/write_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/write_assignment.cpp
                 :language: c++
-                :lines: 93-105
+                :lines: 93-96
 
       Bottom
        .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/write_assignment.cpp
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/write_assignment.cpp
                 :language: c++
-                :lines: 106-116
+                :lines: 97-116
 
       Your output file should look like this:
         .. container:: foldable
 
-            .. literalinclude:: ../../../demos/tutorial/blast/write_assignment.m9
+            .. literalinclude:: ../../../../demos/tutorial/blast_io/write_assignment.m9
 
-Assignment 8
+Assignment 9
 """"""""""""
 
 .. container:: assignment
@@ -531,7 +531,7 @@ Assignment 8
 
         The result should look like this:
 
-        .. literalinclude:: ../../../demos/tutorial/blast/write_assignment.m8
+        .. literalinclude:: ../../../../demos/tutorial/blast_io/write_assignment.m8
 
     Tabular without comment lines (legacy)
       .. container:: foldable
@@ -540,7 +540,7 @@ Assignment 8
 
         The result should look like this(legacy and NO_COMMENTS):
 
-        .. literalinclude:: ../../../demos/tutorial/blast/write_assignment_legacy.m8
+        .. literalinclude:: ../../../../demos/tutorial/blast_io/write_assignment_legacy.m8
 
     Pairwise format
       .. container:: foldable
@@ -551,4 +551,4 @@ Assignment 8
 
         The result should look like this:
 
-        .. literalinclude:: ../../../demos/tutorial/blast/write_assignment.m0
+        .. literalinclude:: ../../../../demos/tutorial/blast_io/write_assignment.m0
diff --git a/manual/source/Tutorial/FileIOOverview.rst b/manual/source/Tutorial/InputOutput/FileIOOverview.rst
similarity index 77%
rename from manual/source/Tutorial/FileIOOverview.rst
rename to manual/source/Tutorial/InputOutput/FileIOOverview.rst
index 8658ad2..9afe577 100644
--- a/manual/source/Tutorial/FileIOOverview.rst
+++ b/manual/source/Tutorial/InputOutput/FileIOOverview.rst
@@ -1,9 +1,8 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-input-output-overview:
+.. _tutorial-io-input-output-overview:
 
 File I/O Overview
 =================
@@ -18,7 +17,7 @@ Duration
   30 min
 
 Prerequisites
-  :ref:`tutorial-sequences`
+  :ref:`tutorial-datastructures-sequences`
 
 
 Overview
@@ -29,10 +28,10 @@ Often, they start out with a header that itself contains different header record
 For example, the Binary Sequence Alignment/Map (SAM/BAM) format starts with an header that lists all contigs of the reference sequence.
 The BAM header is followed by a list of BAM alignment records that contain query sequences aligned to some reference contig.
 
-.. _tutorial-input-output-overview-formatted-files:
+.. _tutorial-io-input-output-overview-formatted-files:
 
 Formatted Files
-"""""""""""""""
+^^^^^^^^^^^^^^^
 
 SeqAn allows to read or write record-structured files through two types of classes: :dox:`FormattedFileIn` and :dox:`FormattedFileOut`.
 Classes of type :dox:`FormattedFileIn` allow to read files, whereas classes of type :dox:`FormattedFileOut` allow to write files.
@@ -40,16 +39,28 @@ Note how these types of classes **do not allow to read and write the same file a
 
 These types of classes provide the following I/O operations on formatted files:
 
-#. open a file given its filename or attach to an existing stream like `std::cin` or `std::cout`;
-#. guess the file format from the file content or filename extension;
-#. access compressed or uncompressed files transparently.
+#. Open a file given its filename or attach to an existing stream like `std::cin` or `std::cout`.
+#. Guess the file format from the file content or filename extension.
+#. Access compressed or uncompressed files transparently.
+
+SeqAn provides the following file formats:
+
+* :dox:`SeqFileIn`, :dox:`SeqFileOut` (see Tutorial :ref:`tutorial-io-sequence-io`)
+* :dox:`BamFileIn`, :dox:`BamFileOut` (see Tutorial :ref:`tutorial-io-sam-bam-io`)
+* :dox:`BedFileIn`, :dox:`BedFileOut` (see Tutorial :ref:`tutorial-io-bed-io`)
+* :dox:`VcfFileIn`, :dox:`VcfFileOut` (see Tutorial :ref:`tutorial-io-vcf-io`)
+* :dox:`GffFileIn`, :dox:`GffFileOut` (see Tutorial :ref:`tutorial-io-gff-and-gtf-io`)
+* :dox:`RoiFileIn`, :dox:`RoiFileOut`
+* :dox:`SimpleIntervalsFileIn`, :dox:`SimpleIntervalsFileInOut`
+* :dox:`UcscFileIn`, :dox:`UcscFileOut`
+
 
 .. warning::
 
     Access to compressed files relies on external libraries.
     For instance, you need to have zlib installed for reading ``.gz`` files and libbz2 for reading ``.bz2`` files.
     If you are using Linux or OS X and you followed the :ref:`tutorial-getting-started` tutorial closely, then you should have already installed the necessary libraries.
-    On Windows, you will need to follow :ref:`how-to-install-contribs-on-windows` to get the necessary libraries.
+    On Windows, you will need to follow :ref:`infra-use-install-dependencies` to get the necessary libraries.
 
     You can check whether you have installed these libraries by running CMake again.
     Simply call ``cmake .`` in your build directory.
@@ -67,9 +78,8 @@ Nonetheless, **these functionalities are independent from the particular file fo
 
 The demo application shown here is a simple BAM to SAM converter.
 
-
 Includes
-""""""""
+^^^^^^^^
 
 Support for a specific format comes by including a specific header file.
 In this case, we include the BAM header file:
@@ -77,9 +87,8 @@ In this case, we include the BAM header file:
 .. includefrags:: demos/tutorial/file_io_overview/example1.cpp
    :fragment: include
 
-
 Opening and Closing Files
-"""""""""""""""""""""""""
+^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Classes of type :dox:`FormattedFileIn` and :dox:`FormattedFileOut` allow to :dox:`FormattedFile#open` and :dox:`FormattedFile#close` files.
 
@@ -93,34 +102,34 @@ Alternatively, a file can be opened after construction by calling :dox:`Formatte
 .. includefrags:: demos/tutorial/file_io_overview/example1.cpp
    :fragment: open
 
-Noe that any file is closed *automatically* whenever the :dox:`FormattedFileIn` or :dox:`FormattedFileOut` object goes out of scope.
+Note that any file is closed *automatically* whenever the :dox:`FormattedFileIn` or :dox:`FormattedFileOut` object goes out of scope.
 Eventually, a file can be closed *manually* by calling :dox:`FormattedFile#close`.
 
 Accessing the Header
-""""""""""""""""""""
+^^^^^^^^^^^^^^^^^^^^
 
 To access the header, we need an object representing the format-specific header.
 In this case, we use an object of type :dox:`BamHeader`.
-The content of this object can be ignored for now, it will be covered in the :ref:`tutorial-sam-bam-io` tutorial.
+The content of this object can be ignored for now, it will be covered in the :ref:`tutorial-io-sam-bam-io` tutorial.
 
 .. includefrags:: demos/tutorial/file_io_overview/example1.cpp
    :fragment: header
 
-Function :dox:`FormattedFileIn#readHeader` reads the header from the input SAM file and :dox:`FormattedFileOut#writeHeader` writes it to the BAM output file.
+The function :dox:`FormattedFileIn#readHeader` reads the header from the input BAM file and :dox:`FormattedFileOut#writeHeader` writes it to the SAM output file.
 
 Accessing the Records
-"""""""""""""""""""""
+^^^^^^^^^^^^^^^^^^^^^
 
 Again, to access records, we need an object representing format-specific information.
 In this case, we use an object of type :dox:`BamAlignmentRecord`.
-Each call to :dox:`FormattedFileIn#readRecord` reads one record from the SAM input file and moves the :dox:`BamFileIn` forward.
-Each call to :dox:`FormattedFileOut#writeRecord` writes the record just read to the BAM output files.
+Each call to :dox:`FormattedFileIn#readRecord` reads one record from the BAM input file and moves the :dox:`BamFileIn` forward.
+Each call to :dox:`FormattedFileOut#writeRecord` writes the record just read to the SAM output files.
 We check the end of the input file by calling :dox:`FormattedFile#atEnd`.
 
 .. includefrags:: demos/tutorial/file_io_overview/example1.cpp
    :fragment: records
 
-Our small SAM to BAM conversion demo is ready.
+Our small BAM to SAM conversion demo is ready.
 The tool still lacks error handling, reading from standard input and writing to standard output.
 You are now going to add these features.
 
@@ -129,12 +138,12 @@ Error Handling
 
 We distinguish between two types of errors: *low-level* file I/O errors and *high-level* file format errors.
 Possible file I/O errors can affect both input and output files.
-Example of errors are: the file permissions forbid a certain operations, the file does not exist, there is a disk reading error, a file being read gets deleted while we are reading from it, or there is a physical error in the hard disk.
+Example of errors are: the file permissions forbid a certain operation, the file does not exist, there is a disk reading error, a file being read gets deleted while we are reading from it, or there is a physical error in the hard disk.
 Conversely, file format errors can only affect input files: such errors arise whenever the content of the input file is incorrect or damaged.
 Error handling in SeqAn is implemented by means of exceptions.
 
 I/O Errors
-""""""""""
+^^^^^^^^^^
 
 All :dox:`FormattedFile#FormattedFile FormattedFileIn` and :dox:`FormattedFile#FormattedFile FormattedFileOut` constructors and functions throw exceptions of type :dox:`IOError` to signal *low-level* file I/O errors.
 Therefore, it is sufficient to catch these exceptions to handle I/O errors properly.
@@ -154,6 +163,9 @@ Assignment 1
    Objective
      Improve the program above to detect file I/O errors.
 
+   Hint
+     Use the :dox:`IOError` class.
+
    Solution
      .. container:: foldable
 
@@ -161,7 +173,7 @@ Assignment 1
 
 
 Format Errors
-"""""""""""""
+^^^^^^^^^^^^^
 
 Classes of types :dox:`FormattedFileIn` throw exceptions of type :dox:`ParseError` to signal *high-level* input file format errors.
 
@@ -195,7 +207,7 @@ For instance, you can pass `std::cin` to any :dox:`FormattedFile#FormattedFile F
     Therefore, the file format has to be specified explicitly by providing a tag, e.g. :dox:`FileFormats#Sam` or :dox:`FileFormats#Bam`.
 
 Assignment 3
-""""""""""""
+^^^^^^^^^^^^
 
 .. container:: assignment
 
@@ -222,11 +234,11 @@ If you want, you can now have a look at the API documentation of the :dox:`Forma
 
 You can now read the tutorials for **already supported file formats**:
 
-* :ref:`tutorial-sequence-io`
-* :ref:`tutorial-sam-bam-io`
-* :ref:`tutorial-vcf-io`
-* :ref:`tutorial-bed-io`
-* :ref:`tutorial-gff-and-gtf-io`
+* :ref:`tutorial-io-sequence-io`
+* :ref:`tutorial-io-sam-bam-io`
+* :ref:`tutorial-io-vcf-io`
+* :ref:`tutorial-io-bed-io`
+* :ref:`tutorial-io-gff-and-gtf-io`
 
 .. COMMENT or, if you want to learn how to develop **support for new file formats** then read the following article:
     * :ref:`tutorial-custom-io`
diff --git a/manual/source/Tutorial/GffAndGtfIO.rst b/manual/source/Tutorial/InputOutput/GffAndGtfIO.rst
similarity index 87%
rename from manual/source/Tutorial/GffAndGtfIO.rst
rename to manual/source/Tutorial/InputOutput/GffAndGtfIO.rst
index 30c634d..a479c3c 100644
--- a/manual/source/Tutorial/GffAndGtfIO.rst
+++ b/manual/source/Tutorial/InputOutput/GffAndGtfIO.rst
@@ -1,9 +1,8 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-gff-and-gtf-io:
+.. _tutorial-io-gff-and-gtf-io:
 
 GFF and GTF I/O
 ===============
@@ -18,13 +17,13 @@ Duration
  45 min
 
 Prerequisites
-  :ref:`tutorial-sequences`, :ref:`tutorial-input-output-overview`, `GFF Format Specification <http://genome.ucsc.edu/FAQ/FAQformat.html#format3>`_
+  :ref:`tutorial-datastructures-sequences`, :ref:`tutorial-io-input-output-overview`, `GFF Format Specification <http://genome.ucsc.edu/FAQ/FAQformat.html#format3>`_
 
 This tutorial shows how to read and write GFF and GTF files using the :dox:`GffFileIn` and :dox:`GffFileOut` classes.
 It starts out with a quick reminder on the structure of GFF and GTF files and will then continue with how to read and write GFF and GTF files.
 
 The GFF and GTF formats are used for annotating genomic intervals (an interval with begin/end position on a contig/chromosome).
-GFF exist in versions 2 and 3 and GTF is sometimes called "GFF 2.5".
+GFF exists in versions 2 and 3 and GTF is sometimes called "GFF 2.5".
 There are specifications for `GFF 2 <http://www.sanger.ac.uk/resources/software/gff/spec.html>`_, `GFF 3 <http://www.sequenceontology.org/gff3.shtml>`_, and `GTF <http://mblab.wustl.edu/GTF22.html>`_ available elsewhere.
 GFF and GTF are TSV-based formats and in general have the same structure.
 The main difference is the underlying system/ontology for the annotation but also smaller differences in the format.
@@ -88,17 +87,17 @@ attributes (9)
    There are two common ways of specifying intervals.
 
    #. Start counting positions at 1 and give intervals by the first and last position that are part of the interval (closed intervals).
-      For example, the interval ``[1,000; 2,000]`` starts at character 1,000 and ends at character 2,000 and includes it.
+      For example, the interval ``[1000; 2000]`` starts at character 1,000 and ends at character 2000 and includes it.
       This way is natural to non-programmers and used when giving coordinates in GFF files or genome browsers such as UCSC Genome Browser and IGV.
    #. Start counting positions at 0 and give intervals by the first position that is part of the interval and giving the position behind the last position that is part of the interval.
-      The interval from above would be ``[999; 2,000)`` in this case.
+      The interval from above would be ``[999; 2000)`` in this case.
 
    In text representations, such as GFF and GTF, 1-based closed intervals are used whereas in the internal binary data structures, SeqAn uses 0-based half-open intervals.
 
 A First Working Example
 -----------------------
 
-The following example shows an example of a program that reads the file with the path ``example.gff`` and prints its contents back to the user on standard output.
+The following example shows an example of a program that reads the file ``example.gff`` and prints its contents back to the user on standard output.
 
 .. includefrags:: demos/tutorial/gff_and_gtf_io/example1.cpp
 
@@ -121,6 +120,7 @@ Assignment 1
 
          .. includefrags:: demos/tutorial/gff_and_gtf_io/solution1.cpp
 
+         .. includefrags:: demos/tutorial/gff_and_gtf_io/solution1.cpp.stdout
 
 Accessing the Records
 ---------------------
@@ -130,7 +130,7 @@ The class :dox:`GffRecord` stores one record in a Gff file.
 .. includefrags:: demos/tutorial/gff_and_gtf_io/base.cpp
       :fragment: GffRecord
 
-The static members ``INVALID_POS``, ``INVALID_REFID`` store sentinel values for marking positions and reference sequence ids as invalid.
+The static members ``INVALID_POS`` and ``INVALID_REFID`` store sentinel values for marking positions and reference sequence ids as invalid.
 The static funtion ``INVALID_SCORE()`` returns the IEEE float "NaN" value.
 
 Assignment 2
diff --git a/manual/source/Tutorial/IndexedFastaIO.rst b/manual/source/Tutorial/InputOutput/IndexedFastaIO.rst
similarity index 86%
rename from manual/source/Tutorial/IndexedFastaIO.rst
rename to manual/source/Tutorial/InputOutput/IndexedFastaIO.rst
index 403ea1c..a9f7383 100644
--- a/manual/source/Tutorial/IndexedFastaIO.rst
+++ b/manual/source/Tutorial/InputOutput/IndexedFastaIO.rst
@@ -1,9 +1,8 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-indexed-fasta-io:
+.. _tutorial-io-indexed-fasta-io:
 
 Indexed FASTA I/O
 =================
@@ -19,7 +18,7 @@ Duration
   30 min
 
 Prerequisites
-  :ref:`tutorial-sequences`
+  :ref:`tutorial-datastructures-sequences`
 
 The idea of FASTA index files (*FAI*) comes from the `samtools <http://samtools.sourceforge.net/samtools.shtml>`_ program by Heng Li.
 The program provides a command ``samtools faidx`` for rapidly accessing parts of a large FASTA file (e.g. querying for the first chromosome by the identifier "chr1" or querying for 900 characters starting from character 100 (1-based) by ``chr1:100-1,000``).
@@ -27,7 +26,7 @@ To do this, the program creates an index file that contains one entry for each s
 If the FASTA file is named ``path/sequence.fasta``, the index file is usually named ``path/sequence.fasta.fai``.
 
 Using such index files, it is possible to rapidly read parts of the given sequence file.
-The module ``<seqan/seq_io.h>`` allows to create and read such ``.fai`` index files and exposes an API to read parts randomly of FASTA file.
+The module ``<seqan/seq_io.h>`` allows to create and read such ``.fai`` index files and exposes an API to read parts of FASTA file randomly.
 
 .. note::
 
@@ -40,17 +39,17 @@ The module ``<seqan/seq_io.h>`` allows to create and read such ``.fai`` index fi
     However, it is common to store the sequence identifier (*id*) at the beginning of the metadata field before the first space.
     The id is unique to the whole file and often identifies the associated sequence uniquely in a database (see section Sequence Identifiers on the `Wikipedia FASTA format <http://en.wikipedia.org/wiki/FASTA_format>`_ page).
 
-    While not documented anywhere explicitely, **only the characters up to the first space are used as identifiers** by widely used tools such as `BWA <http://bio-bwa.sourceforge.net/>`_.
+    While not documented anywhere explicitly, **only the characters up to the first space are used as identifiers** by widely used tools such as `BWA <http://bio-bwa.sourceforge.net/>`_.
     Only the identifier is carried over into files generated from the input files (BWA uses the sequence id from the genome FASTA to identify the contig/chromosome and the read id as the read name in the SAM output).
 
 How Does It Work?
 -----------------
 
-There are two requirements that a FASTA file has to fulfill to work with the FAI scheme.
-For each sequence in the FASTA file, the number of characters stored per line has to be the same and the number of bytes per line has to be the same.
+There are two requirements that a FASTA file has to fulfill to work with the FAI scheme:
+For each sequence in the FASTA file, **the number of characters and the number of bytes per line has to be the same**.
 The first restriction speaks for itself, the second restriction means that the same line ending character has to be used and no line should contain any additional spaces.
 
-The index file then stores records of sequence identifier, length, the offset of the first sequence character in the file, the number of characters per line, and the number of bytes per line.
+The index file then stores records of the sequence identifier, the length, the offset of the first sequence character in the file, the number of characters per line, and the number of bytes per line.
 With this information, we can easily compute the byte offset of the i-th character of a sequence in a file by looking at its index record.
 We skip to this byte offset in the file and from there, we can read the necessary sequence characters.
 
@@ -58,7 +57,7 @@ Building the Index
 ------------------
 
 The class :dox:`FaiIndex` allows for building and loading FAI indices.
-fo build such an index, we use the function :dox:`FaiIndex#build` of the class :dox:`FaiIndex`.
+To build such an index, we use the function :dox:`FaiIndex#build` of the class :dox:`FaiIndex`.
 The first parameter is the :dox:`FaiIndex` object, the second is the path to the FASTA file.
 The function returns a ``bool`` indicating whether the mapping was successful (``true`` on success, ``false`` on failure).
 
@@ -93,7 +92,7 @@ Assignment 1
    Hints
      .. container:: foldable
 
-	Using the two-parameter variant of :dox:`FaiIndex#build` is good enough.
+       Using the two-parameter variant of :dox:`FaiIndex#build` is good enough.
 
    Solution
      .. container:: foldable
@@ -109,7 +108,7 @@ The function returns a ``bool`` indicating whether the mapping was successful (`
 .. includefrags:: demos/tutorial/indexed_fasta_io/base.cpp
     :fragment: open_index1
 
-In the example above, the FAI file ``"path/to/file.fasta.fai"`` would be
+In the example above, the FAI file ``"/demos/tutorial/indexed_fasta_io/example.fasta.fai"`` would be
 loaded. Optionally, we can specify an extra path to the FAI file:
 
 .. includefrags:: demos/tutorial/indexed_fasta_io/base.cpp
@@ -146,13 +145,13 @@ Assignment 2
      A path to a FASTA file, the id of the sequence, a begin and an end position.
      The program should then read the given infix of the given sequence from the file and print it to stdout.
 
-  Hint
-    .. container:: foldable
+   Hint
+     .. container:: foldable
 
        Use the function :dox:`lexicalCast` to convert strings of numbers into integers.
 
-  Solution
-    .. container:: foldable
+   Solution
+     .. container:: foldable
 
        The program appears to be very long, but most is error handling, as usual with robust I/O code.
 
diff --git a/manual/source/Tutorial/SamAndBamIO.rst b/manual/source/Tutorial/InputOutput/SamAndBamIO.rst
similarity index 86%
rename from manual/source/Tutorial/SamAndBamIO.rst
rename to manual/source/Tutorial/InputOutput/SamAndBamIO.rst
index 9dc0f0b..99293d0 100644
--- a/manual/source/Tutorial/SamAndBamIO.rst
+++ b/manual/source/Tutorial/InputOutput/SamAndBamIO.rst
@@ -1,9 +1,8 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-sam-bam-io:
+.. _tutorial-io-sam-bam-io:
 
 SAM and BAM I/O
 ===============
@@ -18,19 +17,19 @@ Duration
   1 h (45 min if you know the SAM format)
 
 Prerequisites
-  :ref:`tutorial-sequences`, :ref:`tutorial-input-output-overview`, `SAM Format Specification <http://samtools.sourceforge.net/SAM1.pdf>`_
+  :ref:`tutorial-datastructures-sequences`, :ref:`tutorial-io-input-output-overview`, `SAM Format Specification <http://samtools.sourceforge.net/SAM1.pdf>`_
 
 Overview
 --------
 
 .. warning::
-    
+
     Before you can read/write BAM files (bgzf compressed SAM files) you need to make sure that your program is linked against the zlib library.
     When you build your application within the SeqAn build infrastructure, the zlib library is automatically located by looking at the standard places for the library.
-    Also have a look at :ref:`tutorial-input-output-overview-formatted-files` to read more about support of compressed file I/O.
-    If the macro ``SEQAN_HAS_ZLIB`` is set to ``0`` then reading/writing BAM file format is disabled. 
+    Also have a look at :ref:`tutorial-io-input-output-overview-formatted-files` to read more about support of compressed file I/O.
+    If the macro ``SEQAN_HAS_ZLIB`` is set to ``0`` then reading/writing BAM file format is disabled.
     It is set to ``1`` if the zlib could be found and reading/writing of compressed files is enabled automatically.
-    You can read :ref:`build-manual-integration-with-your-own-build-system`, :ref:`build-manual-using-the-find-seqan-cmake-module` and for windows users :ref:`how-to-install-contribs-on-windows` for further notes about using the zlib and libbz2 in your build infrastructure.
+    You can read :ref:`infra-use-cmake`, :ref:`infra-use-custom` and :ref:`infra-use-install-dependencies` for further notes about using the zlib and libbz2 in your build infrastructure.
 
 This tutorial shows how to read and write SAM and BAM files using the :dox:`BamFileIn` and :dox:`BamFileOut` classes.
 It starts out with a quick reminder on the structure of SAM (and also BAM) files and continues with how to read and write SAM/BAM files and access the tags of a record.
@@ -40,27 +39,27 @@ It starts out with a quick reminder on the structure of SAM (and also BAM) files
     Note that this tutorial is targeted at readers that already know about the SAM format.
     If you do not know about the SAM format yet, then this tutorial will be harder for your to understand.
 
-Both SAM and BAM file store multi-read alignments.
+Both SAM and BAM files store multi-read alignments.
 Storing alignments of longer sequences such as contigs from assemblies is also possible, but less common.
 Here, we will focus on multi-read alignments.
 
 SAM files are text files, having one record per line.
-BAM files are just binary, compressed versions of SAM files that have a stricter organization and aim to be more efficiently useable by programs and computers.
+BAM files are just binary, compressed versions of SAM files that have a stricter organization and aim to be more efficiently usable by programs and computers.
 The nuts and bolts of the formats are described in the `SAM Format Specification <http://samtools.sourceforge.net/SAM1.pdf>`_.
 
 The SAM and BAM related I/O functionality in SeqAn focuses on allowing access to these formats in SeqAn with thin abstractions.
-The :ref:`tutorial-fragment-store` Tutorial shows how to get a more high-level abstraction for multi-read alignments.
+The :ref:`tutorial-datastructures-store-fragment-store` Tutorial shows how to get a more high-level abstraction for multi-read alignments.
 
 .. important::
 
     SAM/BAM I/O vs. Fragment Store
 
-    The :ref:`tutorial-fragment-store` provides a high-level view of multi-read alignments.
+    The :ref:`tutorial-datastructures-store-fragment-store` provides a high-level view of multi-read alignments.
     This is very useful if you want to do SNP or small indel detection because you need to access the alignment of the reads around your candidate regions.
     However, storing the whole alignment of a 120GB BAM file obviously is not a good idea.
 
-    The SAM/BAM I/O functionaliy in SeqAn is meant for sequentially reading through SAM and BAM files.
-    Jumping within BAM files using BAI indices is described in the `Using BAM Indices`_.
+    The SAM/BAM I/O functionality in SeqAn is meant for sequentially reading through SAM and BAM files.
+    Jumping within BAM files using BAI indices is described in the `Using BAM Indices`_ section of this tutorial.
 
 
 SAM / BAM Format
@@ -75,7 +74,7 @@ The header consists of multiple lines, starting with an ``'@'`` character, each
 Each record starts with its identifier and is followed by tab-separated tags.
 Each tag in the header consists of a two-character identifier, followed by ``':'``, followed by the value.
 
-If present, the ``@HD`` record must be the first record and specifies the SAM version (tag ``VN``) used in this file and the sort order (``SO``).
+If present, the ``@HD`` record must be the first record which specifies the SAM version (tag ``VN``) used in this file and the sort order (``SO``).
 The optional ``@SQ`` header records give the reference sequence names (tag ``SN``) and lengths (tag ``LN``).
 There also are other header record types.
 
@@ -141,11 +140,13 @@ A First Working Example
 
 The following program reads a file named ``example.sam`` and prints its contents back to the user on standard output.
 
-.. includefrags:: demos/tutorial/sam_and_bam_io/example1.cpp
+.. includefrags:: demos/tutorial/sam_and_bam_io/solution1.cpp
+
+.. includefrags:: demos/tutorial/sam_and_bam_io/solution1.cpp.stdout
 
 We instantiate a :dox:`BamFileIn` object for reading and a :dox:`BamFileOut` object for writing.
 First, we read the BAM header with :dox:`FormattedFileIn#readRecord` and we write it with :dox:`FormattedFileOut#writeRecord`.
-Then, we read each record from the input file and write it to the output file.
+Then, we read each record from the input file and print it back on standard output.
 The alignment records are read into :dox:`BamAlignmentRecord` objects, which we will focus on below.
 
 Assignment 1
@@ -178,11 +179,20 @@ The following program accesses the :dox:`BamIOContext` of its :dox:`BamFileIn` a
 
 .. includefrags:: demos/tutorial/sam_and_bam_io/example2.cpp
 
+The output looks like this:
+
+.. includefrags:: demos/tutorial/sam_and_bam_io/example2.cpp.stdout
+
 Accessing the Records
 ---------------------
 
 The class :dox:`BamAlignmentRecord` stores one alignment record of a SAM or BAM file.
-The class gives a in-memory representation that (1) is independent of whether it comes from/goes to a SAM or BAM file, (2) at the same time follows both formats closely, (3) allows for efficient storage and usage in C++, and (4) integrates well with the rest of the SeqAn library.
+The class gives an in-memory representation that
+
+#. is independent of whether it comes from/goes to a SAM or BAM file,
+#. at the same time follows both formats closely,
+#. allows for efficient storage and usage in C++ and
+#. integrates well with the rest of the SeqAn library.
 
 The following definition gives an overview of the available fields, their types, and how they map to the SAM and BAM fields.
 Note that we use the :dox:`CigarElement` class to store entries in the CIGAR string.
@@ -223,6 +233,8 @@ Assignment 2
 
         .. includefrags:: demos/tutorial/sam_and_bam_io/solution2.cpp
 
+        .. includefrags:: demos/tutorial/sam_and_bam_io/solution2.cpp.stdout
+
 
 Accessing the Records' Tags
 ---------------------------
@@ -282,16 +294,18 @@ Assignment 3
 
         .. includefrags:: demos/tutorial/sam_and_bam_io/solution3.cpp
 
+        .. includefrags:: demos/tutorial/sam_and_bam_io/solution3.cpp.stdout
 
 Using BAM Indices
 -----------------
 
-SeqAn also contains features for reading BAM indices with the format ``.bai``. These indices can be built using the ``samtools index`` command. In the near future we plan to support building the bam index with SeqAn as well.   
+SeqAn also contains features for reading BAM indices with the format ``.bai``. These indices can be built using the ``samtools index`` command. In the near future we plan to support building the bam index with SeqAn as well.
 
 You can read indices into a :dox:`BaiBamIndex` object with the function :dox:`BamIndex#open`. Then, you can use the function :dox:`BamFileIn#jumpToRegion` to jump to a specific position within BAM files. After jumping, the next record to be read is before the given region. Therefore, you have to skip records until you access the one you are looking for.
 
 .. includefrags:: demos/tutorial/sam_and_bam_io/example7.cpp
 
+.. includefrags:: demos/tutorial/sam_and_bam_io/example7.cpp.stdout
 
 Next Steps
 ----------
diff --git a/manual/source/Tutorial/SequenceIO.rst b/manual/source/Tutorial/InputOutput/SequenceIO.rst
similarity index 84%
rename from manual/source/Tutorial/SequenceIO.rst
rename to manual/source/Tutorial/InputOutput/SequenceIO.rst
index 3c72580..6080082 100644
--- a/manual/source/Tutorial/SequenceIO.rst
+++ b/manual/source/Tutorial/InputOutput/SequenceIO.rst
@@ -1,9 +1,8 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-sequence-io:
+.. _tutorial-io-sequence-io:
 
 Sequence I/O
 ============
@@ -18,7 +17,7 @@ Duration
   20 min
 
 Prerequisites
-  :ref:`tutorial-sequences`, :ref:`tutorial-input-output-overview`
+  :ref:`tutorial-datastructures-sequences`, :ref:`tutorial-io-input-output-overview`
 
 This tutorial explains how to read and write sequence files using the :dox:`SeqFileIn` and :dox:`SeqFileOut` classes.
 These classes provide an API for accessing sequence files in different file formats, either compressed or uncompressed.
@@ -47,8 +46,18 @@ We can read sequence files with the :dox:`SeqFileIn` class and write them with t
 These classes support files in FASTA, FASTQ, EMBL or GenBank format.
 
 Note that :dox:`SeqFileOut` will guess the format from the file name.
-A file ending in ``.fa`` and ``.fasta`` mean FASTA, ``.fq`` and ``.fastq`` means FASTQ.
 
++--------------+----------------------+
+| File Format  | File Extension       |
++==============+======================+
+| FASTA        | ``.fa``, ``.fasta``  |
++--------------+----------------------+
+| FASTQ        | ``.fq``, ``.fastq``  |
++--------------+----------------------+
+| EMBL         | ``.embl``            |
++--------------+----------------------+
+| GenBank      | ``.gbk``             |
++--------------+----------------------+
 
 A First Working Example
 -----------------------
@@ -71,7 +80,7 @@ Assignment 1
      Reproduction
 
    Objective
-     Copy the above example of FASTA file in a new file ``example.fa`` in a directory of your choice.
+     Copy the above example of a FASTA file in a new file ``example.fa`` in a directory of your choice.
 
      Copy the program above into a new application ``basic_seq_io_example``, adjust the path ``"example.fa"`` to the just created FASTA file, compile the program, and run it.
 
@@ -88,7 +97,7 @@ Assignment 1
 Handling Errors
 ---------------
 
-As explained in the :ref:`tutorial-input-output-overview` tutorial, :dox:`SeqFileIn` and :dox:`SeqFileOut` throw exceptions to signal eventual errors.
+As explained in the :ref:`tutorial-io-input-output-overview` tutorial, :dox:`SeqFileIn` and :dox:`SeqFileOut` throw exceptions to signal eventual errors.
 Invalid characters inside an input file will be signaled by :dox:`SeqFileIn#readRecord` via parsing exceptions.
 
 Assignment 2
@@ -102,6 +111,9 @@ Assignment 2
    Objective
      Improve the above program to handle errors.
 
+   Hint
+     You can use the generic class :dox:`Exception` to catch both low-level and high-level I/O errors.
+
    Solution
      .. container:: foldable
 
@@ -124,7 +136,7 @@ The class :dox:`SeqFileIn` provides the functions :dox:`SeqFileIn#readRecord` an
     Reading records in batches is more efficient than reading single records.
 
 
-Note that the function :dox:`SeqFileIn#readRecords` use :dox:`StringSet` instead of :dox:`String`.
+Note that the function :dox:`SeqFileIn#readRecords` uses :dox:`StringSet` instead of :dox:`String`.
 By default, :dox:`SeqFileIn#readRecords` reads **all** remaining records.
 Optionally, one can specify a batch of records to be read.
 
@@ -205,5 +217,5 @@ Next Steps
 ----------
 
 * Read the Wikipedia articles about the `FASTA file format <http://en.wikipedia.org/wiki/FASTA_format>`_ and the `FASTQ file format and quality values <http://en.wikipedia.org/wiki/FASTQ_format>`_ to refresh your knowledge.
-* Read the :ref:`tutorial-indexed-fasta-io` tutorial to learn how to read FASTA files efficiently in a random-access fashion.
+* Read the :ref:`tutorial-io-indexed-fasta-io` tutorial to learn how to read FASTA files efficiently in a random-access fashion.
 * Continue with the :ref:`tutorial`.
diff --git a/manual/source/Tutorial/VcfIO.rst b/manual/source/Tutorial/InputOutput/VcfIO.rst
similarity index 81%
rename from manual/source/Tutorial/VcfIO.rst
rename to manual/source/Tutorial/InputOutput/VcfIO.rst
index ba9dd2f..c6a3241 100644
--- a/manual/source/Tutorial/VcfIO.rst
+++ b/manual/source/Tutorial/InputOutput/VcfIO.rst
@@ -1,9 +1,8 @@
 .. sidebar:: ToC
 
-   .. contents::
+    .. contents::
 
-
-.. _tutorial-vcf-io:
+.. _tutorial-io-vcf-io:
 
 VCF I/O
 =======
@@ -18,7 +17,7 @@ Duration
   1 h (45 min if you know the VCF format)
 
 Prerequisites
-  :ref:`tutorial-sequences`, :ref:`tutorial-input-output-overview`, `VCF Format Specification (v4.2) <https://samtools.github.io/hts-specs/VCFv4.2.pdf>`_
+  :ref:`tutorial-datastructures-sequences`, :ref:`tutorial-io-input-output-overview`, `VCF Format Specification (v4.2) <https://samtools.github.io/hts-specs/VCFv4.2.pdf>`_
 
 Overview
 --------
@@ -32,14 +31,18 @@ It starts out with a quick reminder on the structure of VCF files and will then
    If you do not know about the VCF format yet, then this tutorial will be harder for your to understand.
 
 The VCF format allows storing genomic variants of individuals with respect to a reference.
-The general file structure starts with (1) meta-information lines starting with ``##``, one (2) header line giving the names of the individuals, and (3) an arbitrary number of records.
+The general file structure starts with 
+
+#. several meta-information lines starting with ``##``,
+#. one header line giving the names of the individuals, and
+#. an arbitrary number of records.
 
 The information of (1) and (2) will be read and written together as the "header" of the file.
 For simple variants such as SNPs and small indels, each record corresponds to a variant.
 More complex variants can be stored in multiple records (see the VCF standard on "breakends" for more information).
 
 The ``vcf_io`` module of SeqAn allows to read and write VCF files record-wise.
-Since the structure of the fields in the VCF format often is very complex and the format undergoes changes in this respect, SeqAn only offers basic parsing functionality: The position is stored as a 0-based integer, reference names are stored in a reference name store (similar as in the :ref:`tutorial-sam-bam-io` Tutorial), and the quality is stored as a ``float`` value.
+Since the structure of the fields in the VCF format often is very complex and the format undergoes changes in this respect, SeqAn only offers basic parsing functionality: The position is stored as a 0-based integer, reference names are stored in a reference name store (similar as in the :ref:`tutorial-io-sam-bam-io` Tutorial), and the quality is stored as a ``float`` value.
 
 The remaining fields have to be parsed from and composed as strings in the user's application.
 
@@ -101,7 +104,7 @@ INFO
 FORMAT
   Colon-separated list of entries that are found for each variant.
 
-The 9 mandatory columns are followed by as many columns as there are individual.
+The 9 mandatory columns are followed by as many columns as there are individuals.
 For each individual, there is a colon-separated list of values in the order given in the FORMAT cell.
 
 .. tip::
@@ -111,18 +114,18 @@ For each individual, there is a colon-separated list of values in the order give
     There are two common ways of specifying intervals.
 
      #. Start counting positions at 1 and give intervals by the first and last position that are part of the interval (closed intervals).
-        For example, the interval ``[1,000; 2,000]`` starts at character 1,000 and ends at character 2,000 and includes it.
+        For example, the interval ``[1000; 2000]`` starts at character 1000 and ends at character 2000 and includes it.
         This way is natural to non-programmers and used when giving coordinates in GFF files or genome browsers such as UCSC Genome Browser and IGV.
      #. Start counting positions at 0 and give intervals by the first position that is part of the interval and giving the position behind the last position that is part of the interval.
-        The interval from above would be ``[999; 2,000)`` in this case.
+        The interval from above would be ``[999; 2000)`` in this case.
 
     In text representations, such as VCF, 1-based closed intervals are used whereas in the internal binary data structures, SeqAn uses 0-based half-open intervals.
-    When fields are reads as text, numbers are not translated, of course.
+    When fields are read as text, numbers are not translated, of course.
 
 A First Working Example
 -----------------------
 
-The following example shows an example of a program that reads the file with the path ``example.vcf`` and prints its contents back to the user on standard output.
+The following example shows a program that reads the file ``example.vcf`` and prints its contents back to the user on standard output.
 
 .. includefrags:: demos/tutorial/vcf_io/example1.cpp
 
@@ -131,6 +134,10 @@ First, the header is copied by means of a :dox:`VcfHeader` object that we will s
 Then, the input file is read record by record and written out to standard output.
 The alignment records are read into :dox:`VcfRecord` objects which we will focus on below.
 
+The output of the example program looks as follows:
+
+.. includefrags:: demos/tutorial/vcf_io/example1.cpp.stdout
+
 Assignment 1
 """"""""""""
 
@@ -165,7 +172,7 @@ Note how most fields are represented by :dox:`CharString Strings`:
 .. includefrags:: demos/tutorial/vcf_io/base.cpp
       :fragment: vcfRecord
 
-The static members ``INVALID_POS``, ``INVALID_REFID`` store sentinel values for marking positions and reference sequence ids as invalid.
+The static members ``INVALID_POS`` and ``INVALID_REFID`` store sentinel values for marking positions and reference sequence ids as invalid.
 The static funtion ``MISSING_QUAL()`` returns the IEEE float "NaN" value.
 
 .. tip::
@@ -214,7 +221,12 @@ Assignment 3
      Application
 
    Objective
-     Write a program that prints the VCF file from above.
+     Write a program that manually creates the VCF file from above and than prints it back on standard output.
+
+   Hint
+     * use :dox:`VcfHeaderRecord` to create a header record that can be appended to the :dox:`VcfHeader`
+     * use ``appendValue()`` to append information to the :dox:`VcfIOContext` or the :dox:`VcfHeader`
+     * use the direct member access operator ``.`` if you want to access the information of a :dox:`VcfRecord`
 
    Solution
      .. container:: foldable
diff --git a/manual/source/Tutorial/InputOutput/index.rst b/manual/source/Tutorial/InputOutput/index.rst
new file mode 100644
index 0000000..53749e3
--- /dev/null
+++ b/manual/source/Tutorial/InputOutput/index.rst
@@ -0,0 +1,33 @@
+.. We create this roles for putting the "Introduction: etc. headings
+    on this page without them displaying in the ToC.  This would break
+    rendering the ToC correctly on readthedocs style.  The rubric
+    headings are formatted using CSS.
+
+.. role:: rubric-heading1
+    :class: rubric-heading1
+.. role:: rubric-heading2
+    :class: rubric-heading2
+
+.. _tutorial-io:
+
+Input/Output
+============
+
+.. toctree::
+    :hidden:
+    :titlesonly:
+
+    FileIOOverview
+    SequenceIO
+    IndexedFastaIO
+    BlastIO
+    SamAndBamIO
+    VcfIO
+    BedIO
+    GffAndGtfIO
+
+
+SeqAn supports many standard file formats used in bioinformatics applications.
+The :ref:`first tutorial <tutorial-io-input-output-overview>` shows you the basic concepts and data structures for handling file I/O.
+So this would be a good starting point to learn more about it.
+Otherwise, feel free to look into the tutorials for your desired file format and start reading and writing your files.
\ No newline at end of file
diff --git a/manual/source/Tutorial/sequences.fasta b/manual/source/Tutorial/InputOutput/sequences.fasta
similarity index 100%
rename from manual/source/Tutorial/sequences.fasta
rename to manual/source/Tutorial/InputOutput/sequences.fasta
diff --git a/manual/source/Tutorial/Iterators.rst b/manual/source/Tutorial/Iterators.rst
deleted file mode 100644
index 6721893..0000000
--- a/manual/source/Tutorial/Iterators.rst
+++ /dev/null
@@ -1,203 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _tutorial-iterators:
-
-Iterators
----------
-
-Learning Objective
-  You will learn how to use iterators to traverse containers in SeqAn.
-  After this tutorial, you will be ready to continue with the tutorials about iterating on more complex structures, e.g. :ref:`tutorial-index-iterators`.
-
-Difficulty
-  Basic
-
-Duration
-  30 min
-
-Prerequsites
-  :ref:`tutorial-sequences`
-
-Iterators are objects that can be used to browse through the values of containers such as :dox:`String Strings` or :dox:`Segment Segments`.
-SeqAn also offers a range of iterators to traverse efficiently more complex data structures, e.g. :dox:`Graph Graphs`, whose specific usage will be explained in the corresponding tutorials.
-This tutorial will introduce you into the basic concept of iterators using :dox:`String` iterators as illustration.
-
-Defining Iterators
-~~~~~~~~~~~~~~~~~~
-
-This section will show you how to define different kinds of iterators.
-
-The metafunction :dox:`ContainerConcept#Iterator` can be used to determine the appropriate iterator type for a given a container.
-Some containers offer several kinds of iterators, which can be selected by an optional argument of Iterator.
-For example, the tag :dox:`ContainerIteratorTags#Standard` can be used to get an iterator type that resembles the C++ standard random access iterator.
-The more elaborated :dox:`ContainerIteratorTags#Rooted` iterator, i.e., an iterator that knows its container, can be selected by specifying the :dox:`ContainerIteratorTags#Rooted` tag.
-The construction of an iterator in SeqAn, e.g. for a :dox:`DnaString Dna String`, could look like the following:
-
-.. includefrags:: demos/tutorial/iterators/base.cpp
-    :fragment: construction
-
-.. tip::
-
-   The default iterator implementation is :dox:`ContainerIteratorTags#Standard`.
-   Rooted iterators offer some convenience for the user.
-   They offer additional functions like :dox:`RootedIteratorConcept#container` for determining the container on which the iterator works, and they simplify the interface for other functions like :dox:`RootedIteratorConcept#atEnd`.
-   Moreover, rooted iterators may change the container’s length or capacity, which makes it possible to implement a more intuitive variant of a remove algorithm.
-
-   While rooted iterators can usually be converted into standard iterators, it is not always possible to convert standard iterators back into rooted iterators, since standard iterators may lack the information about the container they work on.
-   Therefore, many functions that return iterators like :dox:`ContainerConcept#begin` or :dox:`ContainerConcept#end` return rooted iterators instead of standard iterators; this way, they can be used to set both rooted and standard iterator variables.
-   Alternatively it is possible to specify the returned iterator type explicitly by passing the iterator kind as a tag argument, e.g. ``begin(str, Standard())``.
-
-Traversing Containers
-~~~~~~~~~~~~~~~~~~~~~
-
-In this section you will learn how to iterate over a container using the basic functionality of iterators.
-
-An iterator always points to one value of the container.
-The function :dox:`RandomAccessContainerConcept#value`, which is equivalent to the ``operator*``, can be used to access this value by reference.
-In contrast :dox:`RandomAccessContainerConcept#getValue` return a copy of the value.
-Functions like :dox:`InputIteratorConcept#goNext` or :dox:`BidirectionalIteratorConcept#goPrevious`, which are equivalent to ``operator++`` and ``operator--`` respectively, can be used to move the iterator to other values within the container.
-
-The functions :dox:`ContainerConcept#begin` and :dox:`ContainerConcept#end`, applied to a container, return iterators to the begin and to the end of the container.
-Note that similar to C++ standard library iterators, the iterator returned by :dox:`ContainerConcept#end` does not point to the last value of the container but to the position behind the last one.
-If the container is empty then ``end() == begin()``.
-
-The following code prints out a sequence and demonstrates how to iterate over a string.
-
-.. includefrags:: demos/tutorial/iterators/base.cpp
-    :fragment: use-case
-
-.. includefrags:: demos/tutorial/iterators/base.cpp.stdout
-    :fragment: use-case
-
-A Working Example
-~~~~~~~~~~~~~~~~~
-
-Let us now clarify the usage of iterators with a working example.
-The following program demonstrates the usage of iterators.
-
-.. includefrags:: demos/tutorial/iterators/sequence_iterator_demo.cpp
-   :fragment: includes
-
-The metafunction :dox:`ContainerConcept#Iterator` returns the iterator type for a given container type.
-In this case the default implementation :dox:`ContainerIteratorTags#Standard` is used.
-
-.. includefrags:: demos/tutorial/iterators/sequence_iterator_demo.cpp
-   :fragment: metafunctions
-
-We can use iterators to iterate over the elements of a container, e.g.  to print the elements.
-
-.. includefrags:: demos/tutorial/iterators/sequence_iterator_demo.cpp
-   :fragment: iterators
-
-Instead of comparing the two iterators ``it`` and ``itEnd``, we could also use the function :dox:`RootedIteratorConcept#atEnd` to check whether we reached the end of the container.
-
-.. includefrags:: demos/tutorial/iterators/sequence_iterator_demo.cpp
-   :fragment: standard-iterators
-
-Next we will use :dox:`RootedIteratorConcept Rooted Iterators`.
-Since :dox:`RootedIteratorConcept Rooted Iterators` know their container, the functions :dox:`RootedRandomAccessIteratorConcept#goBegin` and :dox:`RootedIteratorConcept#atEnd` do not need to get the container as an argument.
-The following example prints for each element of the :dox:`Dna5String Dna5 String` ``genome`` its complement:
-
-.. includefrags:: demos/tutorial/iterators/sequence_iterator_demo.cpp
-   :fragment: rooted-iterators
-
-Some iterators support iteration in reverse order with :dox:`BidirectionalIteratorConcept#goPrevious` as you can see in the next example.
-Note that :dox:`BidirectionalIteratorConcept#goPrevious` is called before the value of ``it2`` is accessed.
-Remember that the end position of a container is always the position behind the last item in the container.
-
-.. includefrags:: demos/tutorial/iterators/sequence_iterator_demo.cpp
-   :fragment: iterators-reverse
-
-:dox:`RandomAccessContainerConcept#assignValue` can be used to change the value of an iterator.
-
-.. includefrags:: demos/tutorial/iterators/sequence_iterator_demo.cpp
-   :fragment: assign-value
-
-The output of the program is as follows.
-
-.. includefrags:: demos/tutorial/iterators/sequence_iterator_demo.cpp.stdout
-
-Assignment 1
-^^^^^^^^^^^^
-
-.. container:: assignment
-
-   Type
-     Review
-
-   Objective
-     Copy the code below, which replaces all N's of a given :dox:`String` with A's.
-     Adjust the code to use iterators to traverse the container.
-     Use the :dox:`ContainerIteratorTags#Standard` iterator.
-
-     .. includefrags:: demos/tutorial/iterators/assignment_1.cpp
-
-    Solution
-
-      Click **more...** to see the solution.
-
-      .. container:: foldable
-
-         .. includefrags:: demos/tutorial/iterators/assignment_1_solution.cpp
-
-Assignment 2
-^^^^^^^^^^^^
-
-.. container:: assignment
-
-   Type
-     Application
-
-   Objective
-     Use the code from above and change the :dox:`ContainerIteratorTags#Standard` to a :dox:`ContainerIteratorTags#Rooted` iterator.
-     Try to shorten the code wherever possible.
-
-   Solution
-     Click **more...** to see the solution.
-
-     .. container:: foldable
-
-        .. includefrags:: demos/tutorial/iterators/assignment_2_solution.cpp
-
-Workshop Assignment 3
-^^^^^^^^^^^^^^^^^^^^^
-
-.. container:: assignment
-
-   Type
-     Review
-
-   Objective
-     In this assignment, we pick up the example from the workshop assignments from the sequences tutorial.
-     Take the last solution and change the code to use Iterators.
-     First, use Standard Iterators to do this.
-
-     .. includefrags:: demos/tutorial/iterators/assignment_3_workshop.cpp
-
-   Solution
-     Click **more...** to see the solution
-
-     .. container:: foldable
-
-        .. includefrags:: demos/tutorial/iterators/assignment_3_workshop_solution.cpp
-
-Workshop Assignment 4
-^^^^^^^^^^^^^^^^^^^^^
-
-.. container:: assignment
-
-   Type
-     Review
-
-   Objective
-     Now, use rooted iterators in the example from Workshop Assignment 3.
-
-   Solution
-     Click **more...** to see the solution.
-
-     .. container:: foldable
-
-        .. includefrags:: demos/tutorial/iterators/assignment_4_workshop_solution.cpp
diff --git a/manual/source/Tutorial/JournaledSet.rst b/manual/source/Tutorial/JournaledSet.rst
deleted file mode 100644
index 5456288..0000000
--- a/manual/source/Tutorial/JournaledSet.rst
+++ /dev/null
@@ -1,615 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _tutorial-data-journaling:
-
-Journaled Set
-=============
-
-Learning Objective
-  This tutorial introduces you to the new data structures Journaled Set and Journaled String.
-  You will learn how to use them and how to exploit these data structures for an efficient analysis, while implementing a native online search.
-
-Difficulty
-  Advanced
-
-Duration
-  2 h
-
-Prerequisites
-  :ref:`tutorial-sequences`, :ref:`tutorial-string-sets`, :ref:`tutorial-iterators`
-
-A typical task in bioinformatics is to find patterns in biological sequences e.g. transcription factors, or to examine different biological traits and the effects of modifications on such traits.
-With the current advances in sequencing technologies, sequences of whole populations have been made available.
-But the time for searching in all these sequences is proportional to the number of sequences searched.
-That's why it is important to find novel strategies to cope with the deluge of sequencing data.
-Since, many biological problems often involve the analysis of sequences of the same species, one effective strategy would be to exploit the similarities of such sequences.
-
-For this special purpose we provide two data structures that are designed to improve the algorithmic tasks.
-The first one is the :dox:`JournaledString` and the second is the :dox:`JournaledSet`.
-
-In this tutorial, we will introduce you to both data structures and implement a simple online search step by step.
-
-Journaled String
-----------------
-
-The :dox:`JournaledString` data structure behaves like a normal :dox:`String` in SeqAn, except that it is composed of two data structures.
-
-#. The first data structure is a :dox:`Holder` which stores a sequence.
-#. The second data structure stores modifications that are made to this particular sequence using a **journal** (see `Journaling Filesystems <http://en.wikipedia.org/wiki/Journaling_file_system>`_ for more information).
-   This journal contains a list of deletions and insertions.
-   The inserted characters are stored in an additional **insertion buffer**.
-
-The advantage of this data structure lies in representing a String as a "patch" to another String.
-The journaled data structure can be modified without loosing the original context.
-We want to show you how to work with these data structures so you can build your own algorithms based on this.
-For this reason we keep the applicational background simple and implement an native online-search algorithm by which we examine different properties of the data structures.
-
-Before we start implementing our online search algorithm, we show you how to work with the Journaled String to learn the basic principles.
-To get access to the Journaled String implementation you have to include the ``<seqan/sequence_journaled.h>`` header file.
-Note that you will need the ``<seqan/file.h>`` too in order to print the sequences.
-
-.. includefrags:: demos/tutorial/journaled_set/example_journal_string_basic.cpp
-   :fragment: main
-
-In the next step we define the Journaled String type.
-A Journaled String is a specialization of the String class and is defined as ``String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> >``.
-The specialization takes two parameters: (1) ``TValue`` defines the alphabet type used for the Journaled String and (2) ``Journaled<>`` selects the Journaled String specialization of the String class.
-
-``Journaled<>`` is further specialized with
-
-* ``THostSpec`` selects the specialization of the underlying host sequence (``Alloc<>`` for [dox:AllocString Alloc String),
-* ``TJournaleSpec`` selects the used implementation to manage the journaled differences (here: ``SortedArray``), and
-* ``TBufferSpec`` selects the used specialization for the internally managed insertion buffer (here: ``Alloc<>`` as well).
-
-In our scenario we use a ``char`` alphabet and [dox:AllocString Alloc String for the host string and the insertion buffer.
-Additionally, we use a ``Sorted Array`` as the model to manage the recorded differences.
-
-We use the metafunction :dox:`HostedConcept#Host` to get the type of the underlying host string used for the Journaled String.
-
-.. includefrags:: demos/tutorial/journaled_set/example_journal_string_basic.cpp
-   :fragment: typedef
-
-Now we can define the variables holding data structures.
-First, we construct our host sequence and after that we construct the Journaled String.
-Then, we set the host sequence using the function :dox:`JournaledString#setHost`.
-Afterwards, we examine the data structure in more detail and print the host sequence the constructed journaled sequence and the nodes of it.
-
-.. includefrags:: demos/tutorial/journaled_set/example_journal_string_basic.cpp
-   :fragment: init
-
-.. tip::
-
-    The Journal
-
-    A node in the Journaled String represents either a part of the host sequence or a part of the insertion buffer.
-    The type of a node is distinguished by the member variable **segmentSource** and can be of value ``SOURCE_ORIGINAL`` to refere to a part in the host or ``SOURCE_PATCH`` to refere to a part in the insertion buffer.
-    A node further consists of three variables which specify the **virtual position**, the **physical position** and the **length** of this part.
-    The **virtual position** gives the relative position of the Journaled String after all modifications before this position have been "virtually" applied.
-    The **physical position** gives the absolute position where this part of the journal maps to either the host sequence or the insertion buffer.
-
-This is followed by modifying our Journaled String.
-We insert the string ``"modified"`` at position ``7`` and delete the suffix ``"sequence"`` at position ``19``.
-Note that position ``19`` refers to the string after the insertion of ``"modified"`` at position ``7``.
-Again we print the host, the journaled sequence and the nodes that represent the modifications to see how our changes affect the host and the journaled sequence.
-
-.. includefrags:: demos/tutorial/journaled_set/example_journal_string_basic.cpp
-   :fragment: modification
-
-All of this is followed by calling :dox:`JournaledString#flatten` on our journeld string.
-This call applies all journaled changes to the host sequence.
-Again we print the sequences to see the effects.
-
-.. includefrags:: demos/tutorial/journaled_set/example_journal_string_basic.cpp
-   :fragment: flatten
-
-Here is the output of our small program.
-
-.. includefrags:: demos/tutorial/journaled_set/example_journal_string_basic.cpp.stdout
-
-
-.. important::
-
-   Be careful when using the :dox:`JournaledString#flatten` function as it modifies the underlying host sequence.
-   This might affect other journaled sequences that share the same host sequence.
-   This becomes important especially when working with Journal Sets where a whole set of sequences is journaled to the same reference.
-
-Journaled Set
--------------
-
-The :dox:`JournaledSet` is a specialization of the :dox:`StringSet` which can be used exactly as such but also provides some additional functions optimized to work with :dox:`JournaledString JournaledStrings`.
-The general interface is equal to the interface of the StringSet.
-But it also provides some interfaces specialized for the use of Journaled Strings.
-One of these interfaces is the :dox:`JournaledSet#join` function which journales a contained Journaled String to the previously set global reference.
-The following code snippet demonstrates the usage of the Journal Set and how to join a sequence to the previously set reference sequence.
-
-As usual we include the necessary headers.
-We need the header ``<seqan/journal_set.h>`` to get access to the Journal Set.
-Then we define a type for journaled sequences.
-After that we define our Journal Set.
-The Journal Set is a specialization of the :dox:`OwnerStringSet Owner` concept of StringSets and is defined as ``StringSet<TJournalString, Owner<JournaledSet> >``.
-
-.. includefrags:: demos/tutorial/journaled_set/example_join.cpp
-   :fragment: main
-
-In the subsequent steps we want to set a reference sequence to the Journal Set and add some sequences to it.
-We can set the reference sequence by using the function :dox:`JournaledSet#setHost`.
-This function stores only a pointer to the given sequence.
-In some cases it might be necessary to copy the reference sequence instead.
-For this purpose you can use the function :dox:`JournaledSet#createHost`.
-
-.. includefrags:: demos/tutorial/journaled_set/example_join.cpp
-   :fragment: init
-
-Just adding sequences to the Journal Set does not automatically journal them to the global reference sequence of the set.
-One can explicitly trigger this process using the function :dox:`JournaledSet#join`.
-This function takes as parameters the Journal Set and the position of the contained Journaled String which is to be journaled to the reference sequence.
-Thus, the programmer is free in the decision which sequence has to be journaled and which not.
-Furthermore, we can use the :dox:`JoinConfig` object to specify the method that shall be used for the journaling process.
-
-.. includefrags:: demos/tutorial/journaled_set/example_join.cpp
-   :fragment: join
-
-.. tip::
-
-    Configuration of the Join Methods
-
-    The :dox:`JoinConfig` object differentiates two methods in general and each method further differs in the used strategy.
-    The two methods are the :dox:`GlobalAlign` and the :dox:`GlobalChain` method.
-    They differ in the approach of computing the alignment which is necessary to construct the journal.
-    The first method uses a global alignment algorithm while the second one uses an anchor approach in which first exact seeds are found using a q-gram index and after that the optimal chain between the identified anchors is computed.
-    For each method the user can specify a different strategy.
-    The first strategy is triggered by using :dox:`JoinStrategiesTags JournaledManhatten`.
-    This means for the the GlobalAlign method, that the complete sequence is inserted and the complete reference is deleted, while for the GlobalChain methods this means that the gaps between the anchors are connected through the Manhatten distance.
-    The second strategy is specified using the :dox:`JoinStrategiesTags JournaledCompact` tag. It computes the most compact form of a journal by menas of memory requirements.
-
-Here is the output of the program.
-
-.. includefrags:: demos/tutorial/journaled_set/example_join.cpp.stdout
-
-
-Implementing an Online-Search
------------------------------
-
-Now we have all foundations laid down to implement the online-search algorithm.
-Let us begin with the first assignment where we read in some sequences and use the currently learned things about the Journal Set.
-
-Assignment 1
-""""""""""""
-
-.. container:: assignment
-
-   Type
-     Review, Application
-
-   Objective
-     Download the fasta file :download:`sequences.fasta <sequences.fasta>` which contains some DNA sequences.
-     Write a method called ``loadAndJoin`` that gets a Journal Set and a stream file pointing to the downloaded fasta file.
-     The method reads in the sequences one after another using SeqAn's :dox:`SeqFileIn`.
-     The first read sequences is set to the reference sequence.
-     All following sequences are first appended to the StringSet and afterwards joined to the StringSet using a global alignment strategy and the most compact form.
-
-   Hints
-     .. container:: foldable
-
-        You can start using the following code snippet. Replace the path of the iostream such that it points to your path and fill in the missing parts ``A``, ``B`` and ``C`` in the function ``loadAndJoin`` (Altogether, you will need 4 lines of code.).
-
-       .. includefrags:: demos/tutorial/journaled_set/example_online_search_assignment1_hint.cpp
-          :fragment: main
-
-   Solution
-     .. container:: foldable
-
-        .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment1.cpp
-           :fragment: main
-
-Now we have loaded and journaled our sequences and we use the minimal possible memory requirements for our sequences.
-Let's continue and implement the exact online-search on the Journal Set.
-For this purpose we write a function called ``searchPattern`` which takes a StringSet of ``String<int>`` which we use to store each hit for each sequence in the Journal Set including the reference sequence.
-First we have to check whether the reference sequence is set.
-If not we abort the search since we cannot guarantee a correct search when the reference is not set.
-We also have to clear our ``hitSet`` to ensure there remain no phantom hits from previous searches.
-Then we resize it to the number of contained Journaled Strings plus an additional space for the global reference sequence.
-
-.. includefrags:: demos/tutorial/journaled_set/example_online_search.cpp
-   :fragment: searchPatternPart1
-
-Before we can search for the pattern in the Journaled Strings we have to find all occurrences in the reference sequence.
-Therefore we call the function ``findPatternInReference`` which takes a ``String<int>`` which we use to store the hits, the global reference and the pattern.
-
-.. includefrags:: demos/tutorial/journaled_set/example_online_search.cpp
-   :fragment: searchPatternPart2
-
-After that we implement the body to search for occurrences in the Journaled Strings.
-Therefore we use ``for``-loop to iterate over all contained sequences and call for each sequence the function ``findPatternInJournalString``.
-The function gets as parameters the corresponding ``String<int>`` from the ``hitSet``, the journaled sequence the pattern and the identified hits in the reference sequence.
-
-.. includefrags:: demos/tutorial/journaled_set/example_online_search.cpp
-   :fragment: searchPatternPart3
-
-So far our program won't compile. We have to first implement the both functions ``findPatternInReference`` and ``findPatternInJournalString``.
-
-Assignment 2
-""""""""""""
-
-.. container:: assignment
-
-   Type
-     Application
-
-   Objective
-     Implement the function ``findPatternInReference`` using a brute force pattern search algorithm.
-     Store all found hits in the passed ``hits`` variable.
-     Print all occurrences in the end of the ``main`` function.
-
-   Hints
-     .. container:: foldable
-        The following code snippet provides you with the backbone for the search algorithm. Fill in the missing parts ``[A]``, ``[B]``, ``[C]`` and ``[D]``.
-
-        .. includefrags:: demos/tutorial/journaled_set/base.cpp
-            :fragment: assignment2
-
-   Solution
-     .. container:: foldable
-
-        Here is the solution for this function.
-        Click **more...** below, to see a complete solution of everything we have done so far.
-
-        .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment2.cpp
-           :fragment: findPatternInReference
-
-        .. container:: foldable
-
-           Include the necessary headers.
-
-           .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment2.cpp
-              :fragment: include
-
-           Implementation of the `findPatternInReference` function.
-
-           .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment2.cpp
-              :fragment: findPatternInReference
-
-           Implementation of the `searchPattern` function. Note that we haven't implemented the function `findPatternInJournalString` yet.
-
-           .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment2.cpp
-              :fragment: searchPattern
-
-           Implementation of the `loadAndJoin` function.
-
-           .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment2.cpp
-              :fragment: loadAndJoin
-
-           Implementation of the `main` function.
-
-           .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment2.cpp
-              :fragment: main
-
-           Printing the hits of the reference sequence.
-
-           .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment2.cpp
-              :fragment: printResult
-
-           And here is the result.
-
-           .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment2.cpp.stdout
-
-
-We know can search for all occurrences of a pattern in the reference sequence.
-Now we can try to find all occurrences in the journaled sequences.
-Therefore we implement the function ``findPatternInJournalString``.
-Our function gets the variable ``hitsTarget`` which stores the hits found in the JournaledString.
-It gets the search text and the pattern and finally the hits detected in the reference sequence.
-Instead of searching each position in the Journaled String, we only search in areas that are new to the search.
-This involves all inserted parts and all parts where the pattern crosses a border to another node.
-So instead of iterating over each position we iterate over the nodes of the Journaled String.
-To do so we have to determine the type of the data structure that is used by the Journaled String to manage the nodes.
-We can use the metafunction :dox:`JournaledString#JournalType` for this task.
-Afterwards we define an Iterator over the so called ``TJournalEntries`` data structure.
-
-Again we check first whether the pattern fits into our sequence.
-
-.. includefrags:: demos/tutorial/journaled_set/example_online_search.cpp
-   :fragment: findPatternInJournalStringPart1
-
-We then iterate over all nodes beginning from the first until we have reached the node in which the pattern reaches the end of the Journaled Sequence.
-The function findInJournalEntries helps us to find the corresponding node.
-We increment the position of the iterator by one such that it points behind the last element which is included by the search.
-
-.. includefrags:: demos/tutorial/journaled_set/example_online_search.cpp
-   :fragment: findPatternInJournalStringPart2
-
-Now we search in each node until we have reached the end.
-For each node we first check the type of the journaled operation.
-If we are in an "original" node we call the function ``_findInOriginalNode``.
-If we are in a "patch" node we call the function ``_findInPatchNode`` and in the end we call the function ``_searchAtBorder`` which is called for each node type and scans all possible hits at the border of a node.
-
-.. includefrags:: demos/tutorial/journaled_set/example_online_search.cpp
-   :fragment: findPatternInJournalStringPart3
-
-Let us begin with the implementation of the function ``_findInOriginalNode``.
-In this function we exploit the journaling concept such that we can speed up the search algorithm from :math:`\mathcal{O}(p \cdot n)` to :math:`\mathcal{O}(\log_2(k))`, where :math:`p` is the length of the pattern, :math:`n` is the length of the search text, and ``k`` is the number of hits identified in the reference sequence.
-We need at most :math:`\log_2(k)` comparisons to find the first hit which occurred in the reference sequence that also occurs in the current original node.
-
-Assignment 3
-^^^^^^^^^^^^
-
-.. container:: assignment
-
-   Type
-     Transfer
-
-   Objective
-     Implement the function ``_findInOriginalNode``, which identifies all shared hits between the current ``original`` node and the corresponding part in the reference sequence.
-     Note you do not need to scan all positions again.
-     In the end print all occurrences to the console.
-
-   Hints
-     .. container:: foldable
-       The following code snippet provides you with the backbone for this function.
-       Fill in the missing parts ``[A]``, ``[B]``, ``[C]``, ``[D]`` and ``[E]``.
-
-       Use the STL function `std::upper_bound <http://www.cplusplus.com/reference/algorithm/upper_bound/>`_ to conduct a binary search to find the first possible hit from the reference that is also represented by the current node.
-
-        .. includefrags:: demos/tutorial/journaled_set/base.cpp
-            :fragment: assignment3
-
-   Solution
-     .. container:: foldable
-
-       Here is the solution to this function.
-       Click **more...** below, to see a complete solution of everything we have done so far.
-
-       .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
-          :fragment: findInOriginalNode
-
-       .. container:: foldable
-
-          Include the necessary headers.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
-             :fragment: include
-
-          We know implement the method to search for hits in an original node.
-          We only need to check if the current node covers a region of the reference in which we've found a hit.
-          We use the function `std::upper_bound <http://www.cplusplus.com/reference/algorithm/upper_bound/>`_ to find the first element that is greater than the current physical position.
-          Since, we've found an upper bound we have to check additionally if there exists a previous hit that lies directly on the physical begin position of our current node.
-          We then include all hits that fit into this current node until we have found the first position where the pattern would cross the border of this node or we have reached the end of the reference hit set.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
-            :fragment: findInOriginalNode
-
-          Implementing the backbone to search for a pattern in the reference string.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
-            :fragment: findPatternInJournalString
-
-          Implementing the search within the reference sequence.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
-            :fragment: findPatternInReference
-
-          Implementing the backbone of the search.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
-            :fragment: searchPattern
-
-          Implement the `laodAndJoin` method.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
-            :fragment: loadAndJoin
-
-          Implementing the main method.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
-            :fragment: main
-
-          Printing the hits of the reference sequence.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
-            :fragment: printResultReference
-
-          Printing the hits of the journaled sequences.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
-            :fragment: printResultJournalSequence
-
-          And here is the result.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp.stdout
-
-
-We are almost at the end of our online-search algorithm.
-Let's now implement the method ``_findInPatchNode``.
-We basically had this already implemented when we wrote the search function for the reference. Let's recall this part together.
-
-First we write the body of our function and define now an Iterator over the Journaled String.
-
-.. includefrags:: demos/tutorial/journaled_set/example_online_search.cpp
-   :fragment: findInPatchNodePart1
-
-We know specify the range in which we are searching for the pattern.
-This range starts at the current physical position of the insertion buffer and ends at the last position of this node where the pattern completely fits.
-
-.. includefrags:: demos/tutorial/journaled_set/example_online_search.cpp
-   :fragment: findInPatchNodePart2
-
-We need to use a second temporary iterator which is used to compare the current value with the pattern.
-If all positions matches then we report a match at the current virtual position.
-
-.. includefrags:: demos/tutorial/journaled_set/example_online_search.cpp
-   :fragment: findInPatchNodePart3
-
-To ensure that we are not missing any hits we also have to scan the regions where the pattern is leaving the current node.
-You can solve this problem in the next assignment.
-
-Assignment 4
-""""""""""""
-
-.. container:: assignment
-
-   Type
-     Review
-
-   Objective
-     Implement the last function ``_searchAtBorder``, which identifies all hits that cross the border of the current node to the next node.
-
-   Hints
-     .. container:: foldable
-
-       The following code snippet provides you with the backbone for this function.
-       Fill in the missing parts ``[A]``, ``[B]``, ``[C]`` and ``[D]``.
-
-        .. includefrags:: demos/tutorial/journaled_set/base.cpp
-              :fragment: assignment4
-
-   Solution
-     .. container:: foldable
-
-        Here is the solution to this function.
-        Click **more...** below, to see a complete solution of everything we have done so far.
-
-       .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
-          :fragment: searchAtBorder
-
-       .. container:: foldable
-
-          Include the necessary headers.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
-            :fragment: include
-
-          Search at the border the current node for the pattern.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
-            :fragment: searchAtBorder
-
-          Search for the pattern in the insertion region covered by the current node.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
-            :fragment: findInPatchNode
-
-          Check if hit was reported for this region in the reference sequence.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
-            :fragment: findInOriginalNode
-
-          Implementing the backbone of the search for the Journaled String.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
-            :fragment: findPatternInJournalStringPart1
-
-          Implementing the search for the reference sequence.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
-            :fragment: findPatternInReference
-
-          The backbone of the search method.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
-            :fragment: searchPatternPart1
-
-          Loading and joining the sequences.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
-            :fragment: loadAndJoin
-
-          Implementing the main function.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
-            :fragment: main
-
-          Reporting the identified hits.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
-            :fragment: printResult
-
-          And here is the result.
-
-          .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp.stdout
-
-
-Congratulations!
-You have just implemented a cool online-search which is speed up by exploiting the parallelism given by the data set.
-And here is the final result.
-
-.. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp.stdout
-
-
-Assignment 5
-""""""""""""
-
-.. container:: assignment
-
-   Type
-     Transfer
-
-   Objective
-     Try to replace the brute force versions using using SeqAn's :dox:`Finder` and :dox:`Pattern` concept.
-     You can find additional material to this topic in the :ref:`tutorial-pattern-matching` Tutorial.
-
-   Solution
-     .. container:: foldable
-
-        Now we want to replace the brute force methods with some cool pattern matching algorithms.
-        Therefore we include the header `<seqan/finder.h>`.
-
-        .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp
-          :fragment: include
-
-        Now we can use the :dox:`Finder` interface of SeqAn.
-        One cool thing of the usage of the Finder class is that we don't have to check for the borders anymore.
-        This will do the Finder for us.
-        We only have to specify the correct infix over which the Finder should iterate to find the pattern.
-        We first compute the positions that enclose the search region.
-        Afterwards, we get an infix for this region and pass it to the Finder's constructor.
-        We also have to define the :dox:`Pattern` object which gets the pattern we are searching for.
-        Then we can simply call the function :dox:`Finder#find` until we there is no more match.
-        Be careful when storing the position that the Finder is returning.
-        We have to recompute the correct virtual position since we used an infix of the original search text.
-
-        .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp
-          :fragment: searchAtBorder
-
-        So the biggest change is done.
-        We simply repeat the changes from above and watch to get the correct virtual position.
-
-        .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp
-          :fragment: findInPatchNodePart1
-
-        Of course we don't need to change anything for the original nodes.
-
-        .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp
-          :fragment: findInOriginalNode
-
-        Also the function `findPatternInJournalString` remains the same.
-
-        .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp
-          :fragment: findPatternInJournalString
-
-        We will switch to the Finder concept for the function `findPatternInReference` too.
-        This is done quickly, since we have the basis already laid down in the previous functions.
-
-        .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp
-          :fragment: findPatternInReference
-
-        From here on, we don't have to change anything.
-
-        .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp
-          :fragment: searchPatternPart1
-
-        We write the same main body ...
-
-        .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp
-          :fragment: laodAndJoin
-
-        and finally print the results.
-
-        .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp
-          :fragment: main
-
-        And here is the result using the Finder and Pattern concept of SeqAn.
-
-        .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp.stdout
diff --git a/manual/source/Tutorial/KnimeNode.rst b/manual/source/Tutorial/KnimeNode.rst
deleted file mode 100644
index 2331319..0000000
--- a/manual/source/Tutorial/KnimeNode.rst
+++ /dev/null
@@ -1,71 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _tutorial-knime-nodes:
-
-KNIME Nodes
-===========
-
-Learning Objective
-  You will learn how to import new applications written in SeqAn into the KNIME Eclipse plugin.
-  After completing this tutorial, you will be able to use self made applications in KNIME workflows.
-
-Difficulty
-  Basic
-
-Duration
-  1.5 h
-
-Prerequisites
-  :ref:`tutorial-first-steps-in-seqan`, :ref:`tutorial-parsing-command-line-arguments`
-
-In this tutorial you will learn how to integrate new apps written in SeqAn into a KNIME workflow.
-The first part consists of preparing a dummy app such that it can be used in a KNIME workflow and in the second part you are asked to adapt the app such that it becomes a simple quality control tool.
-
-.. important::
-
-   The steps described here are necessary if you want to develop and test new SeqAn apps in KNIME.
-   If you only want to use existing SeqAn apps in KNIME follow :ref:`how-to-use-seqan-nodes-in-knime`.
-
-Importing SeqAn apps into KNIME
--------------------------------
-
-For the first part of the tutorial follow the instructions in :ref:`how-to-generate-seqan-knime-nodes` and import a dummy SeqAn app into KNIME.
-
-Create a useful KNIME workflow
-------------------------------
-
-In the second part of the tutorial you are asked to modify the app you imported into KNIME such that it becomes a quality control tool.
-
-.. container:: assignment
-
-   Type
-     Transfer
-
-   Objective
-     Create a simple read mapping workflow in KNIME using 'razers3' and map the reads in `reads.fastq <http://ftp.seqan.de/manual_files/seqan-1.4/reads.fastq>`_ to `ref.fasta <http://ftp.seqan.de/manual_files/seqan-1.4/ref.fasta>`_.
-     Configure the node to use a ``percent-identity`` value of 99 and the output format could be 'razers'.
-     The third to last and second to last column show the matching position in the reference (begin and end respectively).
-     The last one represents the number of matching characters in percent.
-
-You probably observe that you do not find a lot of matches.
-The reason for this are incorrectly called bases at the end of the reads.
-
-.. container:: assignment
-
-   Type
-     Transfer
-
-   Objective
-     Modify the 'knime_node' app such that it becomes a quality trimmer.
-     You might start by just deleting the last bases of the reads (say 4 or 5) and then make the cutting depending on the actual quality values.
-     Include the node into you workflow and inspect if the results change.
-
-.. tip::
-
-    KNIME needs to know the input and output ports of a node.
-    Therefore we must specify them using ``ArgParseArgument::INPUT_FILE`` or ``ArgParseArgument::OUTPUT_FILE`` as can be seen in the 'knime_node' app.
-    In addition, KNIME needs to know the valid file endings, which you can specify with :dox:`ArgParseArgument#setValidValues`, which is also shown in the example.
-
diff --git a/manual/source/Tutorial/Metafunctions.rst b/manual/source/Tutorial/Metafunctions.rst
deleted file mode 100644
index bbc3bcf..0000000
--- a/manual/source/Tutorial/Metafunctions.rst
+++ /dev/null
@@ -1,169 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _tutorial-metafunctions:
-
-Metafunctions
-=============
-
-Generic algorithms usually have to know certain types that correspond to their arguments.
-An algorithm on containers may need to know which type of values are stored in the string, or what kind of iterator we need to access it.
-The usual way in the STL is to define the value type of a class like ``vector`` as a *member typedef* of this class, so it can be retrieved by ``vector::value_type``.
-
-Unfortunately member typedef declarations have the same disadvantages as any members: Since they are specified by the class definition, they cannot be changed or added to the class without changing the code of the class, and it is not possible in C++ to define members for built-in types.
-What we need therefore is a mechanism that returns an output type (e.g. the value type) given an input type (e.g. the string) and doing so does not rely on members of the input type, but instead uses some kind of global interface.
-
-Such task can be performed by **metafunctions**, also known as **type traits**.
-A metafunction is a construct to map some types or constants to other entities like types, constants, functions, or objects at compile time.
-The name metafunction comes from fact that they can be regarded as part of a meta-programming language that is evaluated during compilation.
-
-In SeqAn we use class templates to implement metafunctions in C++.
-Generic algorithms usually have to know certain types that correspond to their arguments: An algorithm on strings may need to know which type of characters are stored in the string, or what kind of iterator can be used to browse it.
-SeqAn uses Metafunctions (also known as "traits") for that purpose. For example: Assuming that we define a string of amino acids:
-
-.. includefrags:: demos/tutorial/metafunctions/base.cpp
-    :fragment: amino
-
-Now lets define a function that exchanges the first two values in a string:
-
-.. includefrags:: demos/tutorial/metafunctions/base.cpp
-    :fragment: func_exchange1
-
-Since this function only works for instances of :dox:`String String<`:dox:`AminoAcid AminoAcid>`, we could try to make it more general by making a template out of it.
-
-.. includefrags:: demos/tutorial/metafunctions/base.cpp
-    :fragment: func_exchange2
-
-Now the function works for all sequence types ``T`` that store ``AminoAcid`` objects, but it will fail for other value types as soon as the variable temp cannot store ``str[0]`` anymore.
-To overcome this problem, we must redefine ``temp`` in a way that it can store a value of the correct type.
-The question is: "Given a arbitrary type ``T``, what is the value type of ``T``?"
-
-The metafunction :dox:`ContainerConcept#Value` anwers this question: "The value type of ``T`` is given by ``Value<T>::Type``."
-
-Hence, the final version of our function ``exchangeFirstValues`` reads as follows:
-
-.. includefrags:: demos/tutorial/metafunctions/base.cpp
-    :fragment: func_exchange3
-
-We can view ``Value`` as a kind of "function" that takes ``T`` as an argument (in angle brackets) and returns the required value type of ``T``.
-In fact, ``Value`` is not implemented as a C++ function, but as a class template.
-This class template is specialized for each sequence type ``T`` in a way that the ``typedef Type`` provides the value type of ``T``.
-Unfortunately, the current C++ language standard does not allow to write simply "``Value<T> temp``;", so we must select the return value by appending "``::Type``".
-The leading "``typename``" becomes necessary since ``Value<T>::Type`` is a type that depends on a template parameter of the surrounding function template.
-
-Type Metafunctions
-------------------
-
-The metafunction :dox:`ContainerConcept#Value` is a type metafunction, i.e. it is used to determine a type.
-Type metafunctions have the form:
-
-``typename TypeMetaFunc<T1, T2, ..., TN>::Type``
-
-``TypeMetaFunc``
-  The name of the metafunction
-
-``T1, T2, ..., TN``
-  Arguments (types or constants)
-
-``Type``
-  The resulting type
-
-The keyword ``typename`` must be stated if one of the arguments ``T1, T2, ..., TN`` is or uses a template parameter.
-For example the following piece of code uses the metafunction ``Iterator`` to determine an iterator type for a string class:
-
-.. includefrags:: demos/tutorial/metafunctions/base.cpp
-    :fragment: iterator
-
-Value Metafunctions
--------------------
-
-Metafunctions can also be used to determine constant values at compile time.
-The general form of value metafunctions is:
-
-``VALUE_META_FUNC<T1, T2, ..., TN>::VALUE``
-
-``VALUE_META_FUNC``
-  The name of the metafunction
-
-``T1, T2, ..., TN``
-  Arguments (types or constants)
-
-``VALUE``
-  The resulting constant value
-
-For example the following function prints the length of a fixed sized string using the value metafunction :dox:`LENGTH`:
-
-.. includefrags:: demos/tutorial/metafunctions/base.cpp
-    :fragment: length
-
-SeqAn Metafunctions
--------------------
-
-If you want to search for metafunctions only you can do so by only selecting the metafunction category to the left of the search window at the online documentation.
-
-Assignment 1
-""""""""""""
-
-.. container:: assignment
-
-   Objective
-     Write a generic program that swaps the value ranges ``[i,i+k)`` and ``[j,j+k)`` of a container ``str``.
-     The container should be specified as a template argument ``T``.
-
-   Hint
-     Use the Metafunctions :dox:`ContainerConcept#Value` to access the type of the elements in the container.
-     Use the function :dox:`RandomAccessContainerConcept#value` to assign the values.``
-
-   Solution
-     .. container:: foldable
-
-        We want to have a generic version, similar to the function ``ExchangeFirstValues`` on the previous page.
-
-        Hence we could define the function as follows:
-
-        .. includefrags:: demos/tutorial/metafunctions/swap.cpp
-           :fragment: swap-declaration
-
-        The function is now quite generic allowing any container of type ``T``.
-        In addition we specify two positions that should be swapped (as integers which is not really generic, but it suffices for the demo) an the length of the swapped region.
-        Now we can define a helper variable ``help``, which can be of type ``T``.
-
-        .. includefrags:: demos/tutorial/metafunctions/swap.cpp
-           :fragment: swap-metafunction
-
-        and do the swapping
-
-        .. includefrags:: demos/tutorial/metafunctions/swap.cpp
-           :fragment: swap-work
-
-        Thats it.
-        We can now test our generic swap function using for example a `String` of characters or a `String` of integers.
-
-        .. includefrags:: demos/tutorial/metafunctions/swap.cpp
-           :fragment: swap-apply
-
-
-        The whole program taken together looks as follows:
-
-        .. includefrags:: demos/tutorial/metafunctions/swap.cpp
-           :fragment: swap-headers
-
-        .. includefrags:: demos/tutorial/metafunctions/swap.cpp
-           :fragment: swap-declaration
-
-        .. includefrags:: demos/tutorial/metafunctions/swap.cpp
-           :fragment: swap-metafunction
-
-        .. includefrags:: demos/tutorial/metafunctions/swap.cpp
-           :fragment: swap-work
-
-        .. includefrags:: demos/tutorial/metafunctions/swap.cpp
-           :fragment: swap-main
-
-        .. includefrags:: demos/tutorial/metafunctions/swap.cpp
-           :fragment: swap-apply
-
-        .. includefrags:: demos/tutorial/metafunctions/swap.cpp.stdout
-
diff --git a/manual/source/Tutorial/SequencesInDepth.rst b/manual/source/Tutorial/SequencesInDepth.rst
deleted file mode 100644
index 05b2bdc..0000000
--- a/manual/source/Tutorial/SequencesInDepth.rst
+++ /dev/null
@@ -1,148 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-
-.. _tutorial-sequences-in-depth:
-
-Sequences In-Depth
-------------------
-
-Learning Objective
-  You will learn in detail how to optimize the usage of sequences dependent on your needs.
-
-Difficulty
-  Advanced
-
-Duration
-  20 min
-
-Prerequisites
-  :ref:`tutorial-sequences`
-
-Sequences, particularly :dox:`String Strings`, are fundamental in SeqAn.
-You learned already how to use the default implementation of strings and how to easily work with them.
-In the most cases the default string specialization is well suited as well as the default behavior for capicity changes.
-Nevertheless, sometimes you might want to change the default behavior for efficiency reasons and adjust it to your specific needs.
-
-String Specializations
-~~~~~~~~~~~~~~~~~~~~~~
-
-In this section you will learn about the different string specializations and when to use them.
-
-The user can specify the kind of string that should be used in an optional second template argument of :dox:`String`.
-
-.. includefrags:: demos/tutorial/sequences_in_depth/base.cpp
-      :fragment: default_type
-
-In most cases, the implementation :dox:`AllocString Alloc String` (the default when using a ``String<T>``) is the best choice.
-Exceptions are when you want to process extremely large strings that are a bit larger than the available memory (consider :dox:`AllocString Alloc String`) or much larger so most of them are stored on the hard disk and only parts of them are loaded in main memory (consider :dox:`ExternalString External String`).
-
-The following list describes in detail the different specializations:
-
-Specialization :dox:`AllocString Alloc String`
-  * **Description**
-    Expandable string that is stored on the heap.
-  * **Applications**
-    The default string implementation that can be used for general purposes.
-  * **Limitations**
-    Changing the :dox:`StringConcept#capacity` can be very costly since all values must be copied.
-
-Specialization :dox:`ArrayString Array String`
-  * **Description**
-    Fast but non-expandable string.Fast storing of fixed-size sequences.
-  * **Limitations**
-    :dox:`StringConcept#capacity Capacity` must already be known at compile time. Not suitable for storing large sequences.
-
-Specialization :dox:`BlockString Block String`
-  * **Description**
-    String that stores its sequence characters in blocks.
-  * **Applications**
-    The :dox:`StringConcept#capacity` of the string can quickly be increased. Good choice for growing strings or stacks.
-  * **Limitations**
-    Iteration and random access to values is slightly slower than for :dox:`AllocString Alloc String`.
-
-Specialization :dox:`PackedString Packed String`
-  * **Description**
-    A string that stores as many values in one machine word as possible.
-  * **Applications**
-    Suitable for storing large strings in memory.
-  * **Limitations**
-    Slower than other in-memory strings.
-
-Specialization :dox:`ExternalString External String`
-  * **Description**
-    String that is stored in secondary memory.
-  * **Applications**
-    Suitable for storing very large strings (>2GB). Parts of the string are automatically loaded from secondary memory on demand.
-  * **LimitationsApplications**
-    Slower than other string classes.
-
-Specialization :dox:`CStyleString CStyle String`
-  * **Description**
-    Allows adaption of strings to C-style strings.
-  * **Applications**
-    Used for transforming other String classes into C-style strings (i.e. null terminated char arrays). Useful for calling functions of C-libraries.
-  * **Limitations**
-    Only sensible if value type is ``char`` or ``wchar_t``.
-
-.. includefrags:: demos/tutorial/sequences_in_depth/base.cpp
-      :fragment: type_examples
-
-Overflow Strategies
-~~~~~~~~~~~~~~~~~~~
-
-The following section will describe how you can improve capacity changes for your sequences.
-
-Each sequence object has a capacity, i.e. the reserved space for this object.
-The capacity can be set explicitly by functions such as :dox:`String#reserve` or :dox:`StringConcept#resize`.
-It can also bet set implicitly by functions like :dox:`ContainerConcept#append`, :dox:`AssignableConcept#assign`, :dox:`StringConcept#insert` or :dox:`StringConcept#replace`, if the operation's result exceeds the length of the target sequence.
-
-If the current capacity of a sequence is exceeded by chaining the length, we say that the sequence overflows.
-There are several overflow strategies that determine what actually happens when a string should be expanded beyond its capacity.
-The user can specify this for a function call by additionally handing over a tag.
-If no overflow strategy is specified, a default overflow strategy is selected depending on the type of the sequence.
-
-The following overflow strategies exist:
-
-:dox:`OverflowStrategyTags#Exact`
-  Expand the sequence exactly as far as needed. The capacity is only changed if the current capacity is not large enough.
-
-:dox:`OverflowStrategyTags#Generous`
-  Whenever the capacity is exceeded, the new capacity is chosen somewhat larger than currently needed.
-  This way, the number of capacity changes islimited in a way that resizing the sequence only takes amortized constant time.
-
-:dox:`OverflowStrategyTags#Limit`
-  Instead of changing the capacity, the contents are limited to current capacity.
-  All values that exceed the capacity are lost.
-
-:dox:`OverflowStrategyTags#Insist`
-  No capacity check is performed, so the user has to ensure that the container's capacity is large enough.
-
-The next example illustrates how the different strategies could be used:
-
-.. includefrags:: demos/tutorial/sequences_in_depth/example_overflow.cpp
-   :fragment: example
-
-.. includefrags:: demos/tutorial/sequences_in_depth/example_overflow.cpp.stdout
-
-
-Workshop Assignment 1
-^^^^^^^^^^^^^^^^^^^^^
-
-.. container:: assignment
-
-   Type
-     Review
-
-   Objective
-     Build a string of Dna (default specialization) and use the function ``appendValue`` to append a million times the nucleotide 'A'.
-     Do it both using the overflow strategy ``Exact`` and ``Generous``.
-     Measure the time for the two different strategies.
-
-   Solution
-      Click **more...** to see the solution.
-
-      .. container:: foldable
-
-         .. includefrags:: demos/tutorial/sequences_in_depth/assignment_exact_generous_solution.cpp
diff --git a/manual/source/Tutorial/Workflows/GenerateKnimeNodes.rst b/manual/source/Tutorial/Workflows/GenerateKnimeNodes.rst
new file mode 100644
index 0000000..c31bd65
--- /dev/null
+++ b/manual/source/Tutorial/Workflows/GenerateKnimeNodes.rst
@@ -0,0 +1,464 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. |br| raw:: html
+
+   <br />
+
+.. _tutorial-workflows-generating-knime-nodes:
+
+Generating KNIME Nodes
+======================
+
+With the help of the GenericWorkflowNodes one can make his/her command line applications available in KNIME as nodes that can be included as parts of a bigger workflow. In this tutorial you will learn how to make your command line application available as a KNIME node. 
+
+Prerequisites
+-------------
+
+| ** Eclipse KNIME SDK**
+|   You can download it from the `KNIME Download Site <http://www.knime.org/downloads/overview>`_ (at the end of the page). We will use Version 3.1.
+| **git**
+|   For Downloading the latest samtools and GenericKnimeNodes.
+| **Apache Ant**
+|   The Generic KNIME Plugins project uses `Apache Ant <http://ant.apache.org/>`_ as the build system.
+   On Linux and Mac, you should be able to install it through your package manager.
+   For Windows, see the `Apache Ant Downloads <http://ant.apache.org/bindownload.cgi>`_ (note that samtools does not work on Windows so you will not be able to follow through with this tutorial on Windows).
+
+|br|
+
+.. _tutorial-workflows-generating-knime-nodes-overview:
+
+Overview
+--------
+KNIME nodes are shipped as Eclipse plugins. The **GenericKnimeNodes** (GWN) package provides the infrastructure to automatically generate such nodes from the description of their command line.
+The description of the command line is kept in XML files called :ref:`Common Tool Descriptor (CTD) files <tutorial-workflows-generating-knime-nodes-ctd>`.
+
+  .. tip::
+
+    *For SeqAn Apps*, 
+    thanks to the seqan::ArgumentParser class generating a plugin directory is completely automatic if you are using the SeqAn build infrastructure. All you have to do is run make with target prepare_workflow_plugin. Read the tutorial :ref:`Generating SeqAn KNIME Nodes <tutorial-workflows-generating-seqan-knime-nodes>` for more details.
+
+The input of the GWN package is a directory tree with the following structure:
+
+::
+
+    plugin_dir
+      │
+      ├── plugin.properties
+      │
+      ├── descriptors (place your ctd files and mime.types here)
+      ├    ├── app1_name.ctd
+      ├    ├── app2_name.ctd
+      ├    ├── ...
+      ├    ├── mime.types
+      │
+      ├── payload (place your binaries here)
+      │
+      ├── icons (the icons to be used must be here)
+      │
+      ├── DESCRIPTION (A short description of the project)
+      │
+      ├── LICENSE (Licensing information of the project)
+      │
+      └── COPYRIGHT (Copyright information of the project)
+
+The file plugin.properties
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This file contains the plugin configuration. Look at the following ``plugin.properties`` file as an example:
+
+::
+
+    # the package of the plugin
+    pluginPackage=net.sf.samtools
+
+    # the name of the plugin
+    pluginName=SamTools
+
+    # the version of the plugin
+    pluginVersion=0.1.17
+
+    # the path (starting from KNIMEs Community Nodes node)
+    nodeRepositoyRoot=community
+
+    executor=com.genericworkflownodes.knime.execution.impl.LocalToolExecutor
+    commandGenerator=com.genericworkflownodes.knime.execution.impl.CLICommandGenerator
+
+When creating your own plugin directory, you only have to update the first three properties:
+
+| **pluginPackage**
+|   A Java package path to use for the Eclipse package.
+| **pluginName**
+|   A CamelCase name of the plugin.
+| **pluginVersion**
+|   Version of the Eclipse plugin.
+
+|br|
+
+The Directory descriptors 
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The descriptors directory contains two types of files i.e. the *CTD files* for each application in our plugin and a *mime.types* file.
+    
+MIME Types
+^^^^^^^^^^
+*mime.types*  file is a text file that contains a mapping between MIME types and file extensions. Every file extension, to be either used or produced by the applications in the plugin, has to be registered here. Each line contains the definition of a `MIME type <http://en.wikipedia.org/wiki/Internet_media_type>`_.
+The name of the mime type is followed (separated by a space) by the file extensions associated with the file type.  The following example shows how the content of a *mime.types* file looks like.
+
+::
+
+    application/x-fasta fa fasta
+    application/x-fastq fq fastq
+    application/x-sam sam
+    application/x-bam bam
+
+.. important::
+
+  There may be no ambiguous mappings, like giving a single extension for both *application/x-fasta* and *application/x-fastq* in the example shown above. An extension should be mapped to a single application. 
+
+.. _tutorial-workflows-generating-knime-nodes-ctd:
+
+The CTD (Common Tool descriptor) files
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+For every application with the name ``app_name``, there is one CTD file called *${app_name}.ctd*. These file contain the command line description of an application in XML format. They also decide which command-line arguments will be input/output ports or configuration entries in the node to be generated. 
+
+.. Tip::
+  
+  For application developed in SeqAn or applications using the seqan::ArgumentParser for parsing their command-line arguments a CTD file can be generated using a hidden parameter ``-write-ctd``. 
+
+  for example:
+
+  .. code-block:: console
+
+    ./seqan_app_name -write-ctd seqan_app_name.ctd
+
+  Look at the tutorials :ref:`Make Your SeqAn App KNIME Ready <tutorial-workflows-knime-ready-seqan-app>` and :ref:`Generating SeqAn KNIME Nodes <tutorial-workflows-generating-seqan-knime-nodes>` .
+
+Below is an example of a CTD file for SortBam tool for sorting BAM files.
+
+.. code-block:: xml
+
+    <?xml version="1.0" encoding="UTF-8"?>
+    <tool name="SortBam" version="0.1.17" category="SAM and BAM"
+          docurl="http://samtools.sourceforge.net/samtools.shtml">
+        <executableName>samtools</executableName>
+        <description><![CDATA[SAMtools BAM Sorting.]]></description>
+        <manual><![CDATA[samtools sort]]></manual>
+        <docurl>Direct links in docs</docurl>
+        <cli>
+            <clielement optionIdentifier="sort" isList="false" />
+            <clielement optionIdentifier="-f" isList="false" />
+
+            <!-- Following clielements are arguments. You should consider
+                 providing a help text to ease understanding. -->
+            <clielement optionIdentifier="" isList="false">
+                <mapping referenceName="bam_to_sam.argument-0" />
+            </clielement>
+            <clielement optionIdentifier="" isList="false">
+                <mapping referenceName="bam_to_sam.argument-1" />
+            </clielement>
+
+            <clielement optionIdentifier="" isList="false">
+                <mapping referenceName="bam_to_sam.argument-2" />
+            </clielement>
+        </cli>
+        <PARAMETERS version="1.4"
+                    xsi:noNamespaceSchemaLocation="http://open-ms.sourceforge.net/schemas/Param_1_4.xsd"
+                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+            <NODE name="bam_to_sam" description="SAMtools BAM to SAM conversion">
+                <ITEM name="argument-0" value="" type="input-file" required="true"
+                      description="Input BAM file." supported_formats="*.bam" />
+                <ITEM name="argument-1" value="" type="output-file" required="true"
+                      description="Output BAM file." supported_formats="*.bam" />
+                <ITEM name="argument-2" value="" type="string" required="true"
+                      description="Sort by query name (-n) instead of position (default)" restrictions=",-n" />
+            </NODE>
+        </PARAMETERS>
+    </tool>
+
+.. hint::
+
+    If a ``<clielement>`` does provides an empty ``optionIdentifier`` then it is a positional argument without a flag (examples for parameters with flags are ``-n 1``, ``--number 1``).
+
+    If a ``<clielement>`` does not provide a ``<mapping>`` then it is passed regardless of whether has been configured or not.
+
+The ``samtools_sort_bam`` tool from above does not provide any configurable options but only two arguments.
+These are by convention called ``argument-0`` and ``argument-1`` but could have any name.
+
+Also, we always call the program with ``view -f`` as the first two command line arguments since we do not provide a mapping for these arguments.
+
+Click **more...** to see the description of the tags and the attributes in the CTD XML file:
+
+.. container:: foldable
+
+  **CTD Tags attributes:**
+
+  | **/tool**
+  |    The root tag.
+  | **/tool at name**
+  |    The CamelCase name of the tool as shown in KNIME and part of the class name.
+  | **/tool at version**
+  |    The version of the tool.
+  | **/toll at category**
+  |    The path to the tool's category.
+  | **/tool/executableName**
+  |    The name of the executable in the payload ZIP's *bin* dir.
+  | **/tool/description**
+  |    Description of the tool.
+  | **/tool/manual**
+  |    Long description for the tool.
+  | **/tool/docurl**
+  |    URL to the tool's documentation.
+  | **/tool/cli**
+  |    Container for the ``<clielement>`` tags.
+      These tags describe the command line options and arguments of the tool.
+      The command line options and arguments can be mapped to parameters which are configurable through the UI.
+      The parameters are stored in **tool/PARAMETERS**
+  | **/tool/cli/clielement**
+  |    There is one entry for each command line argument and option.
+  | **/tool/cli/clielement at optionIdentifier**
+  |    The identifier of the option on the command line.
+      For example, for the ``-l`` option of ``ls``, this is ``-l``.
+  | **/tool/cli/clielement at isList**
+  |    Whether or not the parameter is a list and multiple values are possible.
+      One of ``true`` and ``false``.
+  | **/tool/cli/clielement/mapping**
+  |    Provides the mapping between a CLI element and a PARAMETER.
+  | **/tool/cli/clielement/mapping at referenceName**
+  |    The path of the parameter.
+      The parameters ``<ITEM>`` s in **tool/PARAMETERS** are stored in nested ``<NODE>`` tags and this gives the path to the specific parameter.
+  | **/tool/PARAMETERS**
+  |    Container for the ``<NODE>`` and ``<ITEM>`` tags.
+      The ``<PARAMETERS>`` tag is in a diferent namespace and provides its own XSI.
+  | **/tool/PARAMETERS at version**
+  |    Format version of the ``<PARAMETERS>`` section.
+  | **/tool/PARAMETERS/.../NODE**
+  |    A node in the parameter tree.
+      You can use such nodes to organize the parameters in a hierarchical fashion.
+  | **/tool/PARAMETERS/.../NODE at advanced**
+  |    Boolean that marks an option as advanced.
+  | **/tool/PARAMETERS/.../NODE at name**
+  |    Name of the parameter section.
+  | **/tool/PARAMETERS/.../NODE at description**
+  |    Documentation of the parameter section.
+  | **/tool/PARAMETERS/.../ITEM**
+  |    Description of one command line option or argument.
+  | **/tool/PARAMETERS/.../ITEM at name**
+  |    Name of the option.
+  | **/tool/PARAMETERS/.../ITEM at value**
+  |    Default value of the option.
+      When a default value is given, it is passed to the program, regardless of whether the user touched the default value or not.
+  | **/tool/PARAMETERS/.../ITEM at type**
+  |    Type of the parameter.
+      Can be one of ``string``, ``int``, ``double``, ``input-file``, ``output-path``, ``input-prefix``, or ``output-prefix``.
+      Booleans are encoded as ``string`` with the ``restrictions`` attribute set to ``"true,false"``.
+  | **/tool/PARAMETERS/.../ITEM at required**
+  |    Boolean that states whether the parameter is required or not.
+  | **/tool/PARAMETERS/.../ITEM at description**
+  |    Documentation for the user.
+  | **/tool/PARAMETERS/.../ITEM at supported_formats**
+  |    A list of supported file formats.
+      Example: ``"*.bam,*.sam"``.
+  | **/tool/PARAMETERS/.../ITEM at restrictions**
+  |    In case of ``int`` or ``double`` types, the restrictions have the form ``min:``, ``:max``, ``min:max`` and give the smallest and/or largest number a value can have.
+      In the case of ``string`` types, restrictions gives the list of allowed values, e.g. ``one,two,three``.
+      If the type is ``string`` and the restriction field equals ``"true,false"``, then the parameter is a boolean and set in case ``true`` is selected in the GUI.
+      A good example for this would be the ``-l`` flag of the ``ls`` program.
+
+
+The Directory payload 
+^^^^^^^^^^^^^^^^^^^^^^
+
+The directory ``payload`` contains ZIP files with the executable tool binaries. Usually there is one ZIP file for each platform ``(Linux, Windows, and Mac Os X)`` architecture ``(32Bit or 64Bit)``combination. The names of the files are ``binaries_${plat}_${arch}.zip`` where ``${plat}`` is one of ``lnx``, ``win``, or ``mac``, and ``${arch}`` is one of ``32`` and ``64``. In this way the appropriate binaries will be used based on the system that KNIME is running on. Some, even all, of the z [...]
+
+Each ZIP file contains a directory ``/bin`` which is used as the search path for the binary given by ``<executableName>`` and an INI file ``/binaries.ini`` which can be used to set environment variables before executing any of tools.
+
+The Directory icons 
+^^^^^^^^^^^^^^^^^^^
+
+Here we put icons for different purposes.
+
+  - An image file with a name *category.png* (15x15 px): an icon for categories in the KNIME node explorer tree.
+  - An image file with a name *splash.png* (50x50 px):  an icon to be displayed in the KNIME splash screen.
+  - An image file with a name *app_name.png* (15x15 px):  an icon to be displayed with the corresponding node of the application ``app_name``. This is done once for each app but it's optional.
+
+The files DESCRIPTION, LICENSE, COPYRIGHT 
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- **DESCRIPTION**:
+  A text file with your project's description.
+- **LICENSE**:
+  A file with the license of the project.
+- **COPYRIGHT**:
+  A file with copyright information for the project.
+
+|br|
+
+
+The GWN project provides tools to convert such a plugin directory into an Eclipse plugin.
+This plugin can then be launched together with KNIME.
+The following picture illustrates the process.
+
+.. figure:: plugin-workflow.png
+
+
+Running Example
+---------------
+
+We will adapt some functions from the `samtools <http://samtools.sf.net>`_ package to KNIME:
+
+| **BamToSam**
+|   This tool will execute ``samtools view -o ${OUT} ${IN}``.
+| **SamToBam**
+|   This tool will execute ``samtools view -Sb -o ${OUT} ${IN}``.
+| **SortBam**
+|   This tool will execute ``samtools sort -o ${OUT} ${IN}``.
+
+|br|
+
+Preparation: Building samtools and Downloading GenericKnimeNodes
+----------------------------------------------------------------
+
+We will work in a new directory *knime\_samtools* (we will assume that the directory is directly in your *$HOME* for the rest of the tutorial.
+First we need to download samtools-1.3 from http://www.htslib.org/download/. Alternatively you can also use this `direct link <https://github.com/samtools/samtools/releases/download/1.3/samtools-1.3.tar.bz2>`_ or use either of `wget` or `curl` utilities from your command line as follows.
+
+wget
+
+.. code-block:: console
+
+    knime_samtools # wget https://github.com/samtools/samtools/releases/download/1.3/samtools-1.3.tar.bz2
+    
+curl 
+
+.. code-block:: console
+
+    knime_samtools # curl -OL https://github.com/samtools/samtools/releases/download/1.3/samtools-1.3.tar.bz2
+    
+Now let us extract and build samtools 
+
+.. code-block:: console
+
+    knime_samtools # tar -jxvf samtools-1.3.tar.bz2 
+    ...
+    knime_samtools # cd samtools-1.3
+    samtools-1.3 # ./configure
+    samtools-1.3 # make
+    ...
+    samtools # ls -l samtools
+    -rwxr-xr-x 1 user group 1952339 May  7 16:36 samtools
+    samtools # cd ..
+    knime_samtools #
+
+Then, we need to download GenericKnimeNodes:
+
+.. code-block:: console
+
+    knime_samtools # git clone git://github.com/genericworkflownodes/GenericKnimeNodes.git
+
+Preparation: Installing KNIME File Handling
+-------------------------------------------
+We need to install support for file handling nodes in KNIME. In order to do that 
+- Launch your Eclipse-KNIME-SDK
+  
+  .. tip::
+
+    **Launching Eclipse-KNIME-SDK**
+
+    - If you are on a linux system you should browse to your knime_eclipse_3.1 installation double click on ``eclipse`` executable.
+    - If you are using MacOS X then you can launch the KNIME SDK 3.1 as you would launch any other application.
+
+- Open the window for installing Eclipse plugins; in the program's main menu: ``Help > Install New Software...``.
+
+.. figure:: install-knime-1.png
+   :align: center
+   :width: 75%
+
+- On the install window enter ``http://www.knime.org/update/3.1`` into the ``Work with:`` field, enter ``file`` into the search box, and finally select ``KNIME File Handling Nodes`` in the list.
+
+- Then, click ``Next`` and follow through with the installation of the plugin. When done, Eclipse must be restarted.; in the program's main menu: ``Help > Install New Software...``.
+
+.. figure:: gkn-install-file-handling-nodes.png
+
+
+Obtaining the Demo Workflow Plugin Directory
+--------------------------------------------
+
+Please download the file :download:`workflow_plugin_dir.zip <workflow_plugin_dir.zip>` to your ``knime_samtools`` directory and look around in the archive. Also have a look into ``binaries_*_*.zip`` files in *payload*. The structure of this ZIP file is similar to the one explained in the Overview section at the beginning of this tutorial.
+
+
+Creating an Exclipse Plugin from the Plugin Directory
+-----------------------------------------------------
+
+The next step is to use GKN to create an Eclipse plugin from the workflow plugin directory.
+For this, change to the directory GenericKnimeNodes that we cloned using git earlier.
+We then execute ant and pass the variables *knime.sdk* with the path to the KNIME SDK that you downloaded earlier and *plugin.dir* with the path of our extracted ``workflow_plugin_dir`` directory.
+
+  .. tip::
+
+    **Path to Eclipse-KNIME-SDK**
+    - If you are on a linux system the path to *knime.sdk* is the path to your ``knime_eclipse_3.1.0``
+    - If you are using MacOS X then the default path to *knime.sdk*  is ``/Applications/KNIME\ SDK\ 3.1.0.app/``
+
+.. code-block:: console
+
+    knime_samtools # cd GenericKnimeNodes
+    GenericKnimeNodes # ant -Dknime.sdk=${HOME}/eclipse_knime_3.1 \
+                          -Dplugin.dir=$HOME/knime_samtools/workflow_plugin_dir
+
+This generates an Eclipse plugin with wrapper classes for our nodes.
+The generated files are within the *generated\_plugin* directory of the directory *GenericKnimeNodes*.
+
+Importing the Generated Projects into Eclipse
+---------------------------------------------
+
+On the KNIME Eclipse SDK window go to the menu ``File > Import...``. In the ``Import`` window, select ``General > Existing Project Into Workspace``
+
+.. figure:: gkn-import-1.png
+
+On the pop-up dialog, click ``Browse...`` next to ``Select root directory``.
+
+.. figure:: gkn-import-2.png
+
+Then, select the directory of your "GenericWorkflowNodes" checkout. The final dialog should then look as follows.
+
+Clicking finish will import (1) the GKN classes themselves and (2) your generated plugin's classes.
+
+.. figure:: gkn-import-3.png
+
+Now, the packages of the GKN classes and your plugin show up in the left ``Package Explorer`` pane of Eclipse.
+
+
+.. figure:: gkn-import-done.png
+   :align: center
+   :width: 75%
+
+.. hint::
+
+    **Information:** Synchronizing ``ant`` build result with Eclipse.
+
+    Since the code generation happens outside of Eclipse, there are often problems caused by Eclipse not recognizing updates in generated *java* files.
+    After each call to ``ant``, you should clean all built files in all projects by selecting the menu entries ``Project > Clean...``, selecting ``Clean all projects``, and then clicking ``OK``.
+
+    Then, select all projects in the ``Package Explorer``, right-click and select ``Refresh``.
+
+Launching Eclipse with our Nodes
+--------------------------------
+
+Finally, we have to launch KNIME with our plugin. We have to create a run configuration for this. Select ``Run > Run Configurations...``.
+
+In the ``Run Configurations`` window, select ``Eclipse Application`` on the left, then create the small ``New launch configuration`` icon on the top left (both marked in the following screenshot).
+Now, set the ``Name`` field to "KNIME", select ``Run an application`` and select ``org.knime.product.KNIME_APPLICATION`` in the drop down menu.
+Finally, click ``Run``.
+
+.. figure:: gkn-run-configuration.png
+
+Your tool will show up in the tool selector in ``community/SAM and BAM``.
+
+.. figure:: sam-plugins.png
+   :align: left
+   :width: 75%
+
+Here is an example KNIME workflow with the nodes that we just created.
+
+.. figure:: sam-workflow.png
\ No newline at end of file
diff --git a/manual/source/Tutorial/Workflows/GenerateSeqAnKnimeNodes.rst b/manual/source/Tutorial/Workflows/GenerateSeqAnKnimeNodes.rst
new file mode 100644
index 0000000..517a25e
--- /dev/null
+++ b/manual/source/Tutorial/Workflows/GenerateSeqAnKnimeNodes.rst
@@ -0,0 +1,192 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _tutorial-workflows-generating-seqan-knime-nodes:
+
+Generating SeqAn KNIME Nodes
+============================
+
+Learning Objective
+  You will learn how to import applications written in SeqAn into the KNIME Eclipse plugin.
+  After completing this tutorial, you will be able to use self-made applications in KNIME workflows.
+
+Difficulty
+  Very basic
+
+Duration
+  1 h
+
+Prerequisites
+  Eclipse KNIME SDK
+    You can download it from the `KNIME Download Site <http://www.knime.org/downloads/overview>`_ (at the end of the page). We will use Version 3.1.
+  git
+    For downloading the latest GenericKnimeNodes.
+  Apache Ant
+   The Generic KNIME Plugins project uses `Apache Ant <http://ant.apache.org/>`_ as the build system.
+   On Linux and Mac, you should be able to install it through your package manager.
+   For Windows, see the `Apache Ant Downloads <http://ant.apache.org/bindownload.cgi>`_.
+
+
+.. important::
+
+   The steps described here are necessary if you want to develop and test new SeqAn apps in KNIME.
+   If you only want to use existing SeqAn apps in KNIME follow :ref:`tutorial-workflows-use-seqan-nodes-in-knime`.
+
+
+We will generate a simple SeqAn KNIME node from a SeqAn app that reads a fastq file from disk and just writes it back.
+We start by installing the necessary software.
+Afterwards, we explain which steps are required in order to prepare a SeqAn app to be used in KNIME, and finally, we show how to import the app into KNIME.
+The following section provides some more information on the plugin structure and where the necessary information is stored.
+Note that this tutorial is mainly written for MacOS and Linux users, but Windows users should also be able to follow through.
+
+Preparation: Downloading GenericKnimeNodes
+-------------------------------------------
+
+We will work in a new directory *knime_node* (we will assume that the directory is directly in your *$HOME* for the rest of the tutorial).
+
+.. code-block:: console
+
+   knime_node # git clone git://github.com/genericworkflownodes/GenericKnimeNodes.git
+
+Preparation: Installing KNIME File Handling
+-------------------------------------------
+We need to install support for file handling nodes in KNIME. In order to do that 
+- Launch your Eclipse-KNIME-SDK
+  
+  .. tip::
+
+    **Launching Eclipse-KNIME-SDK**
+
+    - If you are on a linux system you should browse to your knime_eclipse_3.1 installation double click on ``eclipse`` executable.
+    - If you are using MacOS X then you can launch the KNIME SDK 3.1 as you would launch any other application.
+
+- Open the window for installing Eclipse plugins; in the program's main menu: ``Help > Install New Software...``.
+
+.. figure:: install-knime-1.png
+
+- On the install window enter ``http://www.knime.org/update/3.1`` into the ``Work with:`` field, enter ``file`` into the search box, and finally select ``KNIME File Handling Nodes`` in the list.
+
+- Then, click ``Next`` and follow through with the installation of the plugin. When done, Eclipse must be restarted.; in the program's main menu: ``Help > Install New Software...``.
+
+.. figure:: gkn-install-file-handling-nodes.png
+
+
+Generating KNIME Nodes for SeqAn Apps
+-------------------------------------
+
+You can generate a workflow plugin directory for the SeqAn apps using the ``prepare_workflow_plugin`` target.
+
+In order for your application to turn into a KNIME node, you have to add the line:
+
+.. code-block:: cmake
+
+    set (SEQAN_CTD_EXECUTABLES ${SEQAN_CTD_EXECUTABLES} <my_app> CACHE INTERNAL "")
+
+to the end of the *CMakeList.txt* file of your application.
+
+The following example will demonstrate the creation of a SeqAn app and its registration as a KNIME node.
+
+.. code-block:: console
+
+   ~ # git clone http://github.com/seqan/seqan seqan-src
+   ~ # cd seqan-src
+   ~ # ./util/bin/skel.py app knime_node .
+
+Now open the file *seqan-src/apps/knime_node/knime_node.cpp* and replace its content with the one found in *seqan-src/demos/knime_node.cpp*.
+The code implements the reading of a read file and its storage somewhere on the disk.
+
+In order to register the app ``knime_node``, you simply add the line
+
+.. code-block:: cmake
+
+    set (SEQAN_CTD_EXECUTABLES ${SEQAN_CTD_EXECUTABLES} knime_node CACHE INTERNAL "")
+
+to *seqan-trunk/apps/knime_node/CMakeList.txt*.
+
+Then, you can generate the Knime Nodes/Eclipse plugin.
+First, change to the directory GenericKnimeNodes that we cloned using git earlier.
+We then execute ant and pass the variables ``knime.sdk`` with the path to the KNIME SDK that you downloaded earlier and ``plugin.dir`` with the path of our plugin directory.
+
+.. code-block:: console
+
+   ~ # mkdir -p seqan-build/release
+   ~ # seqan-build/release
+   ~ # cd seqan-build/release
+   release # cmake ../../seqan-src
+   release # make prepare_workflow_plugin
+   release # cd ~/knime_node/GenericKnimeNodes
+   GenericKnimeNodes # ant -Dknime.sdk=${HOME}/eclipse_knime_2.8.0 \
+                         -Dplugin.dir=${HOME}/seqan-build/release/workflow_plugin_dir
+
+The generated files are within the *generated_plugin* directory of the directory *GenericKnimeNodes*.
+
+If you ran into problems, you may copy the file `knime_node_app.zip <https://github.com/seqan/knime_node_template/archive/master.zip>`_, which contains the ``knime_node`` app and the adjusted *CMakeList.txt* file.
+Unpack this file in the ``apps`` directory.
+You still have to call *ant* though.
+
+Importing the Generated Projects into Eclipse
+---------------------------------------------
+
+In the main menu, go to ``File > Import...``.
+In the ``Import`` window, select ``General > Existing Project Into Workspace``.
+
+.. figure:: gkn-import-1.png
+
+In the next dialog, click ``Browse...`` next to ``Select root directory``.
+
+.. figure:: gkn-import-2.png
+
+Then, select the directory of your "GenericWorkflowNodes" checkout.
+The final dialog should then look as follows.
+
+Clicking finish will import (1) the GKN classes themselves and (2) your generated plugin's classes.
+
+.. figure:: gkn-import-3.png
+
+Now, the packages of the GKN classes and your plugin show up in the left ``Package Explorer`` pane of Eclipse.
+
+.. figure:: gkn-import-done.png
+   :align: center
+   :width: 75%
+
+.. tip::
+
+    Synchronizing ``ant`` build result with Eclipse.
+
+    Since the code generation happens outside of Eclipse, there are often problems caused by Eclipse not recognizing updates in generated ''.java'' files.
+    After each call to ``ant``, you should clean all built files in all projects by selecting the menu entries ``Project > Clean...``, selecting ``Clean all projects``, and then clicking ``OK``.
+
+    Then, select all projects in the ``Package Explorer``, right-click and select ``Refresh``.
+
+.. tip::
+
+    You might get a warning with in one of the KNIME files. In order to remove it you need to download the KNIME's test environment, but you can just ignore the error in our case.
+
+Launching Eclipse with our Nodes
+--------------------------------
+
+Finally, we have to launch KNIME with our plugin.
+We have to create a run configuration for this.
+Select ``Run > Run Configurations...``.
+
+In the ``Run Configurations`` window, select ``Eclipse Application`` on the left, then click the small ``New launch configuration`` icon on the top left (both marked in the following screenshot).
+Now, set the ``Name`` field to "KNIME", select ``Run an application`` and select ``org.knime.product.KNIME_APPLICATION`` in the drop down menu.
+Finally, click ``Run``.
+
+.. figure:: gkn-run-configuration.png
+
+Your tool will show up in the tool selector in ``Community Nodes``.
+
+.. important::
+
+   Sometimes KNIME complains about the Java version you are using.
+   In that case, you can use Java 1.6. as shown in :ref:`how-to-recipes-choose-the-jre-version`.
+
+.. important::
+
+   If you are running a MacOS you might need to add *-Xms40m -Xmx512M -XX:MaxPermSize=256m -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -server* to the ``VM argument`` box of your ``Run Configuration``.
+
+You should now be able to use the created node in a KNIME workflow. 
+
+If you would like to learn more about the structure of the plugin and where the crucial information is stored you can read the :ref:`tutorial-workflows-generating-knime-nodes-overview` section of the tutorial Generating KNIME Nodes.
diff --git a/manual/source/Tutorial/Workflows/KnimeReadySeqAnApp.rst b/manual/source/Tutorial/Workflows/KnimeReadySeqAnApp.rst
new file mode 100644
index 0000000..61149e1
--- /dev/null
+++ b/manual/source/Tutorial/Workflows/KnimeReadySeqAnApp.rst
@@ -0,0 +1,87 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _tutorial-workflows-knime-ready-seqan-app:
+
+Make Your SeqAn App KNIME Ready
+===============================
+
+Learning Objective
+  You will learn how to use the the seqan:::dox:`ArgumentParser` and the SeqAn build system 
+  so that, at the end, a new SeqAn application can be integrated in KNIME easily. 
+  After completing this tutorial, you will be able write a new SeqAn application 
+  that can be imported into a KNIME Eclipse plugin with a couple of commands.
+
+Difficulty
+  Basic
+
+Duration
+  1.5 h
+
+Prerequisites
+  :ref:`tutorial-getting-started-first-steps-in-seqan`, :ref:`tutorial-getting-started-parsing-command-line-arguments`
+
+In this tutorial you will learn how to write a SeqAn app, which can be, easly converted into a KNIME node.
+
+The first part consists of preparing a dummy app such that it can be used in a KNIME workflow and in the second part you are asked to adapt the app such that it becomes a simple quality control tool.
+
+Using the seqan::ArgumentParser
+-------------------------------
+
+When we add options to the parser using :dox:`ArgumentParser#addOption`, 
+we pass an :dox:`ArgParseOption` object together with the parser. The :dox:`ArgParseArgument::ArgumentType` of this :dox:`ArgParseOption` object is highly correlated to how the node generated from our application will look like.
+
+The ArgumentType can be one of the following 
+
+::
+
+  *STRING:*  Argument is a string.
+  *INTEGER:* Argument is a signed 32 bit integer.
+  *INT64:* Argument is a signed 64 bit integer.
+  *DOUBLE:* Argument is a floating point number stored as double.
+  *INPUT_FILE:*  Argument is an input file.
+  *OUTPUT_FILE:* Argument is an output file.
+  *INPUT_PREFIX:*  Argument is a prefix to input file(s).
+  *OUTPUT_PREFIX:* Argument is a prefix to output file(s).
+
+Consider the following example application.
+
+.. includefrags:: demos/tutorial/workflows/knime_node.cpp
+   :fragment: all
+
+While adding an :dox:`ArgParseOption` to your :dox:`ArgumentParser` you should consider the following points.
+
+- KNIME needs to know the input and output ports of a node. Therefore we must specify them using ``ArgParseArgument::INPUT_FILE`` or ``ArgParseArgument::OUTPUT_FILE`` as can be seen in the example above.
+- In addition, KNIME needs to know the valid file endings, which you can specify with :dox:`ArgParseArgument#setValidValues`, which is also shown in the example.
+
+.. tip::
+
+  Later, when building workflows, you can only connect an output-port of a node to the input-port of the next one if only they have a compatible file endings.
+
+- There are special types of input/output ports which are prefixes to a list of files. Such ports are specified using ``ArgParseArgument::INPUT_PREFIX`` or ``ArgParseArgument::OUTPUT_PREFIX``. You can only connect an output prefix port to an input prefix port and vise-versa.
+
+Using the SeqAn build system to generate KNIME nodes 
+----------------------------------------------------
+
+If you are using the SeqAn build system you can generate a workflow plugin directory for all the SeqAn apps including your new one using the target ``prepare_workflow_plugin``.
+
+In order for your application to turn into a KNIME node, you should register your app ``e.g. my_app``, by simply adding the line:
+
+.. code-block:: cmake
+
+    set (SEQAN_CTD_EXECUTABLES ${SEQAN_CTD_EXECUTABLES} <my_app> CACHE INTERNAL "")
+
+to the end of the *CMakeList.txt* file of your application. All applications with this line in their  *CMakeList.txt* file will be included in the generated plugin when building the target``prepare_workflow_plugin``.
+
+.. tip::
+
+  *If You are not using the SeqAn build system for some reason*, but you used the seqan::ArgumentParser as recommended above, you still can generate a CTD file of your application.
+  After building your application and go to the directory containing the executable of your application and run the following.
+  
+  .. code-block:: console
+
+    ./seqan_app_name -write-ctd seqan_app_name.ctd
+
+  This will give you the CTD file of your command-line tool. Then you can follow :ref:`tutorial-workflows-generating-knime-nodes-overview` section of the tutorial Generating KNIME Nodes to prepare a plugin directory of your application. 
+
diff --git a/manual/source/Tutorial/Workflows/UseSeqAnNodesInKnime.rst b/manual/source/Tutorial/Workflows/UseSeqAnNodesInKnime.rst
new file mode 100644
index 0000000..7b0a994
--- /dev/null
+++ b/manual/source/Tutorial/Workflows/UseSeqAnNodesInKnime.rst
@@ -0,0 +1,99 @@
+.. sidebar:: ToC
+
+    .. contents::
+
+.. _tutorial-workflows-use-seqan-nodes-in-knime :
+
+Creating Workflows with SeqAn Nodes in KNIME
+============================================
+
+`KNIME <http://www.knime.org>`_ is a well-established data analysis framework which supports the generation of workflows for data analysis.
+In this tutorial, we describe how to use SeqAn applications in KNIME.
+
+Install SeqAn in KNIME
+----------------------
+
+The Installation of the SeqAn NGS Toolbox in KNIME is very easy.
+Download the latest KNIME release from the KNIME website `download <https://www.knime.org/downloads/overview>`_ page. You might be asked for registration but that is optional.
+In the KNIME window, click on the menu ``Help > Install new Software``.
+
+.. figure:: install-knime-1.png
+   :align: center
+   :width: 75%
+
+In the opening dialog choose ``Add...``.
+
+.. figure:: install-knime-2.png
+
+In the opening dialog fill-in the following Information:
+
+``Name``
+  ``Trusted Community Contributions (3.1)``
+``Location``
+  ``http://update.knime.org/community-contributions/trusted/3.1``
+
+If you are, by chance, still using an  older KNIME version and you do not want to update to the latest version you can find the corresponding update site location at the `community-contributions <https://tech.knime.org/community>`_ page of the KNIME website.
+
+.. figure:: install-knime-3.png
+
+After pressing OK, KNIME will show you all the contents of the added Update Site, containing also the SeqAn nodes.
+
+.. figure:: install-knime-4.png
+
+Select the SeqAn NGS Toolbox and click Next.
+Follow the instructions.
+After the installation is don KNIME will prompt you to restart. Click OK and KNIME will restart with the newly installed SeqAn nodes will be available under ``Community Nodes`` category. The installation also includes GenericKnimeNodes which are very useful for using SeqAn nodes in KNIME. This includes file input/output nodes.
+
+.. figure:: install-knime-5.png
+   :align: center
+   :width: 75%
+
+
+Now you can drag and drop the installed SeqAn nodes to make your desired workflow together with the other KNIME nodes. 
+
+A variant calling workflow (An example)
+-----------------------------------------
+In this example we will use a read mapper (yara) to map short reads against a reference genome. Then we will use SnpStore to call variants and store the variants as ``vcf`` and ``gff`` files. We will also do error correction of Illumina reads before we map them to the reference. In this way we will we can identify SNP's more clearly.
+
+1. Download this zipped :download:`example data<example_data.zip>` and extract it somewhere appropriate. It contains three files. The file ``NC_008253_1K.fa`` is a small toy reference genome. Files ``sim_reads_l.fq`` and ``sim_reads_r.fq`` are short sequencing paired reads. For each read in one file its mate is contained in the other file. 
+
+2. On the left side of the opened KNIME window under KNIME Explorer right click on ``LOCAL (Local Workspace)`` and chose the menu item ``New KNIME Workflow``. You will be presented with a dialog to enter the name and location of the workflow to be created. Give your workflow an approprate name, perhaps something like 'Variant Calling Workflow', and click finish.
+
+3. Drag and drop the nodes shown in the following picture from the ``Node Repository`` panel on the left bottom side of the KNIME window and arrange/connect them as they are shown in the picture bellow. You can also rename the node from nodeXX to a meaningful name like ``INPUT: Reference``. The node name it the text bellow the node. The Node type, which is displayed above the node, cannot be edited.
+
+.. figure:: install-knime-6.png
+
+4. Now it's time to configure our nodes. To configure a node just double-click on it. A configuration dialog will pop up. Let us configure our nodes on our workflow one by one.
+
+|  **a. InputFile Node** (``INPUT: Reference``): 
+|      - browse and select the file ``NC_008253_1K.fa`` under Selected file field.
+|      - click OK.
+|  **b. InputFiles Node** (``READS L&R``):
+|      - click ``add`` and select both ``sim_reads_l.fq`` and ``sim_reads_r.fq`` files.
+|      - click OK.
+|  **c. FionaIllumina Node** (``Error Correction``):
+|      - set genome-length to 1000
+|  **d. SnpStore Node** (``Variant Calling``):
+|      - set only-successful-candidates to true.
+
+5. Run the workflow. Right-click on the File Viewer (``OUTPUT: SNP's``) node at the right end of our configured workflow and choose Execute from the menu. As the preceding nodes execute they change their indicator color from yellow to green. When the last node finishes executing do the same to execute the File Viewer (``OUTPUT: indels``)
+
+6. See the results. You can take a look at the results (SNPs/IndDels) by  Right-clicking on the corresponding File Viewer node and choose ``View: (data view)`` from the menu.
+
+Congratulations you have just created a working KNIME workflow using SeqAn nodes!
+
+Use existing workflows and contribute new ones
+----------------------------------------------
+The git repository https://github.com/seqan/knime_seqan_workflows has quite few workflows ready to run. each workflow is contained in a directory. The directory for a workflow contains an example data and a README file in it. This makes it easier to download and execute the workflow. You can either clone the repository or download individual workflows and execute them with the data provided or with your own data.
+
+With the steps described above you will be able to set up your own workflows in KNIME.
+If you want to contribute a workflow to the SeqAn community  you are encouraged to do so.
+You can do it as follows: 
+
+- Simply clone the workflow git repository into your own github repository and add a new folder ``WORKFLOWNAME_workflow``.
+- In KNIME export your workflow without the data files as a ``.zip`` file into that folder.
+- Provide a README, a screenshot and some example input data as well.
+
+To get a more clear idea just take a look at the existing workflow folders.
+
+After everything is ready, add...commit and push the new folder into your github repository and make a github pull request to the original workflow repository (https://github.com/seqan/knime\_seqan\_workflows) and - voila - it will be shared with the community.
diff --git a/manual/source/Tutorial/Workflows/example_data.zip b/manual/source/Tutorial/Workflows/example_data.zip
new file mode 100644
index 0000000..99ba76d
Binary files /dev/null and b/manual/source/Tutorial/Workflows/example_data.zip differ
diff --git a/manual/source/Tutorial/Workflows/folder.png b/manual/source/Tutorial/Workflows/folder.png
new file mode 100644
index 0000000..e439f1d
Binary files /dev/null and b/manual/source/Tutorial/Workflows/folder.png differ
diff --git a/manual/source/Tutorial/Workflows/gkn-import-1.png b/manual/source/Tutorial/Workflows/gkn-import-1.png
new file mode 100644
index 0000000..8495402
Binary files /dev/null and b/manual/source/Tutorial/Workflows/gkn-import-1.png differ
diff --git a/manual/source/Tutorial/Workflows/gkn-import-2.png b/manual/source/Tutorial/Workflows/gkn-import-2.png
new file mode 100644
index 0000000..8431e0d
Binary files /dev/null and b/manual/source/Tutorial/Workflows/gkn-import-2.png differ
diff --git a/manual/source/Tutorial/Workflows/gkn-import-3.png b/manual/source/Tutorial/Workflows/gkn-import-3.png
new file mode 100644
index 0000000..e77168a
Binary files /dev/null and b/manual/source/Tutorial/Workflows/gkn-import-3.png differ
diff --git a/manual/source/Tutorial/Workflows/gkn-import-done.png b/manual/source/Tutorial/Workflows/gkn-import-done.png
new file mode 100644
index 0000000..25e343c
Binary files /dev/null and b/manual/source/Tutorial/Workflows/gkn-import-done.png differ
diff --git a/manual/source/Tutorial/Workflows/gkn-install-file-handling-nodes.png b/manual/source/Tutorial/Workflows/gkn-install-file-handling-nodes.png
new file mode 100644
index 0000000..80e74ef
Binary files /dev/null and b/manual/source/Tutorial/Workflows/gkn-install-file-handling-nodes.png differ
diff --git a/manual/source/Tutorial/Workflows/gkn-run-configuration.png b/manual/source/Tutorial/Workflows/gkn-run-configuration.png
new file mode 100644
index 0000000..da5c176
Binary files /dev/null and b/manual/source/Tutorial/Workflows/gkn-run-configuration.png differ
diff --git a/manual/source/Tutorial/Workflows/index.rst b/manual/source/Tutorial/Workflows/index.rst
new file mode 100644
index 0000000..da5001f
--- /dev/null
+++ b/manual/source/Tutorial/Workflows/index.rst
@@ -0,0 +1,42 @@
+.. _tutorial-workflows-index :
+
+Workflows
+=========
+.. toctree::
+    :hidden:
+    :titlesonly:
+
+    UseSeqAnNodesInKnime
+    GenerateKnimeNodes
+    KnimeReadySeqAnApp
+    GenerateSeqAnKnimeNodes
+
+Introduction
+------------
+
+In bioinformatics Workflows contain an interconnected and orchestrated series of computational or data manipulation steps. In order to compose and execute such workflows one needs workflow management systems. Workflow management systems can represent how computation proceeds from one step to the next one in a form of directed graph in which nodes represent tasks to be executed and edges represent either the flow of data or dependencies between different tasks. Among the many workflow man [...]
+
+- KNIME and 
+- Galaxy
+
+KNIME Workflows
+---------------
+In KNIME workflows are composed of (KNIME) nodes connected to each other by edges. The nodes are a representation of an application/algorithm that takes an input, process it and produces a desired output. The edges represent a flow of data from one specific application to the next one.
+
+Generic KNIME nodes 
+^^^^^^^^^^^^^^^^^^^
+KNIME nodes are usually shipped as eclipse plugins. The term Generic KNIME node refers to KNIME node (eclipse plugin) generated from any command line tool. This is done via **GenericKnimeNodes** (GWN) package which provides an infrastructure to automatically generate such nodes from the description of their command line.
+
+.. important::
+
+    - If you only want to use existing SeqAn apps in KNIME follow :ref:`tutorial-workflows-use-seqan-nodes-in-knime`.
+
+    - If you want to learn how to convert any command-line-tool into a KNIME node read the tutorial :ref:`tutorial-workflows-generating-knime-nodes`
+
+    - If you are a SeqAn application developer and you want to make your application KNIME ready follow the tutorial :ref:`tutorial-workflows-knime-ready-seqan-app`
+
+    - If you want to learn how to generate a KNIME node out of a SeqAn application  follow the tutorial :ref:`tutorial-workflows-generating-seqan-knime-nodes`
+
+
+Galaxy Workflows
+----------------
diff --git a/manual/source/Tutorial/Workflows/install-knime-1.png b/manual/source/Tutorial/Workflows/install-knime-1.png
new file mode 100644
index 0000000..c0b3fda
Binary files /dev/null and b/manual/source/Tutorial/Workflows/install-knime-1.png differ
diff --git a/manual/source/Tutorial/Workflows/install-knime-2.png b/manual/source/Tutorial/Workflows/install-knime-2.png
new file mode 100644
index 0000000..e931777
Binary files /dev/null and b/manual/source/Tutorial/Workflows/install-knime-2.png differ
diff --git a/manual/source/Tutorial/Workflows/install-knime-3.png b/manual/source/Tutorial/Workflows/install-knime-3.png
new file mode 100644
index 0000000..04752ab
Binary files /dev/null and b/manual/source/Tutorial/Workflows/install-knime-3.png differ
diff --git a/manual/source/Tutorial/Workflows/install-knime-4.png b/manual/source/Tutorial/Workflows/install-knime-4.png
new file mode 100644
index 0000000..beabe3b
Binary files /dev/null and b/manual/source/Tutorial/Workflows/install-knime-4.png differ
diff --git a/manual/source/Tutorial/Workflows/install-knime-5.png b/manual/source/Tutorial/Workflows/install-knime-5.png
new file mode 100644
index 0000000..cf8e641
Binary files /dev/null and b/manual/source/Tutorial/Workflows/install-knime-5.png differ
diff --git a/manual/source/Tutorial/Workflows/install-knime-6.png b/manual/source/Tutorial/Workflows/install-knime-6.png
new file mode 100644
index 0000000..dfc21c2
Binary files /dev/null and b/manual/source/Tutorial/Workflows/install-knime-6.png differ
diff --git a/manual/source/HowTo/PluginWorkflow.png b/manual/source/Tutorial/Workflows/plugin-workflow.png
similarity index 100%
rename from manual/source/HowTo/PluginWorkflow.png
rename to manual/source/Tutorial/Workflows/plugin-workflow.png
diff --git a/manual/source/Tutorial/Workflows/sam-plugins.png b/manual/source/Tutorial/Workflows/sam-plugins.png
new file mode 100644
index 0000000..ac39490
Binary files /dev/null and b/manual/source/Tutorial/Workflows/sam-plugins.png differ
diff --git a/manual/source/Tutorial/Workflows/sam-workflow.png b/manual/source/Tutorial/Workflows/sam-workflow.png
new file mode 100644
index 0000000..6ff048c
Binary files /dev/null and b/manual/source/Tutorial/Workflows/sam-workflow.png differ
diff --git a/manual/source/Tutorial/Workflows/workflow_plugin_dir.zip b/manual/source/Tutorial/Workflows/workflow_plugin_dir.zip
new file mode 100644
index 0000000..42d361b
Binary files /dev/null and b/manual/source/Tutorial/Workflows/workflow_plugin_dir.zip differ
diff --git a/manual/source/Tutorial/WritingTests.rst b/manual/source/Tutorial/WritingTests.rst
deleted file mode 100644
index c75f62c..0000000
--- a/manual/source/Tutorial/WritingTests.rst
+++ /dev/null
@@ -1,278 +0,0 @@
-.. sidebar:: ToC
-
-   .. contents::
-
-.. _tutorial-writing-tests:
-
-.. |br| raw:: html
-
-   <br />
-
-Writing Tests
--------------
-
-This tutorial introduces the SeqAn test system.
-Currently, there are two kinds of tests in SeqAn: "Normal" tests written in C++ that test C++ classes and functions and "app tests" that test applications.
-More information is also available in :ref:`how-to-write-tests` and :ref:`how-to-write-app-tests`.
-
-Library Tests
-~~~~~~~~~~~~~
-
-Creating Tests Skelletons
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use the ``skel.py`` script to create a new test, in this case for the module *my\_module*.
-
-.. code-block:: console
-
-    $ ./util/bin/skel.py test my_module .
-    Creating test in ./tests/my_module
-      Target path is: ./tests/my_module
-
-    mkdir(./tests/my_module)
-
-    Configuring file.
-      Source: ./util/skel/test_template/test.cpp
-      Target: ./tests/my_module/test_my_module.cpp
-
-    Configuring file.
-      Source: ./util/skel/test_template/test.h
-      Target: ./tests/my_module/test_my_module.h
-
-    Configuring file.
-      Source: ./util/skel/test_template/CMakeLists.txt
-      Target: ./tests/my_module/CMakeLists.txt
-
-The generated files are:
-
-| **tests/my_module/test_my_module.cpp**
-|   Contains the testsuite (the main program that calls the tests).
-| **tests/my_module/test_my_module.h**
-|   A header with tests.
-| **tests/my_module/CMakeLists.txt**
-|   The CMake file for building the test.
-
-|br|
-There always is just one ``.cpp`` file with the test suite for calling the tests.
-Usually, there is one test header for each library header under test.
-There is one ``CMakeLists.txt`` that has to be adjusted if new test headers are added.
-
-Test Suites
-^^^^^^^^^^^
-
-Test suites are collection of tests.
-They are defined using :dox:`TestSystemMacros#SEQAN_BEGIN_TESTSUITE` and :dox:`TestSystemMacros#SEQAN_END_TESTSUITE` as shown below.
-
-Essentially, these macros when used like ``SEQAN_BEGIN_TESTSUITE(test_suite_name) { /*...*/ } SEQAN_END_TESTSUITE``
-will expand to a main function: ``int main() { /*initialization boilerplate*/ /*...*/ /*finalization boilerplate*/; return res; }``.
-
-.. code-block:: cpp
-
-    #include <seqan/basic.h>
-    #include <seqan/file.h>
-
-    #include "test_my_module.h"
-
-    SEQAN_BEGIN_TESTSUITE(test_my_module)
-    {
-        // Call tests.
-        SEQAN_CALL_TEST(test_my_module_strings_example1);
-    }
-    SEQAN_END_TESTSUITE
-
-The generated test ``.cpp`` file includes *test\_my\_module* which contains the actual tests (see below).
-The generated file only contains the test *test\_my\_module\_strings\_example1* which is called using the :dox:`TestSystemMacros#SEQAN_CALL_TEST` macro.
-
-The macro :dox:`TestSystemMacros#SEQAN_CALL_TEST` expands to a function call that calls the test function generated by :dox:`TestSystemMacros#SEQAN_DEFINE_TEST` (see below).
-The function call will be wrapped in code that will detect if an assertion fails in the test (or the functions called by the test).
-Note that only SeqAn assertions can be caught, not standard C assertions using ``assert()`` from the ``<cassert>`` header.
-
-Tests
-^^^^^
-
-Tests are usually grouped and each group is put into one header file.
-Tests are declared using :dox:`TestSystemMacros#SEQAN_DEFINE_TEST`.
-
-The generated file looks as follows:
-
-.. code-block:: cpp
-
-    #ifndef TESTS_MY_MODULE_TEST_MY_MODULE_H_
-    #define TESTS_MY_MODULE_TEST_MY_MODULE_H_
-
-    #include <seqan/basic.h>
-    #include <seqan/stream.h>
-    #include <seqan/sequence.h>
-
-    // A test for strings.
-    SEQAN_DEFINE_TEST(test_my_module_strings_example1)
-    {
-        using namespace seqan;
-
-        // Define some constant test data for comparison...
-        CharString const STRING1 = "test 1";
-        CharString const STRING2 = "test 2";
-
-        // Append to a string and make equality assertion on the result.
-        CharString myStr = "test ";
-        append(myStr, "1");
-        SEQAN_ASSERT_EQ(STRING1, myStr);
-
-        // Demonstration of other assertions.
-        SEQAN_ASSERT_GT(STRING2, myStr);
-        SEQAN_ASSERT_GEQ(STRING2, myStr);
-        SEQAN_ASSERT_LT(myStr, STRING2);
-        SEQAN_ASSERT_LEQ(STRING2, STRING2);
-    }
-
-    #endif  // TESTS_MY_MODULE_TEST_MY_MODULE_H_
-
-The macro :dox:`TestSystemMacros#SEQAN_DEFINE_TEST` expands to a function definition.
-The test functions cann be called using the :dox:`TestSystemMacros#SEQAN_CALL_TEST` macro in your test suite (see above).
-
-Note that we do not use a global ``using namespace seqan`` but keep this local to the test functions.
-
-CMakeLists.txt File
-^^^^^^^^^^^^^^^^^^^
-
-The relevant lines from the file
-*tests/my\_module/CMakeLists.txt* are as follows:
-
-.. code-block:: cmake
-
-    cmake_minimum_required (VERSION 3.0.0)
-    project (seqan_tests_align)
-    message (STATUS "Configuring tests/my_module")
-
-    # Search SeqAn and select dependencies.
-    find_package (SeqAn REQUIRED)
-
-    # Add include directories.
-    include_directories (${SEQAN_INCLUDE_DIRS})
-
-    # Add definitions set by find_package (SeqAn).
-    add_definitions (${SEQAN_DEFINITIONS})
-
-    # Update the list of file names below if you add source files to your test.
-    add_executable (test_my_module test_my_module.cpp test_my_module.h)
-
-    # Add dependencies found by find_package (SeqAn).
-    target_link_libraries (test_my_module ${SEQAN_LIBRARIES})
-
-    # Add CXX flags found by find_package (SeqAn).
-    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SEQAN_CXX_FLAGS}")
-
-    # Register with CTest
-    add_test (NAME test_test_align COMMAND $<TARGET_FILE:test_my_modulen>)
-
-When we add a new test header *test\_my\_module\_header.h*, we would change the line with ``add_executable()`` to read:
-
-.. code-block:: cmake
-
-    add_executable (test_my_module test_my_module.cpp test_my_module.h test_my_module_header.h)
-
-When next building the target ``test_my_module`` via ``make`` or an IDE, CMake will run automatically.
-Now, the build system is aware of the new header file *test\_my\_module\_header.h* and will rebuild the test binary if the file changes.
-
-Building And Running Tests
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Now, go to your build directory and re-run CMake so the Makefiles (or your IDE's project files) include the target for the test.
-
-.. code-block:: console
-
-    $ cmake .
-    ...
-    $ make test_my_module
-    ...
-    $ ./holtgrew/tests/my_module/test_my_module
-    TEST SUITE test_my_module
-    SEQAN_ENABLE_DEBUG == 1
-    SEQAN_ENABLE_TESTING == 1
-    SEQAN_CXX_FLAGS == "SEQAN_CXX_FLAGS_NOT_SET"
-    test_my_module_strings_example1 OK
-    **************************************
-     Total Check Points : 0
-     Found Check Points : 0
-     Lost Check Points  : 0
-    --------------------------------------
-     Total Tests: 1
-     Skipped:     0
-     Errors:      0
-    **************************************
-
-Tests in ``apps`` folders
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-It is also possible to write normal tests inside apps.
-One example is the ``apps/param\_chooser/ param\_chooser`` app.
-
-To add a test to your app, you have to (1) add a test ``.cpp`` file and (2) register it in the ``CMakeLists.txt`` file.
-
-Writing the test program
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-The test program looks the same as above, but defines the precompiler symbol ``SEQAN_ENABLE_TESTING`` as ``1``.
-This has to happen at the top of the file (say the name of the file is ``test_my_app_funcs.cpp``).
-
-.. code-block:: cpp
-
-    #undef SEQAN_ENABLE_TESTING
-    #define SEQAN_ENABLE_TESTING 1
-
-    #include <seqan/basic.h>
-    #include <seqan/file.h>
-
-    SEQAN_DEFINE_TEST(test_my_app_funcs_hello)
-    {
-        SEQAN_FAIL("Hello, tester!");
-    }
-
-    SEQAN_BEGIN_TESTSUITE(test_my_app_funcs)
-    {
-        SEQAN_CALL_TEST(test_my_app_funcs_hello);
-    }
-    SEQAN_END_TESTSUITE
-
-Registering in ``CMakeLists.txt``
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following lines have to be added to ``CMakeLists.txt``.
-
-.. code-block:: cmake
-
-    add_executable (test_my_app_funcs test_my_app_funcs.cpp)
-    target_link_libraries (test_my_app_funcs ${SEQAN_LIBRARIES})
-    add_test (NAME test_test_my_app_funcs COMMAND <TARGET_FILE:test_my_app_funcs>)
-
-Next Steps
-~~~~~~~~~~
-
-The best way to learn about the testing system is to look at the existing test suites.
-Good examples are *test\_score* and *test\_random*.
-Note that other test suites might not be very clean since they were ported from the old test system and are not completely cleaned up yet.
-
-Have a look at the :ref:`how-to-write-tests` for more examples.
-
-Assertions
-~~~~~~~~~~
-
-You can make assertions on the called functions using the ``SEQAN_ASSERT*`` macros, e.g. :dox:`AssertMacros#SEQAN_ASSERT`, :dox:`AssertMacros#SEQAN_ASSERT_EQ`.
-For each assertion macro, there is one macro that has to be passed a message and optionally parameters, e.g. :dox:`AssertMacros#SEQAN_ASSERT SEQAN_ASSERT_MSG`, :dox:`AssertMacros#SEQAN_ASSERT_EQ SEQAN_ASSERT_EQ_MSG`.
-
-Assertions can also be used in your library and application code.
-When compiled in ``Debug`` mode, the assertions are enabled.
-They are disabled in ``Release`` or ``RelWithDebInfo`` mode.
-
-Checks
-~~~~~~
-
-There also is a macro called :dox:`AssertMacros#SEQAN_CHECK` that creates an assertion that is enabled regardless of whether debugging is enabled.
-It only makes sense to use the :dox:`AssertMacros#SEQAN_CHECK` macro in library or application code, not in tests.
-There are no variants of :dox:`AssertMacros#SEQAN_CHECK` for comparisons.
-Also see the macro :dox:`AssertMacros#SEQAN_FAIL`.
-
-App Tests
-~~~~~~~~~
-
-For writing app tests, see :ref:`how-to-write-app-tests`.
diff --git a/manual/source/_static/seqan_ext.css b/manual/source/_static/seqan_ext.css
index a05cad2..2b31578 100644
--- a/manual/source/_static/seqan_ext.css
+++ b/manual/source/_static/seqan_ext.css
@@ -48,3 +48,23 @@ p.sidebar-title { margin-bottom: 7px !important; }
 .rubric > .rubric-heading1 { font-weight:bolder; font-size: 1.4em; }
 .rubric > .rubric-heading2 { font-weight:bolder; font-size: 1.1em; }
 
+/* Display the sidebar ToC with padding and as a bullet list*/
+#contents > ul > li ul, #contents > ul > li li {
+  margin: .5em 0 .5em 1em !important;
+}
+
+#contents > ul > li li {
+  list-style-type: square;
+}
+
+#contents > ul > li li li {
+  list-style-type: disc;
+}
+
+div[class^='highlight'] pre {
+    color: #AAA
+}
+
+.gp {
+    color: #AAA
+}
diff --git a/manual/source/conf.py b/manual/source/conf.py
index dede96d..5947718 100644
--- a/manual/source/conf.py
+++ b/manual/source/conf.py
@@ -35,6 +35,9 @@ extensions = [
     'seqansphinx.includefrags',
 ]
 
+[extensions]
+todo_include_todos=True
+
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
 
diff --git a/manual/source/index.rst b/manual/source/index.rst
index f713728..8529c00 100644
--- a/manual/source/index.rst
+++ b/manual/source/index.rst
@@ -1,58 +1,156 @@
+.. _manual-main:
+
 SeqAn Manual
 ============
 
-This is the manual of the SeqAn library.
-SeqAn is the C++ template library for the analysis of biological sequences.
-It contains algorithms and data structures for
+Welcome to the manual pages for the SeqAn library!
+
+SeqAn is a C++ template library for the analysis of biological sequences.
+As such, it contains algorithms and data structures for
 
 * string representation and their manipluation,
 * online and indexed string search,
 * efficient I/O of bioinformatics file formats,
-* sequence alignment, and
-* much more.
+* sequence alignments, and
+* many, many more.
 
-Table Of Contents
------------------
 
+Requirements
+------------
+
+Well, as SeqAn is written in C++ it might not come as a surprise, that you should bring some basic knowledge about the C++ programming language.
+We made quite an effort to not depend on other libraries, than the on-board tools already bring.
+This means, to learn SeqAn it suffices in the beginning to only know about C++ and the `STL <http://en.cppreference.com/w/cpp>`_ which is the standard template library defined by the ISO C++ committee.
+The rest will be discussed in the subsequent tutorials step by step.
+
+Before we start, here is a strong advice!
+If you are diving into C++ for the first time, because you are new to programming or switched from another programming language, then we recommend, you first stroll through the `C++ FAQs <https://isocpp.org/faq>`_ to acquaint yourself with C++.
+There you can find many useful tips about C++ and get some further readings.
+It also will introduce you to the paradigms that we used for designing this library.
+In the Getting Started section we will introduce you to the design decisions of SeqAn and lay down some of the basic programming paradigms we follow to make this library so efficient.
+If you never heard about these paradigms, dont't worry.
+We will give you code examples, which you can try out on your own.
+Never forgot, there is no better way to learn a new language or language feature, than to actually program with it.
+So keep your fingers attached to the keyboard and let's start right away!
+
+If you didn't install SeqAn yet, please follow the :ref:`User Guide <infra-use>` instructions to install SeqAn first.
+After that you should continue with the tutorials.
+
+.. hint::
+    Please note, that although we try hard to provide a very comprehensive list of topics, it is not always possible to cover every angle of the library and its features.
+    The tutorials are thought as a first place to start.
+    If you are more experienced with SeqAn you can use the :ref:`API documentation <api-documentation>` in addition to search for specific functions or classes.
+
+.. _manual-main-tutorials:
+
+Tutorials
+---------
+
+The tutorial section is organized such that you can efficiently search for a specific topic you want to learn more about.
+Each tutorial takes 30 to 60 minutes of your time for learning how to use SeqAn.
+So buckle up and jump right into using SeqAn using our tutorials!
+
+    :ref:`tutorial-getting-started`
+        These articles are required for every one that is new to SeqAn.
+        Take your time and study these documents thoroughly, as they describe the fundamental concepts and design decisions of the library.
+        Everything else depends on these informations.
 
-:ref:`tutorial`
-  Each tutorial takes 30 to 60 minutes of your time for learning how to use SeqAn.
-  Jump right into using SeqAn using our tutorials!
+    :ref:`tutorial-datastructures`
+        In the data structure tutorials we introduce you to the main data structures of this library and their usage.
+        Beginners should start with the :ref:`Sequence tutorial <tutorial-datastructures-sequences-strings-and-segments>`, and then continue with the :ref:`Alingment tutorials <tutorial-datastructures-alignment>`.
+        After that beginners should continue with the :ref:`Alignment Algorithm tutorials <tutorial-algorithms-alignment>`.
 
-  * Detailed installation descriptions are available in the :ref:`tutorial-getting-started` Tutorial.
+    :ref:`tutorial-algorithms`
+        In this section we explain several different algorithms that are crucial for many bioinformatics applications.
+        This includes pattern matching, dynamic programming algorithms for sequence alignments, seed extension and many more.
+        Beginners that come from the tutorials about data structures should either continue with :ref:`Online Pattern Matching <tutorial-algorithms-pattern-matching-online>` or with the :ref:`DP Alignment Algorithms <tutorial-algorithms-alignment>`.
 
-:ref:`how-to`
-  Use these short and target-oriented articles to solve common, specific problems.
+    :ref:`tutorial-io`
+        On this page you will learn how to read/write and work with common bioinformatic file formats, such as FASTA, BAM, BED, VCF files, and more.
+        Beginners should start with the :ref:`File I/O Overview <tutorial-io-input-output-overview>`.
+        This tutorial introduces you to the basic I/O concepts and data structures.
 
-:ref:`build-manual`
-  These articles describe how to use the SeqAn build system and integrate into your **Makefiles**, for example.
+    :ref:`tutorial-how-to`
+        The how-to page is divided into Recipes and Use Cases.
+        The former section gives you some useful hints about miscellaneous topics.
+        The latter section describes how some use cases can be solved with SeqAn.
+        Things presented here are for experienced SeqAn users.
+        If you are a beginner, first have a look at the tutorials above.
 
-:ref:`infrastructure`
-  These pages describe the SeqAn infrastructure and are mostly interesting to SeqAn developers.
+    :ref:`tutorial-workflows-index`
+        These tutorials teach you how to integrate your application into workflow engines like KNIME or Galaxy.
 
-:ref:`style-guide`
-  Please follow these style guides for SeqAn library and application code.
+..    :ref:`tutorial-apps`
+        A brief overview of some of our own applications developed with the SeqAn library.
 
-:ref:`glossary`
-  These pages contain definitions of various terms.
+Infrastructure
+--------------
+
+    :ref:`infra-use`
+        These articles describe how to get SeqAn, how to use it in your application and explain things you need to consider when building.
+        Everyone should read it.
+
+    :ref:`infra-contribute`
+        Anyone who wants to contribute code or documentation to SeqAn should read this.
+        You will learn about the conventions and coding style.
+
+    :ref:`infra-manage`
+        These pages cover the structure of the SeqAn repository, the git workflow and explain release procedures.
+        All SeqAn team members should read this; and also downstream package maintainers.
+
+.. _api-documentation:
 
 API Documentation
 -----------------
 
-The API documentation can be found on :dox:`mainpage here`.
+The API documentation can be found :dox:`mainpage here`.
+
+.. toctree::
+    :caption: Tutorials
+    :name: tutorial
+    :hidden:
+    :maxdepth: 1
+    :titlesonly:
+
+    Tutorial/GettingStarted/index
+    Tutorial/DataStructures/index
+    Tutorial/Algorithms/index
+    Tutorial/InputOutput/index
+    Tutorial/HowTo/index
+    Tutorial/Workflows/index
+..    Tutorial/Applications/index
 
 .. toctree::
-   :hidden:
-   :maxdepth: 2
+    :caption: Infrastructure
+    :name: infra
+    :hidden:
+    :maxdepth: 1
+    :titlesonly:
+
+    Infrastructure/Use/index
+    Infrastructure/Contribute/index
+    Infrastructure/Manage/index
+    Infrastructure/Misc/index
 
-   Tutorial
-   HowTo
-   Infrastructure
-   BuildManual
-   StyleGuide
-   Glossary
+.. toctree::
+    :caption: Follow Us
+    :name: follow
+    :hidden:
+    :maxdepth: 1
+    :titlesonly:
+
+    SeqAn Project <http://seqan.de>
+    GitHub <http://github.com/seqan>
+    Twitter <http://twitter.com/seqan>
+    RSS Feeds <http://www.seqan.de/feed/>
+    SeqAn Mailinglist <https://lists.fu-berlin.de/listinfo/seqan-dev#subscribe>
+
+.. toctree::
+    :hidden:
+    :caption: Appendix
+    :titlesonly:
 
-   zreferences
+    zreferences
 
 .. Generated pages, should not appear
 
diff --git a/manual/source/seqan.bib b/manual/source/seqan.bib
index a0014f2..d3b6e79 100644
--- a/manual/source/seqan.bib
+++ b/manual/source/seqan.bib
@@ -239,3 +239,36 @@
   year={2008},
   publisher={Springer}
 }
+
+ at article{gotoh1982improved,
+  title={An improved algorithm for matching biological sequences},
+  author={Gotoh, Osamu},
+  journal={Journal of molecular biology},
+  volume={162},
+  number={3},
+  pages={705--708},
+  year={1982},
+  publisher={Elsevier}
+}
+
+ at Inproceedings{Urgese2014,
+  title={Dynamic Gap Selector: A Smith Waterman Sequence Alignment Algorithm with Affine Gap Model Optimisation},
+  author={Urgese, Gianvito and Paciello, Giulia and Acquaviva, Andrea and Ficarra, Elisa and Graziano, Mariagrazia and Zamboni, Maurizio},
+  booktitle = {In Proc. 2nd Int. Work-Conf. Bioinform. Biomed. Eng.(IWBBIO): 7-9 April 2014; Granada},
+  year={2014},
+  pages   = {1347-1358},
+  publisher={Copicentro Granada SL},
+  url={http://iwbbio.ugr.es/2014/papers/IWBBIO_2014_paper_143.pdf}
+}
+
+ at article{cartwright2006logarithmic,
+  title={Logarithmic gap costs decrease alignment accuracy},
+  author={Cartwright, Reed A},
+  journal={BMC bioinformatics},
+  volume={7},
+  number={1},
+  pages={527},
+  year={2006},
+  publisher={BioMed Central Ltd}
+}
+
diff --git a/manual/source/under_construction.jpg b/manual/source/under_construction.jpg
new file mode 100644
index 0000000..da9bdc0
Binary files /dev/null and b/manual/source/under_construction.jpg differ
diff --git a/manual/source/zreferences.rst b/manual/source/zreferences.rst
index 4b68f1b..82f3081 100644
--- a/manual/source/zreferences.rst
+++ b/manual/source/zreferences.rst
@@ -1,3 +1,4 @@
+
 References
 ==========
 
diff --git a/tests/align/CMakeLists.txt b/tests/align/CMakeLists.txt
index ad50c22..6276232 100644
--- a/tests/align/CMakeLists.txt
+++ b/tests/align/CMakeLists.txt
@@ -10,6 +10,14 @@ cmake_minimum_required (VERSION 3.0.0)
 project (seqan_tests_align CXX)
 message (STATUS "Configuring tests/align")
 
+set (ALIGN_SIMD_TEST TRUE CACHE INTERNAL "Whether to build test_align_simd.")
+# workaround a bug in llvm35 on FreeBSD
+if ((${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") AND
+    (COMPILER_CLANG) AND
+    (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.6.0))
+    set (ALIGN_SIMD_TEST FALSE CACHE INTERNAL "Whether to build test_align_simd.")
+endif ()
+
 # ----------------------------------------------------------------------------
 # Dependencies
 # ----------------------------------------------------------------------------
@@ -54,6 +62,16 @@ add_executable (test_align
 # Add dependencies found by find_package (SeqAn).
 target_link_libraries (test_align ${SEQAN_LIBRARIES})
 
+if (ALIGN_SIMD_TEST)
+    # Add executable for simd tests.
+    add_executable (test_align_simd
+                    test_align_simd.cpp
+                    test_align_simd.h)
+
+    # Add dependencies found by find_package (SeqAn).
+    target_link_libraries (test_align_simd ${SEQAN_LIBRARIES})
+endif()
+
 # Add CXX flags found by find_package (SeqAn).
 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SEQAN_CXX_FLAGS}")
 
@@ -62,3 +80,6 @@ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SEQAN_CXX_FLAGS}")
 # ----------------------------------------------------------------------------
 
 add_test (NAME test_test_align COMMAND $<TARGET_FILE:test_align>)
+if (ALIGN_SIMD_TEST)
+    add_test (NAME test_test_align_simd COMMAND $<TARGET_FILE:test_align_simd>)
+endif ()
diff --git a/tests/align/test_align_align.h b/tests/align/test_align_align.h
index 28db411..155309a 100644
--- a/tests/align/test_align_align.h
+++ b/tests/align/test_align_align.h
@@ -302,12 +302,8 @@ void testGotohAlign()
     SEQAN_ASSERT(score == -2);
     SEQAN_ASSERT((row(ali,0) == "at--gt") || (row(ali,0) == "atg--t" ));
     SEQAN_ASSERT(row(ali,1) == "atagat" );
-
-
-
 }
 
-
 template <typename TAlign>
 void testAlignBasics2()
 {
diff --git a/demos/unassigned_or_unused/cuda/hello.cu b/tests/align/test_align_simd.cpp
similarity index 89%
rename from demos/unassigned_or_unused/cuda/hello.cu
rename to tests/align/test_align_simd.cpp
index 233c948..405b6b6 100644
--- a/demos/unassigned_or_unused/cuda/hello.cu
+++ b/tests/align/test_align_simd.cpp
@@ -29,22 +29,15 @@
 // DAMAGE.
 //
 // ==========================================================================
-// Author: Enrico Siragusa <enrico.siragusa at fu-berlin.de>
+// Author: René Rahn <rene.rahn at fu-berlin.de>
 // ==========================================================================
 
 #include <seqan/basic.h>
+#include <seqan/stream.h>
 
-using namespace seqan;
+#include "test_align_simd.h"
 
-SEQAN_GLOBAL
-void helloCUDA()
-{
-    printf("Hello CUDA!\n");
-}
-
-int main()
-{
-    helloCUDA<<<1,1>>>();
-    cudaDeviceSynchronize();
-    return 0;
+int main(int argc, char const ** argv) {
+    seqan::TestSystem::init(argc, argv);
+    return seqan::TestSystem::runAll();
 }
diff --git a/tests/align/test_align_simd.h b/tests/align/test_align_simd.h
new file mode 100644
index 0000000..7da774c
--- /dev/null
+++ b/tests/align/test_align_simd.h
@@ -0,0 +1,559 @@
+// ==========================================================================
+//                 SeqAn - The Library for Sequence Analysis
+// ==========================================================================
+// Copyright (c) 2006-2016, Knut Reinert, FU Berlin
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
+//       its contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+//
+// ==========================================================================
+// Author: Rene Rahn <rene.rahn at fu-berlin.de>
+// ==========================================================================
+
+#ifndef TESTS_ALIGN_TEST_ALIGN_SIMD_H_
+#define TESTS_ALIGN_TEST_ALIGN_SIMD_H_
+
+#include <tuple>
+
+#include <seqan/basic.h>
+#include <seqan/align.h>
+
+namespace impl
+{
+namespace test_align_simd
+{
+
+struct TestAlignSimdVariableLength_;
+using VariableLengthSimd = seqan::Tag<TestAlignSimdVariableLength_>;
+
+struct TestAlignSimdEqualLength_;
+using EqualLengthSimd = seqan::Tag<TestAlignSimdEqualLength_>;
+
+template <typename TAlphabet, typename TSimdLength>
+struct TestSequences_;
+
+template <>
+struct TestSequences_<seqan::Dna, EqualLengthSimd>
+{
+    using TSeq = seqan::String<seqan::Dna>;
+
+    static auto
+    getSequences()
+    {
+        seqan::StringSet<TSeq> set;
+        appendValue(set, "AGCGACTGCAAACATCAGATCAGAG");
+        appendValue(set, "TAATACTAGCATGCGATAAGTCCCT");
+        appendValue(set, "GGCACGTGGATGGTTTAGAGGAATC");
+        appendValue(set, "AGATTCAAGTCTGGTTAACCATCAA");
+        appendValue(set, "ACAGGTCTTGAGTCTAAAATTGTCG");
+        appendValue(set, "TCTCCTGCGTACGAGATGGAAATAC");
+        appendValue(set, "TAGGTAACTACAGGGACTCCGACGT");
+        appendValue(set, "TATGTACGTTGCTCCGTCAGAGGCG");
+
+        appendValue(set, "CCATTCAGGATCACGTTACCGCGAA");
+        appendValue(set, "AAAAAGGGACCAGGAGCTCTTCTCC");
+        appendValue(set, "CCTGCGGTCACGTCTATAGAAATTA");
+        appendValue(set, "CACCATTAACCCTCCTGAGAACCGG");
+        appendValue(set, "GAGGCGGGAATCCGTCACGTATGAG");
+        appendValue(set, "AAGGTATTTGCCCGATAATCAATAC");
+        appendValue(set, "CCCAGGCTTCTAACTTTTTCCACTC");
+        appendValue(set, "GCTTGAGCCGGCTAGGCCTTTCTGC");
+
+        appendValue(set, "ATCTCGGGTCCTGCCCAACCGGTCT");
+        appendValue(set, "AACAAGGGACCAGGAGCTCTTCTCC");
+        appendValue(set, "ACACGCTAATATAGCGAATCACCGA");
+        appendValue(set, "GAACCCGGCGCCACGCAATGGAACG");
+        appendValue(set, "TCCTTAACTCCGGCAGGCAATTAAA");
+        appendValue(set, "ACAGAAAAATAGGCGAATGAATCTT");
+        appendValue(set, "GGGAACGTATGTATAACGCAAAAAA");
+        appendValue(set, "TTCTCTGTGTATCGAAGAATGGCCT");
+
+        appendValue(set, "CCGAAGTTTCGATGGACTGGTGCCA");
+        appendValue(set, "ACGCGCAGGCATAGTTTTAGGAGAA");
+        appendValue(set, "TTATTCGGGGGCAGTGACAACCAAC");
+
+        seqan::StringSet<TSeq>  set2(set);
+        std::sort(seqan::begin(set2, seqan::Standard()), seqan::end(set2, seqan::Standard()),
+                  [](auto& strA, auto& strB){ return seqan::isLess(strA, strB); });
+        return std::make_tuple(set, set2);
+    }
+};
+
+template <>
+struct TestSequences_<seqan::Dna, VariableLengthSimd>
+{
+    using TSeq = seqan::String<seqan::Dna>;
+
+    static auto
+    getSequences()
+    {
+        seqan::StringSet<TSeq> set;
+        appendValue(set, "AGCGACTGCAAACATCAGATCAGAGGTAGAG");
+        appendValue(set, "TAATACTAGCATGCGATAAGTCCCT");
+        appendValue(set, "GGCACGTGTGGTTTAGAGGAATC");
+        appendValue(set, "AGATTCAAGTCTGGTTAACCATCAA");
+        appendValue(set, "ACAGGTCTTGAGTCTAAAATTGTCGAA");
+        appendValue(set, "TCTCCTGCGTACGAGATGGAAATAC");
+        appendValue(set, "TAGGTAACTACAGGGACACGT");
+        appendValue(set, "TATGTACGTCTCCGTCAGAGGCG");
+
+        appendValue(set, "CCATTCAGGATCACGTTACCGCGAAGTACCC");
+        appendValue(set, "AAGGGACCAGGAGCTCTTCTCC");
+        appendValue(set, "CCTGCGGTCACGTCTATAGAAATT");
+        appendValue(set, "CACCATTAACCCTCCTGAGAACCGAGTAGG");
+        appendValue(set, "GAGGCGGGAATCCGTCACGTATGAG");
+        appendValue(set, "AAGGTATTTGCCCGATAATCAATACGATGAGATAGAGAGATAGAATAGAGAAGGGACCGCGCATGACTACGATCGACTGACTACGA");
+        appendValue(set, "CGAGTATATCGAGAGAGGTCACG");
+        appendValue(set, "GCTTGAGCCGGCTAGGCTCTGC");
+
+        appendValue(set, "ATCTCGGGTCCTGCCAACCGGTCT");
+        appendValue(set, "AAAAAGGGACCAGGAGCTCTTCTCC");
+        appendValue(set, "ACACGCTAATATAGCGAATCACCGA");
+        appendValue(set, "AATGGAACG");
+        appendValue(set, "TCCTTAACTCCGGCAGGCAATTATACCGGACTGACACTTAAA");
+        appendValue(set, "ACAGAAAAATAGGCGAATGAAACACTCTT");
+        appendValue(set, "GGGAACGTATGTATAACGCAAAAA");
+        appendValue(set, "TTCTCTGTGTATCGAAGAATGCT");
+
+        appendValue(set, "CCGAAGTTTCGATGGATGGATTCCACACACCTGGTGCCA");
+        appendValue(set, "ACGCGCAGGCATAGTTGGAGAA");
+        appendValue(set, "TTATTCGGGGGCAGTGACAACACTTAGCGACTAC");
+        
+        auto set2(set);
+        std::sort(seqan::begin(set2, seqan::Standard()), seqan::end(set2, seqan::Standard()),
+                  [](auto& strA, auto& strB){ return seqan::isLess(strA, strB); });
+        return std::make_tuple(set, set2);
+    }
+};
+
+template <>
+struct TestSequences_<seqan::AminoAcid, EqualLengthSimd>
+{
+    using TSeq = seqan::String<seqan::AminoAcid>;
+
+    static auto
+    getSequences()
+    {
+        seqan::StringSet<TSeq> set;
+        appendValue(set, "FNQSAEYPDISLHCGVLKWRATLGT");
+        appendValue(set, "EIKSDVLLHRPGNIGMQVAESYFAT");
+        appendValue(set, "PIIMWSMKNRTIERLPTGVLMISHT");
+        appendValue(set, "FMATNEKVHCACGADYQMIIDCNEA");
+        appendValue(set, "MFHQTSNANWMFVSNKFHIKFGTLD");
+        appendValue(set, "SNEMGQCFPHEPACFFDKDFRLFIN");
+        appendValue(set, "FPWAHYVVHTLREHRKDANHRSTSY");
+        appendValue(set, "QYRNTESMGCEMRCFTETIMIAGVA");
+
+        appendValue(set, "VVRMDGKEVLKQHVPTYADKHPTGQ");
+        appendValue(set, "TMLKWCEWCFAEFPPFASEPKFPPN");
+        appendValue(set, "GTWGWVDGVHHTMGEQCGPGRACWG");
+        appendValue(set, "ECDFQTWYFYCVNQEIFELFICCMG");
+        appendValue(set, "KRRELNGQERGGWWTVDGPGVSMGT");
+        appendValue(set, "CWAAHYVCWRTKQKQLVAFQRLNCI");
+        appendValue(set, "NRLVGFQIHCFLIRCVEPGQTHTID");
+        appendValue(set, "AYYVRGFMMGQMYGRPVILMTFTKP");
+
+        appendValue(set, "SFTQPVELHIPHYWWHLAYFMIMFY");
+        appendValue(set, "PMNKMFDFNNHQDLLTFTKRFPTPW");
+        appendValue(set, "VIPMIYHDWSIISALMMQKDIYYIA");
+        appendValue(set, "TPGMWGMATLTGNFNSIFVSKYVKN");
+        appendValue(set, "GKELWGMVIARAGMAVQNMYSRDTF");
+        appendValue(set, "VHASDLYAKCYSNCVYQENIDIAEV");
+        appendValue(set, "KQSGTLSGPQYWENVHRVLEDYPKE");
+        appendValue(set, "DPHGYCFYEGTFAWDVEVHEFNNKD");
+
+        appendValue(set, "NMQDVIGGKSLAQHSSVTYKAQQEH");
+        appendValue(set, "CQTPRWECSLNFDEKEAADLMIDVS");
+        appendValue(set, "PMMDLDHCMLIECLRPHNRDNCARH");
+
+        decltype(set) set2(set);
+        std::sort(seqan::begin(set2, seqan::Standard()), seqan::end(set2, seqan::Standard()),
+                  [](auto& strA, auto& strB){ return seqan::isLess(strA, strB); });
+        return std::make_tuple(set, set2);
+    }
+};
+
+template <>
+struct TestSequences_<seqan::AminoAcid, VariableLengthSimd>
+{
+    using TSeq = seqan::String<seqan::AminoAcid>;
+
+    static auto
+    getSequences()    {
+        seqan::StringSet<TSeq> set;
+        appendValue(set, "FNQSAEYPDISHCGVMQLKWRATLGT");
+        appendValue(set, "EIKSDVLLHRWSMKNPGNILMIDVGMQVAESYFAT");
+        appendValue(set, "PIIMWSMKNRTIEPTGLMISHT");
+        appendValue(set, "FMATNEKVHCACGWSMKNADLMIDVYQMIIDCNEA");
+        appendValue(set, "MWSMKNFHQTSNANWMFVSNMQKFHIKFGTLD");
+        appendValue(set, "SNEGQCFPHEPACFWSMKFDKDFRLFIN");
+        appendValue(set, "FPWAHYVVHTLREHMQRKDANHRSTSY");
+        appendValue(set, "QYRNTWSMKNESMGCEMRFLMIVTETIMIAGVA");
+
+        appendValue(set, "VVRMDGKEVLWSMKNKQHVPTYADKHPTGQ");
+        appendValue(set, "TMLKWCEWCFALMIDVEFPPFASEPKFPPN");
+        appendValue(set, "GTWGVDGVHHWSMWSMKNLMIDVTMGEQCGPGRACWG");
+        appendValue(set, "ECDFQTWYFYCVNQMQEIFELFICCMG");
+        appendValue(set, "KRREWSMKNLNGQERGGWWTVDGPGVSMGT");
+        appendValue(set, "CWAAHYCWRWWSMKNSMKNTKLMIDVQMQKQLVAFQRLNCI");
+        appendValue(set, "NRLVGFQIHCFIRCVEPGQTHTID");
+        appendValue(set, "AYYVRGFMMGQMMQYGRPVILMTFTKP");
+
+        appendValue(set, "SFTQPVELHIPHYWLMIDVWHLAYFMIMFY");
+        appendValue(set, "PMNKMFDFNHQMQDLLTFTKPTPW");
+        appendValue(set, "VIPMIYHDWSIISALMMLMIDVQKDIYYIA");
+        appendValue(set, "TPGMWGMATLTGMQNFNSFVSKYVKN");
+        appendValue(set, "GKELWGMVIARAGMAVQNLMIDVMYSRDTF");
+        appendValue(set, "VHASDLWSNYAKCYSNCVYQEIDIAEV");
+        appendValue(set, "KQSGTLSMQGPYWENVHRVLLMIDVEDYPKE");
+        appendValue(set, "DPHGYCFMQYEGTFAWDVEVHEFNNKD");
+
+        appendValue(set, "NMQDVIGGKSLAQHSSVTYAQQEH");
+        appendValue(set, "CQTPRWECMQSLNFDEKEAADLMIDVS");
+        appendValue(set, "PMMDLDWSMKNMLIECLRPHNRMQDNLMIDVCARH");
+        
+        auto set2(set);
+        std::sort(seqan::begin(set2, seqan::Standard()), seqan::end(set2, seqan::Standard()),
+                  [](auto& strA, auto& strB){ return seqan::isLess(strA, strB); });
+        return std::make_tuple(set, set2);
+    }
+};
+
+struct LocalAlignTester_
+{
+    template <typename TAlign,
+              typename TScoreValue, typename TScoreSpec,
+              typename TConfig>
+    static auto
+    run(TAlign & align,
+        seqan::Score<TScoreValue, TScoreSpec> const & score,
+        TConfig const &,
+        int const lDiag,
+        int const uDiag)
+    {
+        if (lDiag == seqan::MinValue<int>::VALUE && uDiag == seqan::MaxValue<int>::VALUE)
+            return localAlignment(align, score);
+        else
+            return localAlignment(align, score, lDiag, uDiag);
+    }
+};
+
+struct GlobalAlignTester_
+{
+    template <typename TAlign,
+              typename TScoreValue, typename TScoreSpec,
+              typename TConfig>
+    static auto
+    run(TAlign & align,
+        seqan::Score<TScoreValue, TScoreSpec> const & score,
+        TConfig const & config,
+        int const lDiag,
+        int const uDiag)
+    {
+        if (lDiag == seqan::MinValue<int>::VALUE && uDiag == seqan::MaxValue<int>::VALUE)
+            return globalAlignment(align, score, config);
+        else
+            return globalAlignment(align, score, config, lDiag, uDiag);
+    }
+};
+
+struct GlobalAlignScoreTester_
+{
+    template <typename TStringsH,
+              typename TStringsV,
+              typename TScoreValue, typename TScoreSpec,
+              typename TConfig>
+    static auto
+    run(TStringsH const & strH,
+        TStringsV const & strV,
+        seqan::Score<TScoreValue, TScoreSpec> const & score,
+        TConfig const & config,
+        int const lDiag,
+        int const uDiag)
+    {
+        if (lDiag == seqan::MinValue<int>::VALUE && uDiag == seqan::MaxValue<int>::VALUE)
+            return globalAlignmentScore(strH, strV, score, config);
+        else
+            return globalAlignmentScore(strH, strV, score, config, lDiag, uDiag);
+    }
+};
+}  // namespace test_align_simd
+}  // namespace impl
+
+// ----------------------------------------------------------------------------
+// Class SimdAlignTest
+// ----------------------------------------------------------------------------
+
+// Common test class instance, which stores the types to be accessed.
+template <typename TTuple>
+class SimdAlignTest : public seqan::Test
+{
+public:
+    using TAlignConfig = std::tuple_element_t<0, TTuple>;
+    using TLengthParam = std::tuple_element_t<1, TTuple>;
+    using TBandSwitch = std::tuple_element_t<2, TTuple>;
+};
+
+// ----------------------------------------------------------------------------
+// Configuration of typed tests for global alignment.
+// ----------------------------------------------------------------------------
+
+template <typename T>
+class SimdAlignTestCommon : public SimdAlignTest<T>
+{};
+
+typedef
+        seqan::TagList<std::tuple<seqan::AlignConfig<>,                         impl::test_align_simd::EqualLengthSimd,     seqan::BandOff>,
+        seqan::TagList<std::tuple<seqan::AlignConfig<>,                         impl::test_align_simd::VariableLengthSimd,  seqan::BandOff>,
+        seqan::TagList<std::tuple<seqan::AlignConfig<true, true, true, true>,   impl::test_align_simd::EqualLengthSimd,     seqan::BandOff>,
+        seqan::TagList<std::tuple<seqan::AlignConfig<true, true, true, true>,   impl::test_align_simd::VariableLengthSimd,  seqan::BandOff>,
+        seqan::TagList<std::tuple<seqan::AlignConfig<true, false, false, true>, impl::test_align_simd::EqualLengthSimd,     seqan::BandOff>,
+        seqan::TagList<std::tuple<seqan::AlignConfig<true, false, false, true>, impl::test_align_simd::VariableLengthSimd,  seqan::BandOff>,
+        seqan::TagList<std::tuple<seqan::AlignConfig<false, true, true, false>, impl::test_align_simd::EqualLengthSimd,     seqan::BandOff>,
+        seqan::TagList<std::tuple<seqan::AlignConfig<false, true, true, false>, impl::test_align_simd::VariableLengthSimd,  seqan::BandOff>,
+        seqan::TagList<std::tuple<seqan::AlignConfig<>,                         impl::test_align_simd::EqualLengthSimd,     seqan::BandOn>,
+        seqan::TagList<std::tuple<seqan::AlignConfig<true, true, true, true>,   impl::test_align_simd::EqualLengthSimd,     seqan::BandOn>,
+        seqan::TagList<std::tuple<seqan::AlignConfig<true, false, false, true>, impl::test_align_simd::EqualLengthSimd,     seqan::BandOn>,
+        seqan::TagList<std::tuple<seqan::AlignConfig<false, true, true, false>, impl::test_align_simd::EqualLengthSimd,     seqan::BandOn>
+        > > > > > > > > > > > > SimdAlignTestCommonCommonTypes;
+
+SEQAN_TYPED_TEST_CASE(SimdAlignTestCommon, SimdAlignTestCommonCommonTypes);
+
+// ----------------------------------------------------------------------------
+// Configuration of typed tests for local alignment.
+// ----------------------------------------------------------------------------
+
+template <typename T>
+class SimdAlignLocalTestCommon : public SimdAlignTest<T>
+{};
+
+typedef
+        seqan::TagList<std::tuple<seqan::AlignConfig<>, impl::test_align_simd::EqualLengthSimd,    seqan::BandOff>,
+        seqan::TagList<std::tuple<seqan::AlignConfig<>, impl::test_align_simd::VariableLengthSimd, seqan::BandOff>,
+        seqan::TagList<std::tuple<seqan::AlignConfig<>, impl::test_align_simd::EqualLengthSimd,    seqan::BandOn>
+        > > > SimdAlignLocalTestCommonCommonTypes;
+
+SEQAN_TYPED_TEST_CASE(SimdAlignLocalTestCommon, SimdAlignLocalTestCommonCommonTypes);
+
+// ----------------------------------------------------------------------------
+// Function testAlignSimd()
+// ----------------------------------------------------------------------------
+
+template <typename TAlphabet,
+          typename TFunctor,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlignConfig,
+          typename TSimdLength>
+void testAlignSimd(TFunctor const &,
+                   seqan::Score<TScoreValue, TScoreSpec> const & score,
+                   TAlignConfig const & config,
+                   TSimdLength const & /*tag*/,
+                   int const lDiag = seqan::MinValue<int>::VALUE,
+                   int const uDiag = seqan::MaxValue<int>::VALUE)
+{
+    auto sets = impl::test_align_simd::TestSequences_<TAlphabet, TSimdLength>::getSequences();
+
+    // Prepare an align object with the sequences.
+    seqan::StringSet<seqan::Align<seqan::String<TAlphabet> > > alignments;
+    resize(alignments, length(std::get<0>(sets)));
+    auto zipCont = makeZipView(alignments, std::get<0>(sets), std::get<1>(sets));
+
+    for(auto tuple : zipCont)
+    {
+        resize(rows(std::get<0>(tuple)), 2);
+        assignSource(row(std::get<0>(tuple), 0), std::get<1>(tuple));
+        assignSource(row(std::get<0>(tuple), 1), std::get<2>(tuple));
+    }
+
+    // Run the SIMD accelerated alignment.
+    seqan::String<TScoreValue> scores = TFunctor::run(alignments, score, config, lDiag, uDiag);
+    SEQAN_ASSERT_EQ(length(scores), length(alignments));
+
+    // Check correctness of alignments using sequential alignment.
+    auto zipRes = makeZipView(scores, alignments);
+    for(auto res : zipRes)
+    {
+        typename std::decay<decltype(std::get<1>(res))>::type goldAlign;
+        resize(rows(goldAlign), 2);
+        assignSource(row(goldAlign, 0), source(row(std::get<1>(res), 0)));
+        assignSource(row(goldAlign, 1), source(row(std::get<1>(res), 1)));
+
+        TScoreValue goldScore = TFunctor::run(goldAlign, score, config, lDiag, uDiag);
+
+        SEQAN_ASSERT_EQ(std::get<0>(res), goldScore);
+        SEQAN_ASSERT(row(std::get<1>(res), 0) == row(goldAlign, 0));
+        SEQAN_ASSERT(row(std::get<1>(res), 1) == row(goldAlign, 1));
+    }
+}
+
+// Helper function to set band parameters.
+template <typename TAlphabet,
+          typename TFunctor,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlignConfig,
+          typename TSimdLength,
+          typename TBandFlag>
+void testAlignSimd(TFunctor const &,
+                   seqan::Score<TScoreValue, TScoreSpec> const & score,
+                   TAlignConfig const & config,
+                   TSimdLength const & /*tag*/,
+                   TBandFlag const &)
+{
+    if (seqan::IsSameType<TBandFlag, seqan::BandOff>::VALUE)
+        testAlignSimd<TAlphabet>(TFunctor(), score, config, TSimdLength());
+    else
+        testAlignSimd<TAlphabet>(TFunctor(), score, config, TSimdLength(), -4, 6);
+}
+
+// ----------------------------------------------------------------------------
+// Function testAlignScoreSimd()
+// ----------------------------------------------------------------------------
+
+template <typename TAlphabet,
+          typename TTester,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlignConfig,
+          typename TSimdLength>
+void testAlignSimdScore(TTester const &,
+                        seqan::Score<TScoreValue, TScoreSpec> const & score,
+                        TAlignConfig const & config,
+                        TSimdLength const & /*tag*/,
+                        int const lDiag = seqan::MinValue<int>::VALUE,
+                        int const uDiag = seqan::MaxValue<int>::VALUE)
+{
+    auto sets = impl::test_align_simd::TestSequences_<TAlphabet, TSimdLength>::getSequences();
+
+    seqan::String<TScoreValue> scores = TTester::run(std::get<0>(sets), std::get<1>(sets), score, config, lDiag, uDiag);
+
+    SEQAN_ASSERT_EQ(length(scores), length(std::get<0>(sets)));
+
+    auto zipRes = makeZipView(scores, std::get<0>(sets), std::get<1>(sets));
+    for(auto res : zipRes)
+    {
+        TScoreValue goldScore = TTester::run(std::get<1>(res), std::get<2>(res), score, config, lDiag, uDiag);
+        SEQAN_ASSERT_EQ(std::get<0>(res), goldScore);
+    }
+}
+
+// Helper function to set band parameters.
+template <typename TAlphabet,
+          typename TFunctor,
+          typename TScoreValue, typename TScoreSpec,
+          typename TAlignConfig,
+          typename TSimdLength,
+          typename TBandFlag>
+void testAlignSimdScore(TFunctor const &,
+                        seqan::Score<TScoreValue, TScoreSpec> const & score,
+                        TAlignConfig const & config,
+                        TSimdLength const & /*tag*/,
+                        TBandFlag const &)
+{
+    if (seqan::IsSameType<TBandFlag, seqan::BandOff>::VALUE)
+        testAlignSimdScore<TAlphabet>(TFunctor(), score, config, TSimdLength());
+    else
+        testAlignSimdScore<TAlphabet>(TFunctor(), score, config, TSimdLength(), -4, 6);
+}
+
+// ----------------------------------------------------------------------------
+// Global Alignments.
+// ----------------------------------------------------------------------------
+
+SEQAN_TYPED_TEST(SimdAlignTestCommon, Linear_Align)
+{
+    using TAlignConf = typename TestFixture::TAlignConfig;
+    using TLengthParam = typename TestFixture::TLengthParam;
+    using TBandSwitch = typename TestFixture::TBandSwitch;
+
+    testAlignSimd<seqan::Dna>(impl::test_align_simd::GlobalAlignTester_(), seqan::Score<int>(2, -1, -1),
+                              TAlignConf(), TLengthParam(), TBandSwitch());
+    testAlignSimd<seqan::AminoAcid>(impl::test_align_simd::GlobalAlignTester_(), seqan::Blosum62(-2),
+                                    TAlignConf(), TLengthParam(), TBandSwitch());
+}
+
+SEQAN_TYPED_TEST(SimdAlignTestCommon, Linear_Score)
+{
+    using TAlignConf = typename TestFixture::TAlignConfig;
+    using TLengthParam = typename TestFixture::TLengthParam;
+    using TBandSwitch = typename TestFixture::TBandSwitch;
+
+    testAlignSimdScore<seqan::Dna>(impl::test_align_simd::GlobalAlignScoreTester_(), seqan::Score<int>(2, -1, -1),
+                                   TAlignConf(), TLengthParam(), TBandSwitch());
+    testAlignSimdScore<seqan::AminoAcid>(impl::test_align_simd::GlobalAlignScoreTester_(), seqan::Blosum62(-2),
+                                         TAlignConf(), TLengthParam(), TBandSwitch());
+}
+
+SEQAN_TYPED_TEST(SimdAlignTestCommon, Affine_Align)
+{
+    using TAlignConf = typename TestFixture::TAlignConfig;
+    using TLengthParam = typename TestFixture::TLengthParam;
+    using TBandSwitch = typename TestFixture::TBandSwitch;
+
+    testAlignSimd<seqan::Dna>(impl::test_align_simd::GlobalAlignTester_(), seqan::Score<int>(2, -1, -1, -3),
+                              TAlignConf(), TLengthParam(), TBandSwitch());
+    testAlignSimd<seqan::AminoAcid>(impl::test_align_simd::GlobalAlignTester_(), seqan::Blosum62(-2, -4),
+                                    TAlignConf(), TLengthParam(), TBandSwitch());
+}
+
+SEQAN_TYPED_TEST(SimdAlignTestCommon, Affine_Score)
+{
+    using TAlignConf = typename TestFixture::TAlignConfig;
+    using TLengthParam = typename TestFixture::TLengthParam;
+    using TBandSwitch = typename TestFixture::TBandSwitch;
+
+    testAlignSimdScore<seqan::Dna>(impl::test_align_simd::GlobalAlignScoreTester_(), seqan::Score<int>(2, -1, -1, -3),
+                                   TAlignConf(), TLengthParam(), TBandSwitch());
+    testAlignSimdScore<seqan::AminoAcid>(impl::test_align_simd::GlobalAlignScoreTester_(), seqan::Blosum62(-2, -4),
+                                         TAlignConf(), TLengthParam(), TBandSwitch());
+}
+
+// ----------------------------------------------------------------------------
+// Local Alignments.
+// ----------------------------------------------------------------------------
+
+SEQAN_TYPED_TEST(SimdAlignLocalTestCommon, Linear_Align)
+{
+    using TAlignConf = typename TestFixture::TAlignConfig;
+    using TLengthParam = typename TestFixture::TLengthParam;
+    using TBandSwitch = typename TestFixture::TBandSwitch;
+
+    testAlignSimd<seqan::Dna>(impl::test_align_simd::LocalAlignTester_(), seqan::Score<int>(2, -1, -1),
+                              TAlignConf(), TLengthParam(), TBandSwitch());
+    testAlignSimd<seqan::AminoAcid>(impl::test_align_simd::LocalAlignTester_(), seqan::Blosum62(-2),
+                                    TAlignConf(), TLengthParam(), TBandSwitch());
+}
+
+SEQAN_TYPED_TEST(SimdAlignLocalTestCommon, Affine_Align)
+{
+    using TAlignConf = typename TestFixture::TAlignConfig;
+    using TLengthParam = typename TestFixture::TLengthParam;
+    using TBandSwitch = typename TestFixture::TBandSwitch;
+
+    testAlignSimd<seqan::Dna>(impl::test_align_simd::LocalAlignTester_(), seqan::Score<int>(2, -1, -1, -3),
+                              TAlignConf(), TLengthParam(), TBandSwitch());
+    testAlignSimd<seqan::AminoAcid>(impl::test_align_simd::LocalAlignTester_(), seqan::Blosum62(-2, -4),
+                                    TAlignConf(), TLengthParam(), TBandSwitch());
+}
+
+#endif  // #ifndef TESTS_ALIGN_TEST_ALIGN_SIMD_H_
diff --git a/tests/align/test_alignment_algorithms_global.h b/tests/align/test_alignment_algorithms_global.h
index 52f48d0..723ef42 100644
--- a/tests/align/test_alignment_algorithms_global.h
+++ b/tests/align/test_alignment_algorithms_global.h
@@ -1621,7 +1621,6 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_score_overlap_affine)
         TStringSet strings;
         appendValue(strings, strH);
         appendValue(strings, strV);
-
         Score<int, Simple> scoringScheme(2, -1, -1, -3);
         int score1 = globalAlignmentScore(strings, scoringScheme, alignConfig, Gotoh());
         int score2 = globalAlignmentScore(strH, strV, scoringScheme, alignConfig, Gotoh());
@@ -1963,7 +1962,6 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_score_semi_global_linear)
         appendValue(strings, strV);
 
         Score<int, Simple> scoringScheme(2, -1, -1);
-
         int score1 = globalAlignmentScore(strings, scoringScheme, alignConfig, NeedlemanWunsch());
         int score2 = globalAlignmentScore(strH, strV, scoringScheme, alignConfig, NeedlemanWunsch());
 
diff --git a/tests/align/test_alignment_algorithms_global_banded.h b/tests/align/test_alignment_algorithms_global_banded.h
index 2f9f275..c5f4fe7 100644
--- a/tests/align/test_alignment_algorithms_global_banded.h
+++ b/tests/align/test_alignment_algorithms_global_banded.h
@@ -461,22 +461,22 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_gaps_global_affine_banded)
 
     // Simple alignment without any leading or trailing gaps.
     {
-    DnaString strH = "ATGT";
-    Dna5String strV = "ATAGAT";
+        DnaString strH = "ATGT";
+        Dna5String strV = "ATAGAT";
 
-    Gaps<DnaString> gapsH(strH);
-    Gaps<Dna5String> gapsV(strV);
+        Gaps<DnaString> gapsH(strH);
+        Gaps<Dna5String> gapsV(strV);
 
-    int score = globalAlignment(gapsH, gapsV, scoringScheme, alignConfig, -3, 2, Gotoh());
+        int score = globalAlignment(gapsH, gapsV, scoringScheme, alignConfig, -3, 2, Gotoh());
 
-    SEQAN_ASSERT_EQ(score, 2);
+        SEQAN_ASSERT_EQ(score, 2);
 
-    std::stringstream ssH, ssV;
-    ssH << gapsH;
-    ssV << gapsV;
+        std::stringstream ssH, ssV;
+        ssH << gapsH;
+        ssV << gapsV;
 
-    SEQAN_ASSERT_EQ(ssH.str(), "AT-G-T");
-    SEQAN_ASSERT_EQ(ssV.str(), "ATAGAT");
+        SEQAN_ASSERT_EQ(ssH.str(), "AT-G-T");
+        SEQAN_ASSERT_EQ(ssV.str(), "ATAGAT");
     }
 
     // Alignment with both leading and trailing gaps in one row.
@@ -1494,7 +1494,6 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_gaps_semi_global_linear_banded)
     }
 }
 
-
 SEQAN_DEFINE_TEST(test_alignment_algorithms_graph_semi_global_linear_banded)
 {
     using namespace seqan;
@@ -1600,8 +1599,6 @@ SEQAN_DEFINE_TEST(test_alignment_algorithms_align_semi_global_affine_banded)
     }
 }
 
-
-
 SEQAN_DEFINE_TEST(test_alignment_algorithms_gaps_semi_global_affine_banded)
 {
     using namespace seqan;
diff --git a/tests/align/test_alignment_dp_adapt_tracesegments.h b/tests/align/test_alignment_dp_adapt_tracesegments.h
index 22b31e4..b883c85 100644
--- a/tests/align/test_alignment_dp_adapt_tracesegments.h
+++ b/tests/align/test_alignment_dp_adapt_tracesegments.h
@@ -50,7 +50,7 @@ testAlign2TracebackTraceSegmentsConstructor()
         SEQAN_ASSERT_EQ(traceSegment._horizontalBeginPos, (TPosition) 0);
         SEQAN_ASSERT_EQ(traceSegment._verticalBeginPos, (TPosition) 0);
         SEQAN_ASSERT_EQ(traceSegment._length, (TSize) 0);
-        SEQAN_ASSERT_EQ(traceSegment._traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceSegment._traceValue, +TraceBitMap_<>::NONE);
     }
 
     { // test copy ctor
@@ -58,30 +58,30 @@ testAlign2TracebackTraceSegmentsConstructor()
         traceSegment._horizontalBeginPos = 10;
         traceSegment._verticalBeginPos = 3;
         traceSegment._length = 5;
-        traceSegment._traceValue = +TraceBitMap_::DIAGONAL;
+        traceSegment._traceValue = +TraceBitMap_<>::DIAGONAL;
 
         TTraceSegment traceSegment2(traceSegment);
 
         SEQAN_ASSERT_EQ(traceSegment2._horizontalBeginPos, (TPosition) 10);
         SEQAN_ASSERT_EQ(traceSegment2._verticalBeginPos, (TPosition) 3);
         SEQAN_ASSERT_EQ(traceSegment2._length, (TSize) 5);
-        SEQAN_ASSERT_EQ(traceSegment2._traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceSegment2._traceValue, +TraceBitMap_<>::DIAGONAL);
 
         TTraceSegment traceSegment3 = traceSegment;
 
         SEQAN_ASSERT_EQ(traceSegment3._horizontalBeginPos, (TPosition) 10);
         SEQAN_ASSERT_EQ(traceSegment3._verticalBeginPos, (TPosition) 3);
         SEQAN_ASSERT_EQ(traceSegment3._length, (TSize) 5);
-        SEQAN_ASSERT_EQ(traceSegment3._traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceSegment3._traceValue, +TraceBitMap_<>::DIAGONAL);
     }
 
     { // test additional ctor
-        TTraceSegment traceSegment(12, 13, 8, +TraceBitMap_::VERTICAL);
+        TTraceSegment traceSegment(12, 13, 8, +TraceBitMap_<>::VERTICAL);
 
         SEQAN_ASSERT_EQ(traceSegment._horizontalBeginPos, (TPosition) 12);
         SEQAN_ASSERT_EQ(traceSegment._verticalBeginPos, (TPosition) 13);
         SEQAN_ASSERT_EQ(traceSegment._length, (TSize) 8);
-        SEQAN_ASSERT_EQ(traceSegment._traceValue, +TraceBitMap_::VERTICAL);
+        SEQAN_ASSERT_EQ(traceSegment._traceValue, +TraceBitMap_<>::VERTICAL);
     }
 }
 
@@ -98,21 +98,21 @@ testAlign2TracebackTraceSegmentsAssignment()
         traceSegment._horizontalBeginPos = 10;
         traceSegment._verticalBeginPos = 3;
         traceSegment._length = 5;
-        traceSegment._traceValue = +TraceBitMap_::DIAGONAL;
+        traceSegment._traceValue = +TraceBitMap_<>::DIAGONAL;
 
         TTraceSegment traceSegment2;
 
         SEQAN_ASSERT_EQ(traceSegment2._horizontalBeginPos, (TPosition) 0);
         SEQAN_ASSERT_EQ(traceSegment2._verticalBeginPos, (TPosition) 0);
         SEQAN_ASSERT_EQ(traceSegment2._length, (TSize) 0);
-        SEQAN_ASSERT_EQ(traceSegment2._traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceSegment2._traceValue, +TraceBitMap_<>::NONE);
 
         traceSegment2 = traceSegment;
 
         SEQAN_ASSERT_EQ(traceSegment2._horizontalBeginPos, (TPosition) 10);
         SEQAN_ASSERT_EQ(traceSegment2._verticalBeginPos, (TPosition) 3);
         SEQAN_ASSERT_EQ(traceSegment2._length, (TSize) 5);
-        SEQAN_ASSERT_EQ(traceSegment2._traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceSegment2._traceValue, +TraceBitMap_<>::DIAGONAL);
     }
 }
 
@@ -127,12 +127,12 @@ testAlign2TracebackTraceSegmentsCompare()
     traceSegment._horizontalBeginPos = 10;
     traceSegment._verticalBeginPos = 3;
     traceSegment._length = 5;
-    traceSegment._traceValue = +TraceBitMap_::DIAGONAL;
+    traceSegment._traceValue = +TraceBitMap_<>::DIAGONAL;
 
     TTraceSegment traceSegment2(traceSegment);
 
     SEQAN_ASSERT(traceSegment2 == traceSegment);
-    traceSegment._traceValue = +TraceBitMap_::HORIZONTAL;
+    traceSegment._traceValue = +TraceBitMap_<>::HORIZONTAL;
     SEQAN_ASSERT(traceSegment2 !=  traceSegment);
 }
 
@@ -163,34 +163,34 @@ template <typename TTarget>
 void testAlign2TracebackRecordTrace(TTarget & target)
 {
     using namespace seqan;
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
 
-    TTraceValue tv1 = TraceBitMap_::DIAGONAL | TraceBitMap_::HORIZONTAL | TraceBitMap_::VERTICAL;
-    TTraceValue tv2 = TraceBitMap_::HORIZONTAL | TraceBitMap_::VERTICAL;
-    TTraceValue tv3 = TraceBitMap_::HORIZONTAL;
+    TTraceValue tv1 = TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::VERTICAL;
+    TTraceValue tv2 = TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::VERTICAL;
+    TTraceValue tv3 = TraceBitMap_<>::HORIZONTAL;
     _recordSegment(target, 0, 0, 3, tv1);
     _recordSegment(target, 0, 3, 5, tv2);
     _recordSegment(target, 5, 8, 3, tv3);
-    _recordSegment(target, 8, 8, 0, +TraceBitMap_::DIAGONAL);
+    _recordSegment(target, 8, 8, 0, +TraceBitMap_<>::DIAGONAL);
 
 
 
     SEQAN_ASSERT_EQ(target[0]._horizontalBeginPos, 0);
     SEQAN_ASSERT_EQ(target[0]._verticalBeginPos, 0);
     SEQAN_ASSERT_EQ(target[0]._length, 3);
-    SEQAN_ASSERT_EQ(target[0]._traceValue, +TraceBitMap_::DIAGONAL);
+    SEQAN_ASSERT_EQ(target[0]._traceValue, +TraceBitMap_<>::DIAGONAL);
     SEQAN_ASSERT_EQ(target[1]._horizontalBeginPos, 0);
     SEQAN_ASSERT_EQ(target[1]._verticalBeginPos, 3);
     SEQAN_ASSERT_EQ(target[1]._length, 5);
-    SEQAN_ASSERT_EQ(target[1]._traceValue, +TraceBitMap_::VERTICAL);
+    SEQAN_ASSERT_EQ(target[1]._traceValue, +TraceBitMap_<>::VERTICAL);
     SEQAN_ASSERT_EQ(target[2]._horizontalBeginPos, 5);
     SEQAN_ASSERT_EQ(target[2]._verticalBeginPos, 8);
     SEQAN_ASSERT_EQ(target[2]._length, 3);
-    SEQAN_ASSERT_EQ(target[2]._traceValue, +TraceBitMap_::HORIZONTAL);
+    SEQAN_ASSERT_EQ(target[2]._traceValue, +TraceBitMap_<>::HORIZONTAL);
 
     SEQAN_ASSERT_EQ(length(target), 3u);
 
-//    _recordSegment(target, 8, 8, 10, +TraceBitMap_::NONE); // note this should fail when uncommented
+//    _recordSegment(target, 8, 8, 10, +TraceBitMap_<>::NONE); // note this should fail when uncommented
 }
 
 void testAlign2TraceAdaptorAdaptFile()
@@ -200,12 +200,12 @@ void testAlign2TraceAdaptorAdaptFile()
     typedef TraceSegment_<size_t, size_t> TTraceSegment;
     String<TTraceSegment> traceSegments;
 
-    appendValue(traceSegments, TTraceSegment(12, 8, 4, +TraceBitMap_::VERTICAL));
-    appendValue(traceSegments, TTraceSegment(8, 4, 4, +TraceBitMap_::DIAGONAL));
-    appendValue(traceSegments, TTraceSegment(8, 3, 1, +TraceBitMap_::VERTICAL));
-    appendValue(traceSegments, TTraceSegment(4, 3, 4, +TraceBitMap_::HORIZONTAL));
-    appendValue(traceSegments, TTraceSegment(1, 0, 3, +TraceBitMap_::DIAGONAL));
-    appendValue(traceSegments, TTraceSegment(0, 0, 1, +TraceBitMap_::HORIZONTAL));
+    appendValue(traceSegments, TTraceSegment(12, 8, 4, +TraceBitMap_<>::VERTICAL));
+    appendValue(traceSegments, TTraceSegment(8, 4, 4, +TraceBitMap_<>::DIAGONAL));
+    appendValue(traceSegments, TTraceSegment(8, 3, 1, +TraceBitMap_<>::VERTICAL));
+    appendValue(traceSegments, TTraceSegment(4, 3, 4, +TraceBitMap_<>::HORIZONTAL));
+    appendValue(traceSegments, TTraceSegment(1, 0, 3, +TraceBitMap_<>::DIAGONAL));
+    appendValue(traceSegments, TTraceSegment(0, 0, 1, +TraceBitMap_<>::HORIZONTAL));
 
     String<char> seq0 = "AAAACCCCGGGG";
     String<char> seq1 = "AAAACCCCGGGG";
@@ -272,12 +272,12 @@ void testAlign2TraceAdaptorAdaptAlign()
     typedef TraceSegment_<size_t, size_t> TTraceSegment;
     String<TTraceSegment> traceSegments;
 
-    appendValue(traceSegments, TTraceSegment(12, 8, 4, +TraceBitMap_::VERTICAL));
-    appendValue(traceSegments, TTraceSegment(8, 4, 4, +TraceBitMap_::DIAGONAL));
-    appendValue(traceSegments, TTraceSegment(8, 3, 1, +TraceBitMap_::VERTICAL));
-    appendValue(traceSegments, TTraceSegment(4, 3, 4, +TraceBitMap_::HORIZONTAL));
-    appendValue(traceSegments, TTraceSegment(1, 0, 3, +TraceBitMap_::DIAGONAL));
-    appendValue(traceSegments, TTraceSegment(0, 0, 1, +TraceBitMap_::HORIZONTAL));
+    appendValue(traceSegments, TTraceSegment(12, 8, 4, +TraceBitMap_<>::VERTICAL));
+    appendValue(traceSegments, TTraceSegment(8, 4, 4, +TraceBitMap_<>::DIAGONAL));
+    appendValue(traceSegments, TTraceSegment(8, 3, 1, +TraceBitMap_<>::VERTICAL));
+    appendValue(traceSegments, TTraceSegment(4, 3, 4, +TraceBitMap_<>::HORIZONTAL));
+    appendValue(traceSegments, TTraceSegment(1, 0, 3, +TraceBitMap_<>::DIAGONAL));
+    appendValue(traceSegments, TTraceSegment(0, 0, 1, +TraceBitMap_<>::HORIZONTAL));
 
     String<char> seq0 = "AAAACCCCGGGG";
     String<char> seq1 = "AAAACCCCGGGG";
@@ -316,12 +316,12 @@ void testAlign2TraceAdaptorAdaptFragments()
 
     String<TTraceSegment> traceSegments;
 
-    appendValue(traceSegments, TTraceSegment(12, 8, 4, +TraceBitMap_::VERTICAL));
-    appendValue(traceSegments, TTraceSegment(8, 4, 4, +TraceBitMap_::DIAGONAL));
-    appendValue(traceSegments, TTraceSegment(8, 3, 1, +TraceBitMap_::VERTICAL));
-    appendValue(traceSegments, TTraceSegment(4, 3, 4, +TraceBitMap_::HORIZONTAL));
-    appendValue(traceSegments, TTraceSegment(1, 0, 3, +TraceBitMap_::DIAGONAL));
-    appendValue(traceSegments, TTraceSegment(0, 0, 1, +TraceBitMap_::HORIZONTAL));
+    appendValue(traceSegments, TTraceSegment(12, 8, 4, +TraceBitMap_<>::VERTICAL));
+    appendValue(traceSegments, TTraceSegment(8, 4, 4, +TraceBitMap_<>::DIAGONAL));
+    appendValue(traceSegments, TTraceSegment(8, 3, 1, +TraceBitMap_<>::VERTICAL));
+    appendValue(traceSegments, TTraceSegment(4, 3, 4, +TraceBitMap_<>::HORIZONTAL));
+    appendValue(traceSegments, TTraceSegment(1, 0, 3, +TraceBitMap_<>::DIAGONAL));
+    appendValue(traceSegments, TTraceSegment(0, 0, 1, +TraceBitMap_<>::HORIZONTAL));
 
     _adaptTraceSegmentsTo(fragmentString, 0, 1, traceSegments);
 
@@ -344,12 +344,12 @@ void testAlign2TraceAdaptorAdaptAlignmentGraph()
 
     String<TTraceSegment> traceSegments;
 
-    appendValue(traceSegments, TTraceSegment(12, 8, 4, +TraceBitMap_::VERTICAL));
-    appendValue(traceSegments, TTraceSegment(8, 4, 4, +TraceBitMap_::DIAGONAL));
-    appendValue(traceSegments, TTraceSegment(8, 3, 1, +TraceBitMap_::VERTICAL));
-    appendValue(traceSegments, TTraceSegment(4, 3, 4, +TraceBitMap_::HORIZONTAL));
-    appendValue(traceSegments, TTraceSegment(1, 0, 3, +TraceBitMap_::DIAGONAL));
-    appendValue(traceSegments, TTraceSegment(0, 0, 1, +TraceBitMap_::HORIZONTAL));
+    appendValue(traceSegments, TTraceSegment(12, 8, 4, +TraceBitMap_<>::VERTICAL));
+    appendValue(traceSegments, TTraceSegment(8, 4, 4, +TraceBitMap_<>::DIAGONAL));
+    appendValue(traceSegments, TTraceSegment(8, 3, 1, +TraceBitMap_<>::VERTICAL));
+    appendValue(traceSegments, TTraceSegment(4, 3, 4, +TraceBitMap_<>::HORIZONTAL));
+    appendValue(traceSegments, TTraceSegment(1, 0, 3, +TraceBitMap_<>::DIAGONAL));
+    appendValue(traceSegments, TTraceSegment(0, 0, 1, +TraceBitMap_<>::HORIZONTAL));
 
     _adaptTraceSegmentsTo(alignGraph, 0, 1, traceSegments);
 
diff --git a/tests/align/test_alignment_dp_formula.h b/tests/align/test_alignment_dp_formula.h
index 859a865..d4cae4c 100644
--- a/tests/align/test_alignment_dp_formula.h
+++ b/tests/align/test_alignment_dp_formula.h
@@ -46,7 +46,7 @@ void testDPFormulaNoTraceLocalLinearDiagonalDirection(TBand const &)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOff> TDPProfile;
 
     DPCell_<int, LinearGaps> activeCell;
@@ -62,7 +62,7 @@ void testDPFormulaNoTraceLocalLinearDiagonalDirection(TBand const &)
     TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                            scoringScheme, RecursionDirectionDiagonal(), TDPProfile());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
     SEQAN_ASSERT_EQ(activeCell._score, 4);
     SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
     SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -71,7 +71,7 @@ void testDPFormulaNoTraceLocalLinearDiagonalDirection(TBand const &)
     traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                scoringScheme, RecursionDirectionDiagonal(), TDPProfile());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
     SEQAN_ASSERT_EQ(activeCell._score, 0);
     SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
     SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -83,7 +83,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_diagonal_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<GlobalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<GlobalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -101,7 +101,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_diagonal_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -110,7 +110,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_diagonal_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -121,7 +121,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_diagonal_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                    scoringScheme, RecursionDirectionDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(activeCell._score, -12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -130,7 +130,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_diagonal_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                    scoringScheme, RecursionDirectionDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(activeCell._score, -12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -142,7 +142,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_horizontal_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<GlobalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<GlobalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -159,7 +159,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_horizontal_direction)
     TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                            scoringScheme, RecursionDirectionHorizontal(), TDPProfileSingleTrace());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
     SEQAN_ASSERT_EQ(activeCell._score, 6);
     SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
     SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -168,7 +168,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_horizontal_direction)
     traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                            scoringScheme, RecursionDirectionHorizontal(), TDPProfileCompleteTrace());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
     SEQAN_ASSERT_EQ(activeCell._score, 6);
     SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
     SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -179,7 +179,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_vertical_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<GlobalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<GlobalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -196,13 +196,13 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_vertical_direction)
     TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                            scoringScheme, RecursionDirectionVertical(), TDPProfileSingleTrace());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
     SEQAN_ASSERT_EQ(activeCell._score, 6);
 
     traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                            scoringScheme, RecursionDirectionVertical(), TDPProfileCompleteTrace());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
     SEQAN_ASSERT_EQ(activeCell._score, 6);
 }
 
@@ -210,7 +210,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_upper_band_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<GlobalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<GlobalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -228,7 +228,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_upper_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -237,7 +237,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_upper_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -249,7 +249,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_upper_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, -10);
@@ -258,7 +258,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_upper_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, -10);
@@ -270,7 +270,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_upper_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL));
         SEQAN_ASSERT_EQ(activeCell._score, -8);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, -4);
@@ -279,7 +279,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_upper_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, -8);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, -4);
@@ -291,7 +291,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_lower_band_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<GlobalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<GlobalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -309,7 +309,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_lower_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -318,7 +318,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_lower_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -330,7 +330,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_lower_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -339,7 +339,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_lower_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -351,7 +351,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_lower_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL));
         SEQAN_ASSERT_EQ(activeCell._score, -12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -360,7 +360,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_lower_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, -12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -372,7 +372,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_all_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<GlobalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<GlobalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -390,7 +390,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -399,8 +399,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | +TraceBitMap_::HORIZONTAL |
-                        TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | +TraceBitMap_<>::HORIZONTAL |
+                        TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -412,7 +412,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 0);
@@ -421,7 +421,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 0);
@@ -433,7 +433,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, -4);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 0);
@@ -442,7 +442,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, -4);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 0);
@@ -454,7 +454,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL));
         SEQAN_ASSERT_EQ(activeCell._score, -8);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, -4);
@@ -463,7 +463,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, -8);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, -4);
@@ -475,7 +475,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, -12);
@@ -484,7 +484,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, -12);
@@ -496,7 +496,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL));
         SEQAN_ASSERT_EQ(activeCell._score, -12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, -12);
@@ -505,7 +505,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, -12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, -12);
@@ -517,7 +517,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL));
         SEQAN_ASSERT_EQ(activeCell._score, -12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, -8);
@@ -526,8 +526,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_linear_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL | +TraceBitMap_::HORIZONTAL |
-                                     TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | +TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL | +TraceBitMap_<>::HORIZONTAL |
+                                     TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | +TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, -12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, -8);
@@ -539,7 +539,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_diagonal_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<GlobalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<GlobalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -563,7 +563,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_diagonal_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -572,7 +572,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_diagonal_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -583,7 +583,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_diagonal_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(activeCell._score, -12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -592,7 +592,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_diagonal_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(activeCell._score, -12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -604,7 +604,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_horizontal_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<GlobalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<GlobalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -628,7 +628,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_horizontal_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionHorizontal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL_OPEN | +TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL_OPEN | +TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -637,7 +637,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_horizontal_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionHorizontal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL_OPEN | +TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL_OPEN | +TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -649,7 +649,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_horizontal_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionHorizontal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -658,7 +658,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_horizontal_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionHorizontal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -670,7 +670,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_vertical_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<GlobalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<GlobalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -694,7 +694,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_vertical_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionVertical(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL_OPEN | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL_OPEN | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -703,7 +703,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_vertical_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionVertical(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL_OPEN | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL_OPEN | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -715,7 +715,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_vertical_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionVertical(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -724,7 +724,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_vertical_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionVertical(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -736,7 +736,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_upper_band_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<GlobalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<GlobalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -760,7 +760,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_upper_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL_OPEN | +TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL_OPEN | +TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -769,7 +769,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_upper_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL_OPEN | +TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL_OPEN | +TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -781,7 +781,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_upper_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL | TraceBitMap_::HORIZONTAL_OPEN);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::HORIZONTAL_OPEN);
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -790,7 +790,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_upper_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL | +TraceBitMap_::HORIZONTAL_OPEN);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::HORIZONTAL_OPEN);
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -802,7 +802,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_upper_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -811,7 +811,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_upper_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -823,7 +823,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_upper_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::HORIZONTAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::HORIZONTAL));
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -832,8 +832,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_upper_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::HORIZONTAL |
-                                     TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::HORIZONTAL |
+                                     TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -845,7 +845,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_upper_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::HORIZONTAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::HORIZONTAL));
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 18);
@@ -854,8 +854,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_upper_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX |
-                                     +TraceBitMap_::HORIZONTAL | TraceBitMap_::HORIZONTAL_OPEN));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX |
+                                     +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::HORIZONTAL_OPEN));
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 18);
@@ -867,7 +867,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_upper_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::HORIZONTAL_OPEN));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::HORIZONTAL_OPEN));
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 18);
@@ -876,8 +876,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_upper_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::HORIZONTAL_OPEN |
-                                     +TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::HORIZONTAL_OPEN |
+                                     +TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 18);
@@ -889,7 +889,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_lower_band_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<GlobalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<GlobalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -913,7 +913,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_lower_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL_OPEN | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL_OPEN | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -922,7 +922,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_lower_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL_OPEN | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL_OPEN | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -934,7 +934,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_lower_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL_OPEN);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL_OPEN);
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -943,7 +943,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_lower_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL_OPEN);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL_OPEN);
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -955,7 +955,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_lower_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -964,7 +964,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_lower_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -976,7 +976,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_lower_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL));
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -985,7 +985,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_lower_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -997,7 +997,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_lower_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL));
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -1006,8 +1006,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_lower_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX |
-                                     +TraceBitMap_::VERTICAL | TraceBitMap_::VERTICAL_OPEN));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX |
+                                     +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::VERTICAL_OPEN));
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -1019,7 +1019,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_lower_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL_OPEN));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL_OPEN));
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -1028,8 +1028,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_lower_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL_OPEN |
-                                     +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL_OPEN |
+                                     +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -1041,7 +1041,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     // We need to distinguish between all traces and single trace.
     typedef DPProfile_<GlobalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<GlobalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
@@ -1066,7 +1066,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | +TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::HORIZONTAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | +TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::HORIZONTAL);
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, -10);
@@ -1075,7 +1075,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | +TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::HORIZONTAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | +TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::HORIZONTAL);
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(prevDiagonal._score, -10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, -10);
@@ -1087,7 +1087,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::HORIZONTAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::HORIZONTAL);
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, -10);
@@ -1096,7 +1096,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::HORIZONTAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::HORIZONTAL);
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 10);
         SEQAN_ASSERT_EQ(prevHorizontal._score, -10);
@@ -1108,7 +1108,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL);
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, -14);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 12);
@@ -1119,7 +1119,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL);
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, -14);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 12);
@@ -1133,7 +1133,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL | TraceBitMap_::HORIZONTAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::HORIZONTAL));
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, -14);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 12);
@@ -1144,8 +1144,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL |
-                                     TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL |
+                                     TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL));
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, -14);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 12);
@@ -1159,7 +1159,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL | TraceBitMap_::HORIZONTAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::HORIZONTAL));
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, -14);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 12);
@@ -1170,8 +1170,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL | TraceBitMap_::VERTICAL_OPEN |
-                                     TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::VERTICAL_OPEN |
+                                     TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, -14);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 12);
@@ -1185,8 +1185,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL_OPEN |
-                                     TraceBitMap_::HORIZONTAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL_OPEN |
+                                     TraceBitMap_<>::HORIZONTAL));
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, -14);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 12);
@@ -1197,8 +1197,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL_OPEN |
-                                     TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL_OPEN |
+                                     TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 12);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, -14);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 12);
@@ -1212,8 +1212,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::HORIZONTAL | +TraceBitMap_::VERTICAL_OPEN |
-                                     TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::HORIZONTAL | +TraceBitMap_<>::VERTICAL_OPEN |
+                                     TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 16);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 16);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 12);
@@ -1224,8 +1224,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::HORIZONTAL | +TraceBitMap_::VERTICAL_OPEN |
-                                     TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::HORIZONTAL | +TraceBitMap_<>::VERTICAL_OPEN |
+                                     TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 16);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 16);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 12);
@@ -1239,8 +1239,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX | +TraceBitMap_::HORIZONTAL |
-                                     +TraceBitMap_::VERTICAL_OPEN));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX | +TraceBitMap_<>::HORIZONTAL |
+                                     +TraceBitMap_<>::VERTICAL_OPEN));
         SEQAN_ASSERT_EQ(activeCell._score, 16);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 16);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 12);
@@ -1251,8 +1251,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX | +TraceBitMap_::HORIZONTAL |
-                                     +TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::HORIZONTAL_OPEN));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX | +TraceBitMap_<>::HORIZONTAL |
+                                     +TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::HORIZONTAL_OPEN));
         SEQAN_ASSERT_EQ(activeCell._score, 16);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 16);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 12);
@@ -1266,8 +1266,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX |
-                                     TraceBitMap_::VERTICAL_OPEN));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX |
+                                     TraceBitMap_<>::VERTICAL_OPEN));
         SEQAN_ASSERT_EQ(activeCell._score, 16);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 16);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 16);
@@ -1278,8 +1278,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX |
-                                     TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX |
+                                     TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 16);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 16);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 16);
@@ -1293,8 +1293,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::HORIZONTAL | +TraceBitMap_::VERTICAL |
-                                     +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::HORIZONTAL | +TraceBitMap_<>::VERTICAL |
+                                     +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 16);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 16);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 16);
@@ -1305,9 +1305,9 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::HORIZONTAL | +TraceBitMap_::VERTICAL |
-                                     +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL_OPEN |
-                                     TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::HORIZONTAL | +TraceBitMap_<>::VERTICAL |
+                                     +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL_OPEN |
+                                     TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 16);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 16);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 16);
@@ -1321,7 +1321,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::HORIZONTAL | +TraceBitMap_::VERTICAL | TraceBitMap_::DIAGONAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::HORIZONTAL | +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::DIAGONAL));
         SEQAN_ASSERT_EQ(activeCell._score, 16);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 16);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 16);
@@ -1332,10 +1332,10 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_affine_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::HORIZONTAL | +TraceBitMap_::VERTICAL |
-                                     TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::VERTICAL_OPEN |
-                                     TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX |
-                                     TraceBitMap_::DIAGONAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::HORIZONTAL | +TraceBitMap_<>::VERTICAL |
+                                     TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::VERTICAL_OPEN |
+                                     TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX |
+                                     TraceBitMap_<>::DIAGONAL));
         SEQAN_ASSERT_EQ(activeCell._score, 16);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 16);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 16);
@@ -1349,7 +1349,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_diagonal_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<GlobalAlignment_<>, DynamicGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<GlobalAlignment_<>, DynamicGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -1367,7 +1367,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_diagonal_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(_scoreOfCell(activeCell), -8);
         SEQAN_ASSERT_EQ(_scoreOfCell(prevDiagonal), -10);
         SEQAN_ASSERT_EQ(_scoreOfCell(prevHorizontal), 10);
@@ -1376,7 +1376,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_diagonal_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(_scoreOfCell(activeCell), -8);
         SEQAN_ASSERT_EQ(_scoreOfCell(prevDiagonal), -10);
         SEQAN_ASSERT_EQ(_scoreOfCell(prevHorizontal), 10);
@@ -1387,7 +1387,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_diagonal_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                    scoringScheme, RecursionDirectionDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(_scoreOfCell(activeCell), -12);
         SEQAN_ASSERT_EQ(_scoreOfCell(prevDiagonal), -10);
         SEQAN_ASSERT_EQ(_scoreOfCell(prevHorizontal), 10);
@@ -1396,7 +1396,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_diagonal_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                    scoringScheme, RecursionDirectionDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(_scoreOfCell(activeCell), -12);
         SEQAN_ASSERT_EQ(_scoreOfCell(prevDiagonal), -10);
         SEQAN_ASSERT_EQ(_scoreOfCell(prevHorizontal), 10);
@@ -1408,7 +1408,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_horizontal_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<GlobalAlignment_<>, DynamicGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<GlobalAlignment_<>, DynamicGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
     typedef DPCell_<int, DynamicGaps> TDPCell;
@@ -1426,7 +1426,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_horizontal_direction)
     TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                            scoringScheme, RecursionDirectionHorizontal(), TDPProfileSingleTrace());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
     SEQAN_ASSERT_EQ(_scoreOfCell(activeCell), 6);
     SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), true);
     SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), false);
@@ -1434,7 +1434,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_horizontal_direction)
     traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                            scoringScheme, RecursionDirectionHorizontal(), TDPProfileCompleteTrace());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
     SEQAN_ASSERT_EQ(_scoreOfCell(activeCell), 6);
     SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), true);
     SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), false);
@@ -1443,7 +1443,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_horizontal_direction)
     traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                            scoringScheme, RecursionDirectionHorizontal(), TDPProfileCompleteTrace());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
     SEQAN_ASSERT_EQ(_scoreOfCell(activeCell), 8);
     SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), true);
     SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), false);
@@ -1453,7 +1453,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_vertical_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<GlobalAlignment_<>, DynamicGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<GlobalAlignment_<>, DynamicGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
     typedef DPCell_<int, DynamicGaps> TCell;
@@ -1471,20 +1471,20 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_vertical_direction)
     TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                            scoringScheme, RecursionDirectionVertical(), TDPProfileSingleTrace());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
     SEQAN_ASSERT_EQ(activeCell._score, 6);
 
     traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                            scoringScheme, RecursionDirectionVertical(), TDPProfileCompleteTrace());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
     SEQAN_ASSERT_EQ(activeCell._score, 6);
 
     _setBit(prevVertical, True(), DynamicGapExtensionVertical());
     traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                            scoringScheme, RecursionDirectionVertical(), TDPProfileCompleteTrace());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
     SEQAN_ASSERT_EQ(activeCell._score, 8);
 }
 
@@ -1492,7 +1492,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_upper_band_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<GlobalAlignment_<>, DynamicGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<GlobalAlignment_<>, DynamicGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
     typedef DPCell_<int, DynamicGaps> TDPCell;
@@ -1511,20 +1511,20 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_upper_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
 
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
 
         _setBit(prevHorizontal, True(), DynamicGapExtensionHorizontal());
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 8);
     }
 
@@ -1533,13 +1533,13 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_upper_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL | TraceBitMap_::HORIZONTAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::HORIZONTAL);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
 
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL | TraceBitMap_::HORIZONTAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::HORIZONTAL);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
     }
 
@@ -1549,19 +1549,19 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_upper_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL | TraceBitMap_::HORIZONTAL_OPEN);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::HORIZONTAL_OPEN);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
 
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
 
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, -8);
 
         prevHorizontal._score = -6;
@@ -1569,19 +1569,19 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_upper_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                        scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL | TraceBitMap_::HORIZONTAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::HORIZONTAL);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
 
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
 
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, -8);
     }
 }
@@ -1590,7 +1590,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_lower_band_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<GlobalAlignment_<>, DynamicGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<GlobalAlignment_<>, DynamicGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
     typedef DPCell_<int, DynamicGaps> TDPCell;
@@ -1609,20 +1609,20 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_lower_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
 
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
 
         _setBit(prevVertical, True(), DynamicGapExtensionVertical());
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 8);
     }
 
@@ -1631,13 +1631,13 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_lower_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL | TraceBitMap_::VERTICAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::VERTICAL);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
 
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL | TraceBitMap_::VERTICAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::VERTICAL);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
     }
 
@@ -1647,19 +1647,19 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_lower_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL | TraceBitMap_::VERTICAL_OPEN);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::VERTICAL_OPEN);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
 
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
 
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, -8);
 
         prevVertical._score = -6;
@@ -1667,19 +1667,19 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_lower_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                        scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL | TraceBitMap_::VERTICAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::VERTICAL);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
 
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
 
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, -8);
     }
 }
@@ -1688,7 +1688,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<GlobalAlignment_<>, DynamicGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<GlobalAlignment_<>, DynamicGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
     typedef DPCell_<int, DynamicGaps> TDPCell;
@@ -1708,14 +1708,14 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL | TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::HORIZONTAL_OPEN);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::HORIZONTAL_OPEN);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
 
         // Complete trace.
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL | TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::HORIZONTAL_OPEN);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::HORIZONTAL_OPEN);
         SEQAN_ASSERT_EQ(activeCell._score, -8);
     }
 
@@ -1725,14 +1725,14 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX | TraceBitMap_::VERTICAL_OPEN);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX | TraceBitMap_<>::VERTICAL_OPEN);
         SEQAN_ASSERT_EQ(activeCell._score, -4);
 
         // Complete Trace + horizontal open.
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX | TraceBitMap_::VERTICAL_OPEN);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX | TraceBitMap_<>::VERTICAL_OPEN);
         SEQAN_ASSERT_EQ(activeCell._score, -4);
 
         // Single Trace + horizontal extend.
@@ -1740,14 +1740,14 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX | TraceBitMap_::VERTICAL_OPEN);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX | TraceBitMap_<>::VERTICAL_OPEN);
         SEQAN_ASSERT_EQ(activeCell._score, -2);
 
         // Complete Trace + horizontal extend.
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX | TraceBitMap_::VERTICAL_OPEN);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX | TraceBitMap_<>::VERTICAL_OPEN);
         SEQAN_ASSERT_EQ(activeCell._score, -2);
     }
 
@@ -1757,14 +1757,14 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
 
         // Complete Trace + horizontal open.
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
 
         // Single Trace + horizontal extend.
@@ -1772,14 +1772,14 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL);
         SEQAN_ASSERT_EQ(activeCell._score, 2);
 
         // Complete Trace + horizontal extend.
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL);
         SEQAN_ASSERT_EQ(activeCell._score, 2);
     }
 
@@ -1790,7 +1790,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::HORIZONTAL | TraceBitMap_::VERTICAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::VERTICAL));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), false);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), false);
@@ -1799,7 +1799,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX | TraceBitMap_::VERTICAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX | TraceBitMap_<>::VERTICAL));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), true);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), false);
@@ -1810,7 +1810,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::VERTICAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::VERTICAL));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), false);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), false);
@@ -1819,7 +1819,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX | TraceBitMap_::VERTICAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX | TraceBitMap_<>::VERTICAL));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), true);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), false);
@@ -1831,7 +1831,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL_OPEN));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL_OPEN));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), false);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), true);
@@ -1840,7 +1840,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), true);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), true);
@@ -1851,7 +1851,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL_OPEN));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL_OPEN));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), false);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), true);
@@ -1860,7 +1860,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), true);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), true);
@@ -1871,7 +1871,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), false);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), true);
@@ -1880,7 +1880,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), true);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), true);
@@ -1891,7 +1891,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), false);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), true);
@@ -1900,7 +1900,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'C',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), true);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), true);
@@ -1913,7 +1913,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::HORIZONTAL | TraceBitMap_::VERTICAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::VERTICAL));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), false);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), false);
@@ -1922,7 +1922,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::VERTICAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::VERTICAL));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), false);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), true);
@@ -1933,7 +1933,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::HORIZONTAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::HORIZONTAL));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), false);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), false);
@@ -1942,7 +1942,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::VERTICAL_OPEN));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::VERTICAL_OPEN));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), false);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), true);
@@ -1954,7 +1954,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::HORIZONTAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::HORIZONTAL));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), false);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), false);
@@ -1963,7 +1963,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), true);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), true);
@@ -1974,7 +1974,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::HORIZONTAL_OPEN));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::HORIZONTAL_OPEN));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), false);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), false);
@@ -1983,7 +1983,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), true);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), true);
@@ -1994,7 +1994,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::VERTICAL | TraceBitMap_::HORIZONTAL_OPEN));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::VERTICAL | TraceBitMap_<>::HORIZONTAL_OPEN));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), false);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), false);
@@ -2003,7 +2003,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), true);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), true);
@@ -2014,7 +2014,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::VERTICAL | TraceBitMap_::HORIZONTAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::VERTICAL | TraceBitMap_<>::HORIZONTAL));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), false);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), false);
@@ -2023,7 +2023,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_global_dynamic_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionHorizontal()), true);
         SEQAN_ASSERT_EQ(isGapExtension(activeCell, DynamicGapExtensionVertical()), true);
@@ -2034,7 +2034,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_diagonal_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -2051,7 +2051,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_diagonal_direction)
     TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                            scoringScheme, RecursionDirectionDiagonal(), TDPProfileSingleTrace());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
     SEQAN_ASSERT_EQ(activeCell._score, 4);
     SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
     SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -2060,7 +2060,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_diagonal_direction)
     traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                scoringScheme, RecursionDirectionDiagonal(), TDPProfileCompleteTrace());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
     SEQAN_ASSERT_EQ(activeCell._score, 4);
     SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
     SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -2069,7 +2069,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_diagonal_direction)
     traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                scoringScheme, RecursionDirectionDiagonal(), TDPProfileSingleTrace());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
     SEQAN_ASSERT_EQ(activeCell._score, 0);
     SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
     SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -2078,7 +2078,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_diagonal_direction)
     traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                scoringScheme, RecursionDirectionDiagonal(), TDPProfileCompleteTrace());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
     SEQAN_ASSERT_EQ(activeCell._score, 0);
     SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
     SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -2089,7 +2089,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_horizontal_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -2107,7 +2107,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_horizontal_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionHorizontal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -2116,7 +2116,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_horizontal_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionHorizontal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -2127,7 +2127,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_horizontal_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionHorizontal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 2);
@@ -2136,7 +2136,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_horizontal_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionHorizontal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 2);
@@ -2147,7 +2147,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_vertical_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -2165,7 +2165,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_vertical_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionVertical(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -2174,7 +2174,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_vertical_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionVertical(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX);
         SEQAN_ASSERT_EQ(activeCell._score, 6);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -2185,7 +2185,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_vertical_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionVertical(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -2194,7 +2194,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_vertical_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionVertical(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -2205,7 +2205,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_upper_band_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -2223,7 +2223,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_upper_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 8);
@@ -2232,7 +2232,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_upper_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 8);
@@ -2243,7 +2243,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_upper_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionVertical(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 2);
@@ -2252,7 +2252,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_upper_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionVertical(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 2);
@@ -2263,7 +2263,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_lower_band_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -2281,7 +2281,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_lower_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 2);
@@ -2290,7 +2290,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_lower_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 2);
@@ -2301,7 +2301,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_lower_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 2);
@@ -2310,7 +2310,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_lower_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 2);
@@ -2322,7 +2322,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_all_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -2340,7 +2340,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 8);
@@ -2349,8 +2349,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::DIAGONAL | +TraceBitMap_::HORIZONTAL | +TraceBitMap_::VERTICAL |
-                                     TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::HORIZONTAL | +TraceBitMap_<>::VERTICAL |
+                                     TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 8);
@@ -2363,7 +2363,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 0);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 2);
@@ -2372,7 +2372,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_linear_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 0);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 2);
@@ -2384,7 +2384,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_diagonal_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<LocalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -2409,7 +2409,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_diagonal_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, inf);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, inf);
@@ -2420,7 +2420,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_diagonal_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::DIAGONAL);
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, inf);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, inf);
@@ -2436,7 +2436,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_diagonal_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 0);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 0);
@@ -2447,7 +2447,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_diagonal_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 0);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 0);
@@ -2462,7 +2462,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_horizontal_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<LocalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -2487,7 +2487,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_horizontal_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionHorizontal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::HORIZONTAL | +TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::HORIZONTAL | +TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, inf);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 4);
@@ -2498,7 +2498,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_horizontal_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionHorizontal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::HORIZONTAL | TraceBitMap_::HORIZONTAL_OPEN | +TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::HORIZONTAL_OPEN | +TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, inf);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 4);
@@ -2513,7 +2513,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_horizontal_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionHorizontal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 0);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 0);
@@ -2524,7 +2524,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_horizontal_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionHorizontal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 0);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 0);
@@ -2538,7 +2538,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_vertical_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<LocalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -2563,7 +2563,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_vertical_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionVertical(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::VERTICAL | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::VERTICAL | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 4);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, inf);
@@ -2574,7 +2574,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_vertical_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionVertical(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::VERTICAL | +TraceBitMap_::VERTICAL_OPEN | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::VERTICAL | +TraceBitMap_<>::VERTICAL_OPEN | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 4);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, inf);
@@ -2589,7 +2589,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_vertical_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionVertical(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 0);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 0);
@@ -2600,7 +2600,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_vertical_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionVertical(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 0);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 0);
@@ -2614,7 +2614,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_upper_band_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<LocalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -2639,7 +2639,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_upper_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::HORIZONTAL | TraceBitMap_::DIAGONAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::DIAGONAL));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 4);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, inf);
@@ -2650,8 +2650,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_upper_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::HORIZONTAL | +TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX |
-                                     +TraceBitMap_::DIAGONAL | TraceBitMap_::HORIZONTAL_OPEN));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::HORIZONTAL | +TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX |
+                                     +TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::HORIZONTAL_OPEN));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 4);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, inf);
@@ -2666,7 +2666,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_upper_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 0);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 0);
@@ -2677,7 +2677,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_upper_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                    scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 0);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 0);
@@ -2691,7 +2691,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_lower_band_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<LocalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -2716,7 +2716,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_lower_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::VERTICAL | TraceBitMap_::DIAGONAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::VERTICAL | TraceBitMap_<>::DIAGONAL));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, inf);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 4);
@@ -2727,8 +2727,8 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_lower_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::VERTICAL | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX |
-                                     +TraceBitMap_::DIAGONAL | TraceBitMap_::VERTICAL_OPEN));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::VERTICAL | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX |
+                                     +TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::VERTICAL_OPEN));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, inf);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 4);
@@ -2743,7 +2743,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_lower_band_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 0);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 0);
@@ -2754,7 +2754,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_lower_band_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                    scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 0);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 0);
@@ -2768,7 +2768,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_all_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<SingleTrace, GapsLeft> > > TDPProfileSingleTrace;
     typedef DPProfile_<LocalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsLeft> > > TDPProfileCompleteTrace;
 
@@ -2792,7 +2792,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                                scoringScheme, RecursionDirectionAll(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::HORIZONTAL | TraceBitMap_::VERTICAL | TraceBitMap_::DIAGONAL));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::VERTICAL | TraceBitMap_<>::DIAGONAL));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 4);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 4);
@@ -2803,10 +2803,10 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                    scoringScheme, RecursionDirectionAll(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_::HORIZONTAL | +TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX |
-                                     +TraceBitMap_::VERTICAL | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX |
-                                     +TraceBitMap_::DIAGONAL | TraceBitMap_::HORIZONTAL_OPEN |
-                                     TraceBitMap_::VERTICAL_OPEN));
+        SEQAN_ASSERT_EQ(traceValue, (+TraceBitMap_<>::HORIZONTAL | +TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX |
+                                     +TraceBitMap_<>::VERTICAL | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX |
+                                     +TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::HORIZONTAL_OPEN |
+                                     TraceBitMap_<>::VERTICAL_OPEN));
         SEQAN_ASSERT_EQ(activeCell._score, 4);
         SEQAN_ASSERT_EQ(activeCell._horizontalScore, 4);
         SEQAN_ASSERT_EQ(activeCell._verticalScore, 4);
@@ -2823,7 +2823,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_all_direction)
         TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileSingleTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 1);
@@ -2832,7 +2832,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_trace_local_affine_all_direction)
         traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'C', 'A',
                                                scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfileCompleteTrace());
 
-        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
         SEQAN_ASSERT_EQ(activeCell._score, 0);
         SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
         SEQAN_ASSERT_EQ(prevHorizontal._score, 1);
@@ -2844,7 +2844,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_notrace_diagonal_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOff> TDPProfile;
 
     DPCell_<int, LinearGaps> activeCell;
@@ -2860,7 +2860,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_notrace_diagonal_direction)
     TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                            scoringScheme, RecursionDirectionDiagonal(), TDPProfile());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
     SEQAN_ASSERT_EQ(activeCell._score, 4);
     SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
     SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -2871,7 +2871,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_notrace_horizontal_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOff> TDPProfile;
 
     DPCell_<int, LinearGaps> activeCell;
@@ -2887,7 +2887,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_notrace_horizontal_direction)
     TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                            scoringScheme, RecursionDirectionHorizontal(), TDPProfile());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
     SEQAN_ASSERT_EQ(activeCell._score, 6);
     SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
     SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -2898,7 +2898,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_notrace_vertical_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOff> TDPProfile;
 
     DPCell_<int, LinearGaps> activeCell;
@@ -2914,7 +2914,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_notrace_vertical_direction)
     TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                            scoringScheme, RecursionDirectionVertical(), TDPProfile());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
     SEQAN_ASSERT_EQ(activeCell._score, 6);
     SEQAN_ASSERT_EQ(prevDiagonal._score, 2);
     SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -2925,7 +2925,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_notrace_upper_band_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOff> TDPProfile;
 
     DPCell_<int, LinearGaps> activeCell;
@@ -2941,7 +2941,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_notrace_upper_band_direction)
     TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                            scoringScheme, RecursionDirectionUpperDiagonal(), TDPProfile());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
     SEQAN_ASSERT_EQ(activeCell._score, 6);
     SEQAN_ASSERT_EQ(prevDiagonal._score, 4);
     SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -2952,7 +2952,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_notrace_lower_band_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOff> TDPProfile;
 
     DPCell_<int, LinearGaps> activeCell;
@@ -2968,7 +2968,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_notrace_lower_band_direction)
     TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                            scoringScheme, RecursionDirectionLowerDiagonal(), TDPProfile());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
     SEQAN_ASSERT_EQ(activeCell._score, 6);
     SEQAN_ASSERT_EQ(prevDiagonal._score, 4);
     SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
@@ -2979,7 +2979,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_notrace_all_direction)
 {
     using namespace seqan;
 
-    typedef TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPProfile_<LocalAlignment_<>, LinearGaps, TracebackOff> TDPProfile;
 
     DPCell_<int, LinearGaps> activeCell;
@@ -2995,7 +2995,7 @@ SEQAN_DEFINE_TEST(test_dp_formula_notrace_all_direction)
     TTraceValue traceValue = _computeScore(activeCell, prevDiagonal, prevHorizontal, prevVertical, 'A', 'A',
                                            scoringScheme, RecursionDirectionAll(), TDPProfile());
 
-    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_::NONE);
+    SEQAN_ASSERT_EQ(traceValue, +TraceBitMap_<>::NONE);
     SEQAN_ASSERT_EQ(activeCell._score, 6);
     SEQAN_ASSERT_EQ(prevDiagonal._score, 4);
     SEQAN_ASSERT_EQ(prevHorizontal._score, 10);
diff --git a/tests/align/test_alignment_dp_trace_segment.h b/tests/align/test_alignment_dp_trace_segment.h
index 54913d1..b15bf46 100644
--- a/tests/align/test_alignment_dp_trace_segment.h
+++ b/tests/align/test_alignment_dp_trace_segment.h
@@ -53,7 +53,7 @@ testAlignmentTracebackTraceSegmentsConstructor()
         SEQAN_ASSERT_EQ(traceSegment._horizontalBeginPos, (TPosition) 0);
         SEQAN_ASSERT_EQ(traceSegment._verticalBeginPos, (TPosition) 0);
         SEQAN_ASSERT_EQ(traceSegment._length, (TSize) 0);
-        SEQAN_ASSERT_EQ(traceSegment._traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceSegment._traceValue, +TraceBitMap_<>::NONE);
     }
 
     { // test copy ctor
@@ -61,30 +61,30 @@ testAlignmentTracebackTraceSegmentsConstructor()
         traceSegment._horizontalBeginPos = 10;
         traceSegment._verticalBeginPos = 3;
         traceSegment._length = 5;
-        traceSegment._traceValue = +TraceBitMap_::DIAGONAL;
+        traceSegment._traceValue = +TraceBitMap_<>::DIAGONAL;
 
         TTraceSegment traceSegment2(traceSegment);
 
         SEQAN_ASSERT_EQ(traceSegment2._horizontalBeginPos, (TPosition) 10);
         SEQAN_ASSERT_EQ(traceSegment2._verticalBeginPos, (TPosition) 3);
         SEQAN_ASSERT_EQ(traceSegment2._length, (TSize) 5);
-        SEQAN_ASSERT_EQ(traceSegment2._traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceSegment2._traceValue, +TraceBitMap_<>::DIAGONAL);
 
         TTraceSegment traceSegment3 = traceSegment;
 
         SEQAN_ASSERT_EQ(traceSegment3._horizontalBeginPos, (TPosition) 10);
         SEQAN_ASSERT_EQ(traceSegment3._verticalBeginPos, (TPosition) 3);
         SEQAN_ASSERT_EQ(traceSegment3._length, (TSize) 5);
-        SEQAN_ASSERT_EQ(traceSegment3._traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceSegment3._traceValue, +TraceBitMap_<>::DIAGONAL);
     }
 
     { // test additional ctor
-        TTraceSegment traceSegment(12, 13, 8, +TraceBitMap_::VERTICAL);
+        TTraceSegment traceSegment(12, 13, 8, +TraceBitMap_<>::VERTICAL);
 
         SEQAN_ASSERT_EQ(traceSegment._horizontalBeginPos, (TPosition) 12);
         SEQAN_ASSERT_EQ(traceSegment._verticalBeginPos, (TPosition) 13);
         SEQAN_ASSERT_EQ(traceSegment._length, (TSize) 8);
-        SEQAN_ASSERT_EQ(traceSegment._traceValue, +TraceBitMap_::VERTICAL);
+        SEQAN_ASSERT_EQ(traceSegment._traceValue, +TraceBitMap_<>::VERTICAL);
     }
 }
 
@@ -101,21 +101,21 @@ testAlignmentTracebackTraceSegmentsAssignment()
         traceSegment._horizontalBeginPos = 10;
         traceSegment._verticalBeginPos = 3;
         traceSegment._length = 5;
-        traceSegment._traceValue = +TraceBitMap_::DIAGONAL;
+        traceSegment._traceValue = +TraceBitMap_<>::DIAGONAL;
 
         TTraceSegment traceSegment2;
 
         SEQAN_ASSERT_EQ(traceSegment2._horizontalBeginPos, (TPosition) 0);
         SEQAN_ASSERT_EQ(traceSegment2._verticalBeginPos, (TPosition) 0);
         SEQAN_ASSERT_EQ(traceSegment2._length, (TSize) 0);
-        SEQAN_ASSERT_EQ(traceSegment2._traceValue, +TraceBitMap_::NONE);
+        SEQAN_ASSERT_EQ(traceSegment2._traceValue, +TraceBitMap_<>::NONE);
 
         traceSegment2 = traceSegment;
 
         SEQAN_ASSERT_EQ(traceSegment2._horizontalBeginPos, (TPosition) 10);
         SEQAN_ASSERT_EQ(traceSegment2._verticalBeginPos, (TPosition) 3);
         SEQAN_ASSERT_EQ(traceSegment2._length, (TSize) 5);
-        SEQAN_ASSERT_EQ(traceSegment2._traceValue, +TraceBitMap_::DIAGONAL);
+        SEQAN_ASSERT_EQ(traceSegment2._traceValue, +TraceBitMap_<>::DIAGONAL);
     }
 }
 
@@ -131,12 +131,12 @@ testAlignmentTracebackTraceSegmentsCompare()
     traceSegment._horizontalBeginPos = 10;
     traceSegment._verticalBeginPos = 3;
     traceSegment._length = 5;
-    traceSegment._traceValue = +TraceBitMap_::DIAGONAL;
+    traceSegment._traceValue = +TraceBitMap_<>::DIAGONAL;
 
     TTraceSegment traceSegment2(traceSegment);
 
     SEQAN_ASSERT(traceSegment2 == traceSegment);
-    traceSegment._traceValue = +TraceBitMap_::HORIZONTAL;
+    traceSegment._traceValue = +TraceBitMap_<>::HORIZONTAL;
     SEQAN_ASSERT(traceSegment2 !=  traceSegment);
 }
 
@@ -170,30 +170,30 @@ void testAlignmentTracebackRecordTrace(TTarget & target)
 {
     using namespace seqan;
 
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
 
-    TTraceValue tv1 = TraceBitMap_::DIAGONAL | TraceBitMap_::HORIZONTAL | TraceBitMap_::VERTICAL;
-    TTraceValue tv2 = TraceBitMap_::HORIZONTAL | TraceBitMap_::VERTICAL;
-    TTraceValue tv3 = TraceBitMap_::HORIZONTAL;
+    TTraceValue tv1 = TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::VERTICAL;
+    TTraceValue tv2 = TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::VERTICAL;
+    TTraceValue tv3 = TraceBitMap_<>::HORIZONTAL;
     _recordSegment(target, 0, 0, 3, tv1);
     _recordSegment(target, 0, 3, 5, tv2);
     _recordSegment(target, 5, 8, 3, tv3);
-    _recordSegment(target, 8, 8, 0, +TraceBitMap_::DIAGONAL);
+    _recordSegment(target, 8, 8, 0, +TraceBitMap_<>::DIAGONAL);
 
 
 
     SEQAN_ASSERT_EQ(target[0]._horizontalBeginPos, 0);
     SEQAN_ASSERT_EQ(target[0]._verticalBeginPos, 0);
     SEQAN_ASSERT_EQ(target[0]._length, 3);
-    SEQAN_ASSERT_EQ(target[0]._traceValue, +TraceBitMap_::DIAGONAL);
+    SEQAN_ASSERT_EQ(target[0]._traceValue, +TraceBitMap_<>::DIAGONAL);
     SEQAN_ASSERT_EQ(target[1]._horizontalBeginPos, 0);
     SEQAN_ASSERT_EQ(target[1]._verticalBeginPos, 3);
     SEQAN_ASSERT_EQ(target[1]._length, 5);
-    SEQAN_ASSERT_EQ(target[1]._traceValue, +TraceBitMap_::VERTICAL);
+    SEQAN_ASSERT_EQ(target[1]._traceValue, +TraceBitMap_<>::VERTICAL);
     SEQAN_ASSERT_EQ(target[2]._horizontalBeginPos, 5);
     SEQAN_ASSERT_EQ(target[2]._verticalBeginPos, 8);
     SEQAN_ASSERT_EQ(target[2]._length, 3);
-    SEQAN_ASSERT_EQ(target[2]._traceValue, +TraceBitMap_::HORIZONTAL);
+    SEQAN_ASSERT_EQ(target[2]._traceValue, +TraceBitMap_<>::HORIZONTAL);
 
     SEQAN_ASSERT_EQ(length(target), 3u);
 }
@@ -245,11 +245,11 @@ void testAlignmentTracebackTraceSegmentGetEndHorizontal()
     traceSegm._horizontalBeginPos = 5;
     traceSegm._verticalBeginPos = 12;
     traceSegm._length = 7;
-    traceSegm._traceValue = +TraceBitMap_::HORIZONTAL;
+    traceSegm._traceValue = +TraceBitMap_<>::HORIZONTAL;
 
     SEQAN_ASSERT_EQ(_getEndHorizontal(traceSegm), 12);
 
-    traceSegm._traceValue = +TraceBitMap_::VERTICAL;
+    traceSegm._traceValue = +TraceBitMap_<>::VERTICAL;
     SEQAN_ASSERT_EQ(_getEndHorizontal(traceSegm), 5);
 }
 
@@ -264,11 +264,11 @@ void testAlignmentTracebackTraceSegmentGetEndVertical()
     traceSegm._horizontalBeginPos = 5;
     traceSegm._verticalBeginPos = 12;
     traceSegm._length = 7;
-    traceSegm._traceValue = +TraceBitMap_::VERTICAL;
+    traceSegm._traceValue = +TraceBitMap_<>::VERTICAL;
 
     SEQAN_ASSERT_EQ(_getEndVertical(traceSegm), 19);
 
-    traceSegm._traceValue = +TraceBitMap_::HORIZONTAL;
+    traceSegm._traceValue = +TraceBitMap_<>::HORIZONTAL;
     SEQAN_ASSERT_EQ(_getEndVertical(traceSegm), 12);
 }
 
@@ -276,12 +276,12 @@ void testAlignmentTracebackTraceSegmentTranslateTraceValue()
 {
     using namespace seqan;
 
-    SEQAN_ASSERT_EQ(_translateTraceValue(+TraceBitMap_::DIAGONAL), "D");
-    SEQAN_ASSERT_EQ(_translateTraceValue(+TraceBitMap_::VERTICAL), "V");
-    SEQAN_ASSERT_EQ(_translateTraceValue(+TraceBitMap_::HORIZONTAL), "H");
-    SEQAN_ASSERT_EQ(_translateTraceValue(+TraceBitMap_::VERTICAL_OPEN), "v");
-    SEQAN_ASSERT_EQ(_translateTraceValue(+TraceBitMap_::HORIZONTAL_OPEN), "h");
-    SEQAN_ASSERT_EQ(_translateTraceValue(+TraceBitMap_::NONE), "0");
+    SEQAN_ASSERT_EQ(_translateTraceValue(+TraceBitMap_<>::DIAGONAL), "D");
+    SEQAN_ASSERT_EQ(_translateTraceValue(+TraceBitMap_<>::VERTICAL), "V");
+    SEQAN_ASSERT_EQ(_translateTraceValue(+TraceBitMap_<>::HORIZONTAL), "H");
+    SEQAN_ASSERT_EQ(_translateTraceValue(+TraceBitMap_<>::VERTICAL_OPEN), "v");
+    SEQAN_ASSERT_EQ(_translateTraceValue(+TraceBitMap_<>::HORIZONTAL_OPEN), "h");
+    SEQAN_ASSERT_EQ(_translateTraceValue(+TraceBitMap_<>::NONE), "0");
 }
 
 void testAlignmentTracebackTraceSegmentStreamOperator()
@@ -295,7 +295,7 @@ void testAlignmentTracebackTraceSegmentStreamOperator()
     traceSegm._horizontalBeginPos = 5;
     traceSegm._verticalBeginPos = 12;
     traceSegm._length = 7;
-    traceSegm._traceValue = +TraceBitMap_::DIAGONAL;
+    traceSegm._traceValue = +TraceBitMap_<>::DIAGONAL;
 
     std::stringstream ss;
     ss << traceSegm;
diff --git a/tests/align/test_alignment_dp_traceback.h b/tests/align/test_alignment_dp_traceback.h
index fbddd19..c396043 100644
--- a/tests/align/test_alignment_dp_traceback.h
+++ b/tests/align/test_alignment_dp_traceback.h
@@ -44,7 +44,7 @@ SEQAN_DEFINE_TEST(test_align2_traceback_affine)
 
     typedef DPProfile_<GlobalAlignment_<>, AffineGaps, TracebackOn<> > TDPProfile;
     typedef TraceSegment_<unsigned, unsigned> TTraceSegment;
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPMatrix_<TTraceValue, FullDPMatrix> TTraceMatrix;
 
     typedef DPMatrixNavigator_<TTraceMatrix, DPTraceMatrix<TracebackOn<> >, NavigateColumnWise> TDPTraceNavigator;
@@ -57,25 +57,25 @@ SEQAN_DEFINE_TEST(test_align2_traceback_affine)
 
     resize(traceMatrix);
 
-    value(traceMatrix, 0, 0) = +TraceBitMap_::NONE;
-    value(traceMatrix, 1, 0) = +TraceBitMap_::VERTICAL_OPEN | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-    value(traceMatrix, 2, 0) = +TraceBitMap_::VERTICAL | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-    value(traceMatrix, 3, 0) = +TraceBitMap_::VERTICAL | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 0, 0) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 1, 0) = +TraceBitMap_<>::VERTICAL_OPEN | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 2, 0) = +TraceBitMap_<>::VERTICAL | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 3, 0) = +TraceBitMap_<>::VERTICAL | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
 
-    value(traceMatrix, 0, 1) = +TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 1, 1) = +TraceBitMap_::DIAGONAL;
-    value(traceMatrix, 2, 1) = +TraceBitMap_::HORIZONTAL_OPEN | +TraceBitMap_::DIAGONAL | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | +TraceBitMap_::VERTICAL_OPEN;
-    value(traceMatrix, 3, 1) = +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 0, 1) = +TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 1, 1) = +TraceBitMap_<>::DIAGONAL;
+    value(traceMatrix, 2, 1) = +TraceBitMap_<>::HORIZONTAL_OPEN | +TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | +TraceBitMap_<>::VERTICAL_OPEN;
+    value(traceMatrix, 3, 1) = +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
 
-    value(traceMatrix, 0, 2) = +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 1, 2) = +TraceBitMap_::DIAGONAL;
-    value(traceMatrix, 2, 2) = +TraceBitMap_::VERTICAL_OPEN | +TraceBitMap_::DIAGONAL;
-    value(traceMatrix, 3, 2) = +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 0, 2) = +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 1, 2) = +TraceBitMap_<>::DIAGONAL;
+    value(traceMatrix, 2, 2) = +TraceBitMap_<>::VERTICAL_OPEN | +TraceBitMap_<>::DIAGONAL;
+    value(traceMatrix, 3, 2) = +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
 
-    value(traceMatrix, 0, 3) = +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 1, 3) = +TraceBitMap_::HORIZONTAL_OPEN | +TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 2, 3) = +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 3, 3) = +TraceBitMap_::DIAGONAL;
+    value(traceMatrix, 0, 3) = +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 1, 3) = +TraceBitMap_<>::HORIZONTAL_OPEN | +TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 2, 3) = +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 3, 3) = +TraceBitMap_<>::DIAGONAL;
 
     TDPTraceNavigator navigator;
     _init(navigator, traceMatrix, DPBandConfig<BandOff>());
@@ -87,55 +87,55 @@ SEQAN_DEFINE_TEST(test_align2_traceback_affine)
     dpScout._maxHostPosition = 15;
     _computeTraceback(target, navigator, dpScout, str0, str1, DPBandConfig<BandOff>(), TDPProfile());
     SEQAN_ASSERT_EQ(length(target), 1u);
-    SEQAN_ASSERT_EQ(target[0], TTraceSegment(0, 0, 3, +TraceBitMap_::DIAGONAL));
+    SEQAN_ASSERT_EQ(target[0], TTraceSegment(0, 0, 3, +TraceBitMap_<>::DIAGONAL));
 
     clear(target);
     dpScout._maxHostPosition = 14;
     _computeTraceback(target, navigator, dpScout, str0, str1, DPBandConfig<BandOff>(), TDPProfile());
     SEQAN_ASSERT_EQ(length(target), 3u);
-    SEQAN_ASSERT_EQ(target[0], TTraceSegment(3, 2, 1, +TraceBitMap_::VERTICAL));
-    SEQAN_ASSERT_EQ(target[1], TTraceSegment(0, 2, 3, +TraceBitMap_::HORIZONTAL));
-    SEQAN_ASSERT_EQ(target[2], TTraceSegment(0, 0, 2, +TraceBitMap_::VERTICAL));
+    SEQAN_ASSERT_EQ(target[0], TTraceSegment(3, 2, 1, +TraceBitMap_<>::VERTICAL));
+    SEQAN_ASSERT_EQ(target[1], TTraceSegment(0, 2, 3, +TraceBitMap_<>::HORIZONTAL));
+    SEQAN_ASSERT_EQ(target[2], TTraceSegment(0, 0, 2, +TraceBitMap_<>::VERTICAL));
 
     clear(target);
     dpScout._maxHostPosition = 13;
     _computeTraceback(target, navigator, dpScout, str0, str1, DPBandConfig<BandOff>(), TDPProfile());
     SEQAN_ASSERT_EQ(length(target), 4u);
-    SEQAN_ASSERT_EQ(target[0], TTraceSegment(3, 1, 2, +TraceBitMap_::VERTICAL));
-    SEQAN_ASSERT_EQ(target[1], TTraceSegment(2, 1, 1, +TraceBitMap_::HORIZONTAL));
-    SEQAN_ASSERT_EQ(target[2], TTraceSegment(1, 0, 1, +TraceBitMap_::DIAGONAL));
-    SEQAN_ASSERT_EQ(target[3], TTraceSegment(0, 0, 1, +TraceBitMap_::HORIZONTAL));
+    SEQAN_ASSERT_EQ(target[0], TTraceSegment(3, 1, 2, +TraceBitMap_<>::VERTICAL));
+    SEQAN_ASSERT_EQ(target[1], TTraceSegment(2, 1, 1, +TraceBitMap_<>::HORIZONTAL));
+    SEQAN_ASSERT_EQ(target[2], TTraceSegment(1, 0, 1, +TraceBitMap_<>::DIAGONAL));
+    SEQAN_ASSERT_EQ(target[3], TTraceSegment(0, 0, 1, +TraceBitMap_<>::HORIZONTAL));
 
     clear(target);
     dpScout._maxHostPosition = 12;
     _computeTraceback(target, navigator, dpScout, str0, str1, DPBandConfig<BandOff>(), TDPProfile());
     SEQAN_ASSERT_EQ(length(target), 2u);
-    SEQAN_ASSERT_EQ(target[0], TTraceSegment(3, 0, 3, +TraceBitMap_::VERTICAL));
-    SEQAN_ASSERT_EQ(target[1], TTraceSegment(0, 0, 3, +TraceBitMap_::HORIZONTAL));
+    SEQAN_ASSERT_EQ(target[0], TTraceSegment(3, 0, 3, +TraceBitMap_<>::VERTICAL));
+    SEQAN_ASSERT_EQ(target[1], TTraceSegment(0, 0, 3, +TraceBitMap_<>::HORIZONTAL));
 
     clear(target);
     dpScout._maxHostPosition = 11;
     _computeTraceback(target, navigator, dpScout, str0, str1, DPBandConfig<BandOff>(), TDPProfile());
     SEQAN_ASSERT_EQ(length(target), 4u);
-    SEQAN_ASSERT_EQ(target[0], TTraceSegment(2, 3, 1, +TraceBitMap_::HORIZONTAL));
-    SEQAN_ASSERT_EQ(target[1], TTraceSegment(2, 1, 2, +TraceBitMap_::VERTICAL));
-    SEQAN_ASSERT_EQ(target[2], TTraceSegment(1, 0, 1, +TraceBitMap_::DIAGONAL));
-    SEQAN_ASSERT_EQ(target[3], TTraceSegment(0, 0, 1, +TraceBitMap_::HORIZONTAL));
+    SEQAN_ASSERT_EQ(target[0], TTraceSegment(2, 3, 1, +TraceBitMap_<>::HORIZONTAL));
+    SEQAN_ASSERT_EQ(target[1], TTraceSegment(2, 1, 2, +TraceBitMap_<>::VERTICAL));
+    SEQAN_ASSERT_EQ(target[2], TTraceSegment(1, 0, 1, +TraceBitMap_<>::DIAGONAL));
+    SEQAN_ASSERT_EQ(target[3], TTraceSegment(0, 0, 1, +TraceBitMap_<>::HORIZONTAL));
 
     clear(target);
     dpScout._maxHostPosition = 7;
     _computeTraceback(target, navigator, dpScout, str0, str1, DPBandConfig<BandOff>(), TDPProfile());
     SEQAN_ASSERT_EQ(length(target), 3u);
-    SEQAN_ASSERT_EQ(target[0], TTraceSegment(1, 3, 2, +TraceBitMap_::HORIZONTAL));
-    SEQAN_ASSERT_EQ(target[1], TTraceSegment(1, 1, 2, +TraceBitMap_::VERTICAL));
-    SEQAN_ASSERT_EQ(target[2], TTraceSegment(0, 0, 1, +TraceBitMap_::DIAGONAL));
+    SEQAN_ASSERT_EQ(target[0], TTraceSegment(1, 3, 2, +TraceBitMap_<>::HORIZONTAL));
+    SEQAN_ASSERT_EQ(target[1], TTraceSegment(1, 1, 2, +TraceBitMap_<>::VERTICAL));
+    SEQAN_ASSERT_EQ(target[2], TTraceSegment(0, 0, 1, +TraceBitMap_<>::DIAGONAL));
 
     clear(target);
     dpScout._maxHostPosition = 3;
     _computeTraceback(target, navigator, dpScout, str0, str1, DPBandConfig<BandOff>(), TDPProfile());
     SEQAN_ASSERT_EQ(length(target), 2u);
-    SEQAN_ASSERT_EQ(target[0], TTraceSegment(0, 3, 3, +TraceBitMap_::HORIZONTAL));
-    SEQAN_ASSERT_EQ(target[1], TTraceSegment(0, 0, 3, +TraceBitMap_::VERTICAL));
+    SEQAN_ASSERT_EQ(target[0], TTraceSegment(0, 3, 3, +TraceBitMap_<>::HORIZONTAL));
+    SEQAN_ASSERT_EQ(target[1], TTraceSegment(0, 0, 3, +TraceBitMap_<>::VERTICAL));
 }
 
 SEQAN_DEFINE_TEST(test_align2_traceback_linear_unbanded_alignment)
@@ -144,7 +144,7 @@ SEQAN_DEFINE_TEST(test_align2_traceback_linear_unbanded_alignment)
 
     typedef DPProfile_<GlobalAlignment_<>, LinearGaps, TracebackOn<> > TDPProfile;
     typedef TraceSegment_<unsigned, unsigned> TTraceSegment;
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPMatrix_<TTraceValue, FullDPMatrix> TTraceMatrix;
 
     typedef DPMatrixNavigator_<TTraceMatrix, DPTraceMatrix<TracebackOn<> >, NavigateColumnWise> TDPTraceNavigator;
@@ -157,25 +157,25 @@ SEQAN_DEFINE_TEST(test_align2_traceback_linear_unbanded_alignment)
 
     resize(traceMatrix);
 
-    value(traceMatrix, 0, 0) = +TraceBitMap_::NONE;
-    value(traceMatrix, 1, 0) = +TraceBitMap_::VERTICAL;
-    value(traceMatrix, 2, 0) = +TraceBitMap_::VERTICAL;
-    value(traceMatrix, 3, 0) = +TraceBitMap_::VERTICAL;
+    value(traceMatrix, 0, 0) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 1, 0) = +TraceBitMap_<>::VERTICAL;
+    value(traceMatrix, 2, 0) = +TraceBitMap_<>::VERTICAL;
+    value(traceMatrix, 3, 0) = +TraceBitMap_<>::VERTICAL;
 
-    value(traceMatrix, 0, 1) = +TraceBitMap_::HORIZONTAL;
-    value(traceMatrix, 1, 1) = +TraceBitMap_::DIAGONAL;
-    value(traceMatrix, 2, 1) = +TraceBitMap_::HORIZONTAL | +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 3, 1) = +TraceBitMap_::NONE;
+    value(traceMatrix, 0, 1) = +TraceBitMap_<>::HORIZONTAL;
+    value(traceMatrix, 1, 1) = +TraceBitMap_<>::DIAGONAL;
+    value(traceMatrix, 2, 1) = +TraceBitMap_<>::HORIZONTAL | +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 3, 1) = +TraceBitMap_<>::NONE;
 
-    value(traceMatrix, 0, 2) = +TraceBitMap_::HORIZONTAL;
-    value(traceMatrix, 1, 2) = +TraceBitMap_::NONE;
-    value(traceMatrix, 2, 2) = +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 3, 2) = +TraceBitMap_::NONE;
+    value(traceMatrix, 0, 2) = +TraceBitMap_<>::HORIZONTAL;
+    value(traceMatrix, 1, 2) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 2, 2) = +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 3, 2) = +TraceBitMap_<>::NONE;
 
-    value(traceMatrix, 0, 3) = +TraceBitMap_::HORIZONTAL;
-    value(traceMatrix, 1, 3) = +TraceBitMap_::NONE;
-    value(traceMatrix, 2, 3) = +TraceBitMap_::NONE;
-    value(traceMatrix, 3, 3) = +TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL  | +TraceBitMap_::HORIZONTAL;
+    value(traceMatrix, 0, 3) = +TraceBitMap_<>::HORIZONTAL;
+    value(traceMatrix, 1, 3) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 2, 3) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 3, 3) = +TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL  | +TraceBitMap_<>::HORIZONTAL;
 
     TDPTraceNavigator navigator;
     _init(navigator, traceMatrix, DPBandConfig<BandOff>());
@@ -187,10 +187,10 @@ SEQAN_DEFINE_TEST(test_align2_traceback_linear_unbanded_alignment)
     dpScout._maxHostPosition = 15;
     _computeTraceback(target, navigator, dpScout, str0, str1, DPBandConfig<BandOff>(), TDPProfile());
 
-    SEQAN_ASSERT_EQ(target[0], TTraceSegment(2, 2, 1, +TraceBitMap_::DIAGONAL));
-    SEQAN_ASSERT_EQ(target[1], TTraceSegment(1, 2, 1, +TraceBitMap_::HORIZONTAL));
-    SEQAN_ASSERT_EQ(target[2], TTraceSegment(1, 1, 1, +TraceBitMap_::VERTICAL));
-    SEQAN_ASSERT_EQ(target[3], TTraceSegment(0, 0, 1, +TraceBitMap_::DIAGONAL));
+    SEQAN_ASSERT_EQ(target[0], TTraceSegment(2, 2, 1, +TraceBitMap_<>::DIAGONAL));
+    SEQAN_ASSERT_EQ(target[1], TTraceSegment(1, 2, 1, +TraceBitMap_<>::HORIZONTAL));
+    SEQAN_ASSERT_EQ(target[2], TTraceSegment(1, 1, 1, +TraceBitMap_<>::VERTICAL));
+    SEQAN_ASSERT_EQ(target[3], TTraceSegment(0, 0, 1, +TraceBitMap_<>::DIAGONAL));
 }
 
 SEQAN_DEFINE_TEST(test_align2_traceback_linear_normal_banded_alignment)
@@ -199,7 +199,7 @@ SEQAN_DEFINE_TEST(test_align2_traceback_linear_normal_banded_alignment)
 
     typedef DPProfile_<GlobalAlignment_<>, LinearGaps, TracebackOn<> > TDPProfile;
     typedef TraceSegment_<unsigned, unsigned> TTraceSegment;
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPMatrix_<TTraceValue, FullDPMatrix> TTraceMatrix;
 
     typedef DPMatrixNavigator_<TTraceMatrix, DPTraceMatrix<TracebackOn<> >, NavigateColumnWise> TDPTraceNavigator;
@@ -212,25 +212,25 @@ SEQAN_DEFINE_TEST(test_align2_traceback_linear_normal_banded_alignment)
 
     resize(traceMatrix);
 
-    value(traceMatrix, 0, 0) = +TraceBitMap_::NONE;
-    value(traceMatrix, 1, 0) = +TraceBitMap_::VERTICAL;
-    value(traceMatrix, 2, 0) = +TraceBitMap_::VERTICAL;
+    value(traceMatrix, 0, 0) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 1, 0) = +TraceBitMap_<>::VERTICAL;
+    value(traceMatrix, 2, 0) = +TraceBitMap_<>::VERTICAL;
 
-    value(traceMatrix, 0, 1) = +TraceBitMap_::HORIZONTAL;
-    value(traceMatrix, 1, 1) = +TraceBitMap_::DIAGONAL;
-    value(traceMatrix, 2, 1) = +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 0, 1) = +TraceBitMap_<>::HORIZONTAL;
+    value(traceMatrix, 1, 1) = +TraceBitMap_<>::DIAGONAL;
+    value(traceMatrix, 2, 1) = +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
 
-    value(traceMatrix, 0, 2) = +TraceBitMap_::NONE;
-    value(traceMatrix, 1, 2) = +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 2, 2) = +TraceBitMap_::NONE;
+    value(traceMatrix, 0, 2) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 1, 2) = +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 2, 2) = +TraceBitMap_<>::NONE;
 
-    value(traceMatrix, 0, 3) = +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 1, 3) = +TraceBitMap_::VERTICAL | +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-    value(traceMatrix, 2, 3) = +TraceBitMap_::NONE;
+    value(traceMatrix, 0, 3) = +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 1, 3) = +TraceBitMap_<>::VERTICAL | +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 2, 3) = +TraceBitMap_<>::NONE;
 
-    value(traceMatrix, 0, 4) = +TraceBitMap_::NONE;
-    value(traceMatrix, 1, 4) = +TraceBitMap_::DIAGONAL | +TraceBitMap_::VERTICAL  | +TraceBitMap_::HORIZONTAL;
-    value(traceMatrix, 2, 4) = +TraceBitMap_::NONE;
+    value(traceMatrix, 0, 4) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 1, 4) = +TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::VERTICAL  | +TraceBitMap_<>::HORIZONTAL;
+    value(traceMatrix, 2, 4) = +TraceBitMap_<>::NONE;
 
 
     TDPTraceNavigator navigator;
@@ -243,11 +243,11 @@ SEQAN_DEFINE_TEST(test_align2_traceback_linear_normal_banded_alignment)
     dpScout._maxHostPosition = 13;
     _computeTraceback(target, navigator, dpScout, str0, str1, DPBandConfig<BandOn>(-1, 1), TDPProfile());
 
-    SEQAN_ASSERT_EQ(target[0], TTraceSegment(3, 3, 1, +TraceBitMap_::DIAGONAL));
-    SEQAN_ASSERT_EQ(target[1], TTraceSegment(3, 2, 1, +TraceBitMap_::VERTICAL));
-    SEQAN_ASSERT_EQ(target[2], TTraceSegment(1, 2, 2, +TraceBitMap_::HORIZONTAL));
-    SEQAN_ASSERT_EQ(target[3], TTraceSegment(1, 1, 1, +TraceBitMap_::VERTICAL));
-    SEQAN_ASSERT_EQ(target[4], TTraceSegment(0, 0, 1, +TraceBitMap_::DIAGONAL));
+    SEQAN_ASSERT_EQ(target[0], TTraceSegment(3, 3, 1, +TraceBitMap_<>::DIAGONAL));
+    SEQAN_ASSERT_EQ(target[1], TTraceSegment(3, 2, 1, +TraceBitMap_<>::VERTICAL));
+    SEQAN_ASSERT_EQ(target[2], TTraceSegment(1, 2, 2, +TraceBitMap_<>::HORIZONTAL));
+    SEQAN_ASSERT_EQ(target[3], TTraceSegment(1, 1, 1, +TraceBitMap_<>::VERTICAL));
+    SEQAN_ASSERT_EQ(target[4], TTraceSegment(0, 0, 1, +TraceBitMap_<>::DIAGONAL));
 }
 
 SEQAN_DEFINE_TEST(test_align2_traceback_linear_wide_banded_alignment)
@@ -256,7 +256,7 @@ SEQAN_DEFINE_TEST(test_align2_traceback_linear_wide_banded_alignment)
 
     typedef DPProfile_<GlobalAlignment_<>, LinearGaps, TracebackOn<> > TDPProfile;
     typedef TraceSegment_<unsigned, unsigned> TTraceSegment;
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPMatrix_<TTraceValue, FullDPMatrix> TTraceMatrix;
 
     typedef DPMatrixNavigator_<TTraceMatrix, DPTraceMatrix<TracebackOn<> >, NavigateColumnWise> TDPTraceNavigator;
@@ -269,61 +269,61 @@ SEQAN_DEFINE_TEST(test_align2_traceback_linear_wide_banded_alignment)
 
     resize(traceMatrix);
 
-    value(traceMatrix, 0, 0) = +TraceBitMap_::NONE;
-    value(traceMatrix, 1, 0) = +TraceBitMap_::NONE;
-    value(traceMatrix, 2, 0) = +TraceBitMap_::NONE;
-    value(traceMatrix, 3, 0) = +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-    value(traceMatrix, 4, 0) = +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-    value(traceMatrix, 5, 0) = +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-    value(traceMatrix, 6, 0) = +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-
-    value(traceMatrix, 0, 1) = +TraceBitMap_::NONE;
-    value(traceMatrix, 1, 1) = +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 2, 1) = +TraceBitMap_::DIAGONAL;
-    value(traceMatrix, 3, 1) = +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-    value(traceMatrix, 4, 1) = +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-    value(traceMatrix, 5, 1) = +TraceBitMap_::NONE;
-    value(traceMatrix, 6, 1) = +TraceBitMap_::NONE;
-
-    value(traceMatrix, 0, 2) = +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 1, 2) = +TraceBitMap_::NONE;
-    value(traceMatrix, 2, 2) = +TraceBitMap_::NONE;
-    value(traceMatrix, 3, 2) = +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 4, 2) = +TraceBitMap_::NONE;
-    value(traceMatrix, 5, 2) = +TraceBitMap_::NONE;
-    value(traceMatrix, 6, 2) = +TraceBitMap_::NONE;
-
-    value(traceMatrix, 0, 3) = +TraceBitMap_::NONE;
-    value(traceMatrix, 1, 3) = +TraceBitMap_::NONE;
-    value(traceMatrix, 2, 3) = +TraceBitMap_::NONE;
-    value(traceMatrix, 3, 3) = +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 4, 3) = +TraceBitMap_::NONE;
-    value(traceMatrix, 5, 3) = +TraceBitMap_::NONE;
-    value(traceMatrix, 6, 3) = +TraceBitMap_::NONE;
-
-    value(traceMatrix, 0, 4) = +TraceBitMap_::NONE;
-    value(traceMatrix, 1, 4) = +TraceBitMap_::NONE;
-    value(traceMatrix, 2, 4) = +TraceBitMap_::NONE;
-    value(traceMatrix, 3, 4) = +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 4, 4) = +TraceBitMap_::NONE;
-    value(traceMatrix, 5, 4) = +TraceBitMap_::NONE;
-    value(traceMatrix, 6, 4) = +TraceBitMap_::NONE;
-
-    value(traceMatrix, 0, 5) = +TraceBitMap_::NONE;
-    value(traceMatrix, 1, 5) = +TraceBitMap_::NONE;
-    value(traceMatrix, 2, 5) = +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 3, 5) = +TraceBitMap_::NONE;
-    value(traceMatrix, 4, 5) = +TraceBitMap_::NONE;
-    value(traceMatrix, 5, 5) = +TraceBitMap_::NONE;
-    value(traceMatrix, 6, 5) = +TraceBitMap_::NONE;
-
-    value(traceMatrix, 0, 6) = +TraceBitMap_::NONE;
-    value(traceMatrix, 1, 6) = +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 2, 6) = +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-    value(traceMatrix, 3, 6) = +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-    value(traceMatrix, 4, 6) = +TraceBitMap_::VERTICAL | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-    value(traceMatrix, 5, 6) = +TraceBitMap_::NONE;
-    value(traceMatrix, 6, 6) = +TraceBitMap_::NONE;
+    value(traceMatrix, 0, 0) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 1, 0) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 2, 0) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 3, 0) = +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 4, 0) = +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 5, 0) = +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 6, 0) = +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+
+    value(traceMatrix, 0, 1) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 1, 1) = +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 2, 1) = +TraceBitMap_<>::DIAGONAL;
+    value(traceMatrix, 3, 1) = +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 4, 1) = +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 5, 1) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 6, 1) = +TraceBitMap_<>::NONE;
+
+    value(traceMatrix, 0, 2) = +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 1, 2) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 2, 2) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 3, 2) = +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 4, 2) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 5, 2) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 6, 2) = +TraceBitMap_<>::NONE;
+
+    value(traceMatrix, 0, 3) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 1, 3) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 2, 3) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 3, 3) = +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 4, 3) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 5, 3) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 6, 3) = +TraceBitMap_<>::NONE;
+
+    value(traceMatrix, 0, 4) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 1, 4) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 2, 4) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 3, 4) = +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 4, 4) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 5, 4) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 6, 4) = +TraceBitMap_<>::NONE;
+
+    value(traceMatrix, 0, 5) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 1, 5) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 2, 5) = +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 3, 5) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 4, 5) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 5, 5) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 6, 5) = +TraceBitMap_<>::NONE;
+
+    value(traceMatrix, 0, 6) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 1, 6) = +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 2, 6) = +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 3, 6) = +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 4, 6) = +TraceBitMap_<>::VERTICAL | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 5, 6) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 6, 6) = +TraceBitMap_<>::NONE;
 
     TDPTraceNavigator navigator;
     _init(navigator, traceMatrix, DPBandConfig<BandOn>(-4, 4));
@@ -335,10 +335,10 @@ SEQAN_DEFINE_TEST(test_align2_traceback_linear_wide_banded_alignment)
     dpScout._maxHostPosition = 46;
     _computeTraceback(target, navigator, dpScout, str0, str1, DPBandConfig<BandOn>(-4, 4), TDPProfile());
 
-    SEQAN_ASSERT_EQ(target[0], TTraceSegment(6, 3, 3, +TraceBitMap_::VERTICAL));
-    SEQAN_ASSERT_EQ(target[1], TTraceSegment(1, 3, 5, +TraceBitMap_::HORIZONTAL));
-    SEQAN_ASSERT_EQ(target[2], TTraceSegment(1, 1, 2, +TraceBitMap_::VERTICAL));
-    SEQAN_ASSERT_EQ(target[3], TTraceSegment(0, 0, 1, +TraceBitMap_::DIAGONAL));
+    SEQAN_ASSERT_EQ(target[0], TTraceSegment(6, 3, 3, +TraceBitMap_<>::VERTICAL));
+    SEQAN_ASSERT_EQ(target[1], TTraceSegment(1, 3, 5, +TraceBitMap_<>::HORIZONTAL));
+    SEQAN_ASSERT_EQ(target[2], TTraceSegment(1, 1, 2, +TraceBitMap_<>::VERTICAL));
+    SEQAN_ASSERT_EQ(target[3], TTraceSegment(0, 0, 1, +TraceBitMap_<>::DIAGONAL));
 }
 
 SEQAN_DEFINE_TEST(test_align2_traceback_linear_small_banded_alignment)
@@ -347,7 +347,7 @@ SEQAN_DEFINE_TEST(test_align2_traceback_linear_small_banded_alignment)
 
     typedef DPProfile_<GlobalAlignment_<>, LinearGaps, TracebackOn<> > TDPProfile;
     typedef TraceSegment_<unsigned, unsigned> TTraceSegment;
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPMatrix_<TTraceValue, FullDPMatrix> TTraceMatrix;
 
     typedef DPMatrixNavigator_<TTraceMatrix, DPTraceMatrix<TracebackOn<> >, NavigateColumnWise> TDPTraceNavigator;
@@ -360,13 +360,13 @@ SEQAN_DEFINE_TEST(test_align2_traceback_linear_small_banded_alignment)
 
     resize(traceMatrix);
 
-    value(traceMatrix, 0, 0) = +TraceBitMap_::NONE;
+    value(traceMatrix, 0, 0) = +TraceBitMap_<>::NONE;
 
-    value(traceMatrix, 0, 1) = +TraceBitMap_::DIAGONAL;
+    value(traceMatrix, 0, 1) = +TraceBitMap_<>::DIAGONAL;
 
-    value(traceMatrix, 0, 2) = +TraceBitMap_::DIAGONAL;
+    value(traceMatrix, 0, 2) = +TraceBitMap_<>::DIAGONAL;
 
-    value(traceMatrix, 0, 3) = +TraceBitMap_::DIAGONAL;
+    value(traceMatrix, 0, 3) = +TraceBitMap_<>::DIAGONAL;
 
     TDPTraceNavigator navigator;
     _init(navigator, traceMatrix, DPBandConfig<BandOn>(0, 0));
@@ -378,7 +378,7 @@ SEQAN_DEFINE_TEST(test_align2_traceback_linear_small_banded_alignment)
     dpScout._maxHostPosition = 3;
     _computeTraceback(target, navigator, dpScout, str0, str1, DPBandConfig<BandOn>(0, 0), TDPProfile());
 
-    SEQAN_ASSERT_EQ(target[0], TTraceSegment(0, 0, 3, +TraceBitMap_::DIAGONAL));
+    SEQAN_ASSERT_EQ(target[0], TTraceSegment(0, 0, 3, +TraceBitMap_<>::DIAGONAL));
 }
 
 SEQAN_DEFINE_TEST(test_align2_traceback_gaps_left_linear_gaps)
@@ -387,7 +387,7 @@ SEQAN_DEFINE_TEST(test_align2_traceback_gaps_left_linear_gaps)
 
     typedef DPProfile_<GlobalAlignment_<>, LinearGaps, TracebackOn<> > TDPProfile;
     typedef TraceSegment_<unsigned, unsigned> TTraceSegment;
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPMatrix_<TTraceValue, FullDPMatrix> TTraceMatrix;
 
     typedef DPMatrixNavigator_<TTraceMatrix, DPTraceMatrix<TracebackOn<> >, NavigateColumnWise> TDPTraceNavigator;
@@ -400,20 +400,20 @@ SEQAN_DEFINE_TEST(test_align2_traceback_gaps_left_linear_gaps)
 
     resize(traceMatrix);
 
-    value(traceMatrix, 0, 0) = +TraceBitMap_::NONE;
-    value(traceMatrix, 1, 0) = +TraceBitMap_::VERTICAL_OPEN | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-    value(traceMatrix, 2, 0) = +TraceBitMap_::VERTICAL;
-    value(traceMatrix, 3, 0) = +TraceBitMap_::VERTICAL;
+    value(traceMatrix, 0, 0) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 1, 0) = +TraceBitMap_<>::VERTICAL_OPEN | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 2, 0) = +TraceBitMap_<>::VERTICAL;
+    value(traceMatrix, 3, 0) = +TraceBitMap_<>::VERTICAL;
 
-    value(traceMatrix, 0, 1) = +TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 1, 1) = +TraceBitMap_::DIAGONAL;
-    value(traceMatrix, 2, 1) = +TraceBitMap_::DIAGONAL;
-    value(traceMatrix, 3, 1) = +TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::HORIZONTAL;
+    value(traceMatrix, 0, 1) = +TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 1, 1) = +TraceBitMap_<>::DIAGONAL;
+    value(traceMatrix, 2, 1) = +TraceBitMap_<>::DIAGONAL;
+    value(traceMatrix, 3, 1) = +TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::HORIZONTAL;
 
-    value(traceMatrix, 0, 2) = +TraceBitMap_::HORIZONTAL;
-    value(traceMatrix, 1, 2) = +TraceBitMap_::VERTICAL_OPEN | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-    value(traceMatrix, 2, 2) = +TraceBitMap_::DIAGONAL;
-    value(traceMatrix, 3, 2) = +TraceBitMap_::VERTICAL | +TraceBitMap_::DIAGONAL;
+    value(traceMatrix, 0, 2) = +TraceBitMap_<>::HORIZONTAL;
+    value(traceMatrix, 1, 2) = +TraceBitMap_<>::VERTICAL_OPEN | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 2, 2) = +TraceBitMap_<>::DIAGONAL;
+    value(traceMatrix, 3, 2) = +TraceBitMap_<>::VERTICAL | +TraceBitMap_<>::DIAGONAL;
 
 
     TDPTraceNavigator navigator;
@@ -426,8 +426,8 @@ SEQAN_DEFINE_TEST(test_align2_traceback_gaps_left_linear_gaps)
     dpScout._maxHostPosition = 11;
     _computeTraceback(target, navigator, dpScout, str0, str1, DPBandConfig<BandOff>(), TDPProfile());
 
-    SEQAN_ASSERT_EQ(target[0], TTraceSegment(0, 1, 2, +TraceBitMap_::DIAGONAL));
-    SEQAN_ASSERT_EQ(target[1], TTraceSegment(0, 0, 1, +TraceBitMap_::VERTICAL));
+    SEQAN_ASSERT_EQ(target[0], TTraceSegment(0, 1, 2, +TraceBitMap_<>::DIAGONAL));
+    SEQAN_ASSERT_EQ(target[1], TTraceSegment(0, 0, 1, +TraceBitMap_<>::VERTICAL));
 }
 
 SEQAN_DEFINE_TEST(test_align2_traceback_gaps_right_linear_gaps)
@@ -436,7 +436,7 @@ SEQAN_DEFINE_TEST(test_align2_traceback_gaps_right_linear_gaps)
 
     typedef DPProfile_<GlobalAlignment_<>, LinearGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsRight> > > TDPProfile;
     typedef TraceSegment_<unsigned, unsigned> TTraceSegment;
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPMatrix_<TTraceValue, FullDPMatrix> TTraceMatrix;
 
     typedef DPMatrixNavigator_<TTraceMatrix, DPTraceMatrix<TracebackOn<TracebackConfig_<CompleteTrace, GapsRight> > >, NavigateColumnWise> TDPTraceNavigator;
@@ -449,20 +449,20 @@ SEQAN_DEFINE_TEST(test_align2_traceback_gaps_right_linear_gaps)
 
     resize(traceMatrix);
 
-    value(traceMatrix, 0, 0) = +TraceBitMap_::NONE;
-    value(traceMatrix, 1, 0) = +TraceBitMap_::VERTICAL_OPEN | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-    value(traceMatrix, 2, 0) = +TraceBitMap_::VERTICAL | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-    value(traceMatrix, 3, 0) = +TraceBitMap_::VERTICAL | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 0, 0) = +TraceBitMap_<>::NONE;
+    value(traceMatrix, 1, 0) = +TraceBitMap_<>::VERTICAL_OPEN | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 2, 0) = +TraceBitMap_<>::VERTICAL | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 3, 0) = +TraceBitMap_<>::VERTICAL | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
 
-    value(traceMatrix, 0, 1) = +TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 1, 1) = +TraceBitMap_::DIAGONAL;
-    value(traceMatrix, 2, 1) = +TraceBitMap_::DIAGONAL;
-    value(traceMatrix, 3, 1) = +TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 0, 1) = +TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 1, 1) = +TraceBitMap_<>::DIAGONAL;
+    value(traceMatrix, 2, 1) = +TraceBitMap_<>::DIAGONAL;
+    value(traceMatrix, 3, 1) = +TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
 
-    value(traceMatrix, 0, 2) = +TraceBitMap_::HORIZONTAL | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-    value(traceMatrix, 1, 2) = +TraceBitMap_::VERTICAL_OPEN | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-    value(traceMatrix, 2, 2) = +TraceBitMap_::DIAGONAL;
-    value(traceMatrix, 3, 2) = +TraceBitMap_::VERTICAL | +TraceBitMap_::DIAGONAL | +TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 0, 2) = +TraceBitMap_<>::HORIZONTAL | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+    value(traceMatrix, 1, 2) = +TraceBitMap_<>::VERTICAL_OPEN | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+    value(traceMatrix, 2, 2) = +TraceBitMap_<>::DIAGONAL;
+    value(traceMatrix, 3, 2) = +TraceBitMap_<>::VERTICAL | +TraceBitMap_<>::DIAGONAL | +TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
 
 
     TDPTraceNavigator navigator;
@@ -475,8 +475,8 @@ SEQAN_DEFINE_TEST(test_align2_traceback_gaps_right_linear_gaps)
     dpScout._maxHostPosition = 11;
     _computeTraceback(target, navigator, dpScout, str0, str1, DPBandConfig<BandOff>(), TDPProfile());
 
-    SEQAN_ASSERT_EQ(target[0], TTraceSegment(2, 2, 1, +TraceBitMap_::VERTICAL));
-    SEQAN_ASSERT_EQ(target[1], TTraceSegment(0, 0, 2, +TraceBitMap_::DIAGONAL));
+    SEQAN_ASSERT_EQ(target[0], TTraceSegment(2, 2, 1, +TraceBitMap_<>::VERTICAL));
+    SEQAN_ASSERT_EQ(target[1], TTraceSegment(0, 0, 2, +TraceBitMap_<>::DIAGONAL));
 }
 
 SEQAN_DEFINE_TEST(test_align2_traceback_gaps_left_affine_gaps)
@@ -485,7 +485,7 @@ SEQAN_DEFINE_TEST(test_align2_traceback_gaps_left_affine_gaps)
 
     typedef DPProfile_<GlobalAlignment_<>, AffineGaps, TracebackOn<> > TDPProfile;
     typedef TraceSegment_<unsigned, unsigned> TTraceSegment;
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPMatrix_<TTraceValue, FullDPMatrix> TTraceMatrix;
 
     typedef DPMatrixNavigator_<TTraceMatrix, DPTraceMatrix<TracebackOn<> >, NavigateColumnWise> TDPTraceNavigator;
@@ -500,20 +500,20 @@ SEQAN_DEFINE_TEST(test_align2_traceback_gaps_left_affine_gaps)
 
         resize(traceMatrix);
 
-        value(traceMatrix, 0, 0) = TraceBitMap_::NONE;
-        value(traceMatrix, 1, 0) = TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-        value(traceMatrix, 2, 0) = TraceBitMap_::VERTICAL;
-        value(traceMatrix, 3, 0) = TraceBitMap_::VERTICAL;
+        value(traceMatrix, 0, 0) = TraceBitMap_<>::NONE;
+        value(traceMatrix, 1, 0) = TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+        value(traceMatrix, 2, 0) = TraceBitMap_<>::VERTICAL;
+        value(traceMatrix, 3, 0) = TraceBitMap_<>::VERTICAL;
 
-        value(traceMatrix, 0, 1) = TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-        value(traceMatrix, 1, 1) = TraceBitMap_::DIAGONAL;
-        value(traceMatrix, 2, 1) = TraceBitMap_::DIAGONAL;
-        value(traceMatrix, 3, 1) = TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::HORIZONTAL;
+        value(traceMatrix, 0, 1) = TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+        value(traceMatrix, 1, 1) = TraceBitMap_<>::DIAGONAL;
+        value(traceMatrix, 2, 1) = TraceBitMap_<>::DIAGONAL;
+        value(traceMatrix, 3, 1) = TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::HORIZONTAL;
 
-        value(traceMatrix, 0, 2) = TraceBitMap_::HORIZONTAL;
-        value(traceMatrix, 1, 2) = TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-        value(traceMatrix, 2, 2) = TraceBitMap_::DIAGONAL;
-        value(traceMatrix, 3, 2) = TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::DIAGONAL;
+        value(traceMatrix, 0, 2) = TraceBitMap_<>::HORIZONTAL;
+        value(traceMatrix, 1, 2) = TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+        value(traceMatrix, 2, 2) = TraceBitMap_<>::DIAGONAL;
+        value(traceMatrix, 3, 2) = TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::DIAGONAL;
 
 
         TDPTraceNavigator navigator;
@@ -527,8 +527,8 @@ SEQAN_DEFINE_TEST(test_align2_traceback_gaps_left_affine_gaps)
         _computeTraceback(target, navigator, dpScout, str0, str1, DPBandConfig<BandOff>(), TDPProfile());
 
         // TODO(rmaerker): This is disabled by default for the affine gap costs.
-        SEQAN_ASSERT_EQ(target[0], TTraceSegment(2, 2, 1, +TraceBitMap_::VERTICAL));
-        SEQAN_ASSERT_EQ(target[1], TTraceSegment(0, 0, 2, +TraceBitMap_::DIAGONAL));
+        SEQAN_ASSERT_EQ(target[0], TTraceSegment(2, 2, 1, +TraceBitMap_<>::VERTICAL));
+        SEQAN_ASSERT_EQ(target[1], TTraceSegment(0, 0, 2, +TraceBitMap_<>::DIAGONAL));
     }
 
     {   // Tests inner gaps.
@@ -538,30 +538,30 @@ SEQAN_DEFINE_TEST(test_align2_traceback_gaps_left_affine_gaps)
 
         resize(traceMatrix);
 
-        value(traceMatrix, 0, 0) = TraceBitMap_::NONE;
-        value(traceMatrix, 1, 0) = TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-        value(traceMatrix, 2, 0) = TraceBitMap_::VERTICAL;
-        value(traceMatrix, 3, 0) = TraceBitMap_::VERTICAL;
+        value(traceMatrix, 0, 0) = TraceBitMap_<>::NONE;
+        value(traceMatrix, 1, 0) = TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+        value(traceMatrix, 2, 0) = TraceBitMap_<>::VERTICAL;
+        value(traceMatrix, 3, 0) = TraceBitMap_<>::VERTICAL;
 
-        value(traceMatrix, 0, 1) = TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-        value(traceMatrix, 1, 1) = TraceBitMap_::DIAGONAL;
-        value(traceMatrix, 2, 1) = TraceBitMap_::NONE;
-        value(traceMatrix, 3, 1) = TraceBitMap_::NONE;
+        value(traceMatrix, 0, 1) = TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+        value(traceMatrix, 1, 1) = TraceBitMap_<>::DIAGONAL;
+        value(traceMatrix, 2, 1) = TraceBitMap_<>::NONE;
+        value(traceMatrix, 3, 1) = TraceBitMap_<>::NONE;
 
-        value(traceMatrix, 0, 2) = TraceBitMap_::HORIZONTAL;
-        value(traceMatrix, 1, 2) = TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-        value(traceMatrix, 2, 2) = TraceBitMap_::DIAGONAL;
-        value(traceMatrix, 3, 2) = TraceBitMap_::NONE;
+        value(traceMatrix, 0, 2) = TraceBitMap_<>::HORIZONTAL;
+        value(traceMatrix, 1, 2) = TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+        value(traceMatrix, 2, 2) = TraceBitMap_<>::DIAGONAL;
+        value(traceMatrix, 3, 2) = TraceBitMap_<>::NONE;
 
-        value(traceMatrix, 0, 3) = TraceBitMap_::HORIZONTAL;
-        value(traceMatrix, 1, 3) = TraceBitMap_::NONE;
-        value(traceMatrix, 2, 3) = TraceBitMap_::DIAGONAL | TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-        value(traceMatrix, 3, 3) = TraceBitMap_::NONE;
+        value(traceMatrix, 0, 3) = TraceBitMap_<>::HORIZONTAL;
+        value(traceMatrix, 1, 3) = TraceBitMap_<>::NONE;
+        value(traceMatrix, 2, 3) = TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+        value(traceMatrix, 3, 3) = TraceBitMap_<>::NONE;
 
-        value(traceMatrix, 0, 4) = TraceBitMap_::HORIZONTAL;
-        value(traceMatrix, 1, 4) = TraceBitMap_::NONE;
-        value(traceMatrix, 2, 4) = TraceBitMap_::NONE;
-        value(traceMatrix, 3, 4) = TraceBitMap_::DIAGONAL;
+        value(traceMatrix, 0, 4) = TraceBitMap_<>::HORIZONTAL;
+        value(traceMatrix, 1, 4) = TraceBitMap_<>::NONE;
+        value(traceMatrix, 2, 4) = TraceBitMap_<>::NONE;
+        value(traceMatrix, 3, 4) = TraceBitMap_<>::DIAGONAL;
 
         TDPTraceNavigator navigator;
         _init(navigator, traceMatrix, DPBandConfig<BandOff>());
@@ -574,9 +574,9 @@ SEQAN_DEFINE_TEST(test_align2_traceback_gaps_left_affine_gaps)
         _computeTraceback(target, navigator, dpScout, str0, str1, DPBandConfig<BandOff>(), TDPProfile());
 
         // TODO(rmaerker): This is disabled by default for the affine gap costs.
-        SEQAN_ASSERT_EQ(target[0], TTraceSegment(2, 1, 2, +TraceBitMap_::DIAGONAL));
-        SEQAN_ASSERT_EQ(target[1], TTraceSegment(1, 1, 1, +TraceBitMap_::HORIZONTAL));
-        SEQAN_ASSERT_EQ(target[2], TTraceSegment(0, 0, 1, +TraceBitMap_::DIAGONAL));
+        SEQAN_ASSERT_EQ(target[0], TTraceSegment(2, 1, 2, +TraceBitMap_<>::DIAGONAL));
+        SEQAN_ASSERT_EQ(target[1], TTraceSegment(1, 1, 1, +TraceBitMap_<>::HORIZONTAL));
+        SEQAN_ASSERT_EQ(target[2], TTraceSegment(0, 0, 1, +TraceBitMap_<>::DIAGONAL));
     }
 
 }
@@ -587,7 +587,7 @@ SEQAN_DEFINE_TEST(test_align2_traceback_gaps_right_affine_gaps)
 
     typedef DPProfile_<GlobalAlignment_<>, AffineGaps, TracebackOn<TracebackConfig_<CompleteTrace, GapsRight> > > TDPProfile;
     typedef TraceSegment_<unsigned, unsigned> TTraceSegment;
-    typedef typename TraceBitMap_::TTraceValue TTraceValue;
+    typedef typename TraceBitMap_<>::Type TTraceValue;
     typedef DPMatrix_<TTraceValue, FullDPMatrix> TTraceMatrix;
 
     typedef DPMatrixNavigator_<TTraceMatrix, DPTraceMatrix<TracebackOn<TracebackConfig_<CompleteTrace, GapsRight> > >, NavigateColumnWise> TDPTraceNavigator;
@@ -601,20 +601,20 @@ SEQAN_DEFINE_TEST(test_align2_traceback_gaps_right_affine_gaps)
 
         resize(traceMatrix);
 
-        value(traceMatrix, 0, 0) = TraceBitMap_::NONE;
-        value(traceMatrix, 1, 0) = TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-        value(traceMatrix, 2, 0) = TraceBitMap_::VERTICAL;
-        value(traceMatrix, 3, 0) = TraceBitMap_::VERTICAL;
+        value(traceMatrix, 0, 0) = TraceBitMap_<>::NONE;
+        value(traceMatrix, 1, 0) = TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+        value(traceMatrix, 2, 0) = TraceBitMap_<>::VERTICAL;
+        value(traceMatrix, 3, 0) = TraceBitMap_<>::VERTICAL;
 
-        value(traceMatrix, 0, 1) = TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-        value(traceMatrix, 1, 1) = TraceBitMap_::DIAGONAL;
-        value(traceMatrix, 2, 1) = TraceBitMap_::DIAGONAL;
-        value(traceMatrix, 3, 1) = TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::HORIZONTAL;
+        value(traceMatrix, 0, 1) = TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+        value(traceMatrix, 1, 1) = TraceBitMap_<>::DIAGONAL;
+        value(traceMatrix, 2, 1) = TraceBitMap_<>::DIAGONAL;
+        value(traceMatrix, 3, 1) = TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::HORIZONTAL;
 
-        value(traceMatrix, 0, 2) = TraceBitMap_::HORIZONTAL;
-        value(traceMatrix, 1, 2) = TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-        value(traceMatrix, 2, 2) = TraceBitMap_::DIAGONAL;
-        value(traceMatrix, 3, 2) = TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_::DIAGONAL;
+        value(traceMatrix, 0, 2) = TraceBitMap_<>::HORIZONTAL;
+        value(traceMatrix, 1, 2) = TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+        value(traceMatrix, 2, 2) = TraceBitMap_<>::DIAGONAL;
+        value(traceMatrix, 3, 2) = TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX | TraceBitMap_<>::DIAGONAL;
 
 
         TDPTraceNavigator navigator;
@@ -627,8 +627,8 @@ SEQAN_DEFINE_TEST(test_align2_traceback_gaps_right_affine_gaps)
         dpScout._maxHostPosition = 11;
         _computeTraceback(target, navigator, dpScout, str0, str1, DPBandConfig<BandOff>(), TDPProfile());
 
-        SEQAN_ASSERT_EQ(target[0], TTraceSegment(2, 2, 1, +TraceBitMap_::VERTICAL));
-        SEQAN_ASSERT_EQ(target[1], TTraceSegment(0, 0, 2, +TraceBitMap_::DIAGONAL));
+        SEQAN_ASSERT_EQ(target[0], TTraceSegment(2, 2, 1, +TraceBitMap_<>::VERTICAL));
+        SEQAN_ASSERT_EQ(target[1], TTraceSegment(0, 0, 2, +TraceBitMap_<>::DIAGONAL));
     }
 
     {   // Test inner gaps.
@@ -638,30 +638,30 @@ SEQAN_DEFINE_TEST(test_align2_traceback_gaps_right_affine_gaps)
 
         resize(traceMatrix);
 
-        value(traceMatrix, 0, 0) = TraceBitMap_::NONE;
-        value(traceMatrix, 1, 0) = TraceBitMap_::VERTICAL_OPEN | TraceBitMap_::MAX_FROM_VERTICAL_MATRIX;
-        value(traceMatrix, 2, 0) = TraceBitMap_::VERTICAL;
-        value(traceMatrix, 3, 0) = TraceBitMap_::VERTICAL;
+        value(traceMatrix, 0, 0) = TraceBitMap_<>::NONE;
+        value(traceMatrix, 1, 0) = TraceBitMap_<>::VERTICAL_OPEN | TraceBitMap_<>::MAX_FROM_VERTICAL_MATRIX;
+        value(traceMatrix, 2, 0) = TraceBitMap_<>::VERTICAL;
+        value(traceMatrix, 3, 0) = TraceBitMap_<>::VERTICAL;
 
-        value(traceMatrix, 0, 1) = TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-        value(traceMatrix, 1, 1) = TraceBitMap_::DIAGONAL;
-        value(traceMatrix, 2, 1) = TraceBitMap_::NONE;
-        value(traceMatrix, 3, 1) = TraceBitMap_::NONE;
+        value(traceMatrix, 0, 1) = TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+        value(traceMatrix, 1, 1) = TraceBitMap_<>::DIAGONAL;
+        value(traceMatrix, 2, 1) = TraceBitMap_<>::NONE;
+        value(traceMatrix, 3, 1) = TraceBitMap_<>::NONE;
 
-        value(traceMatrix, 0, 2) = TraceBitMap_::HORIZONTAL;
-        value(traceMatrix, 1, 2) = TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-        value(traceMatrix, 2, 2) = TraceBitMap_::DIAGONAL;
-        value(traceMatrix, 3, 2) = TraceBitMap_::NONE;
+        value(traceMatrix, 0, 2) = TraceBitMap_<>::HORIZONTAL;
+        value(traceMatrix, 1, 2) = TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+        value(traceMatrix, 2, 2) = TraceBitMap_<>::DIAGONAL;
+        value(traceMatrix, 3, 2) = TraceBitMap_<>::NONE;
 
-        value(traceMatrix, 0, 3) = TraceBitMap_::HORIZONTAL;
-        value(traceMatrix, 1, 3) = TraceBitMap_::NONE;
-        value(traceMatrix, 2, 3) = TraceBitMap_::DIAGONAL | TraceBitMap_::HORIZONTAL_OPEN | TraceBitMap_::MAX_FROM_HORIZONTAL_MATRIX;
-        value(traceMatrix, 3, 3) = TraceBitMap_::NONE;
+        value(traceMatrix, 0, 3) = TraceBitMap_<>::HORIZONTAL;
+        value(traceMatrix, 1, 3) = TraceBitMap_<>::NONE;
+        value(traceMatrix, 2, 3) = TraceBitMap_<>::DIAGONAL | TraceBitMap_<>::HORIZONTAL_OPEN | TraceBitMap_<>::MAX_FROM_HORIZONTAL_MATRIX;
+        value(traceMatrix, 3, 3) = TraceBitMap_<>::NONE;
 
-        value(traceMatrix, 0, 4) = TraceBitMap_::HORIZONTAL;
-        value(traceMatrix, 1, 4) = TraceBitMap_::NONE;
-        value(traceMatrix, 2, 4) = TraceBitMap_::NONE;
-        value(traceMatrix, 3, 4) = TraceBitMap_::DIAGONAL;
+        value(traceMatrix, 0, 4) = TraceBitMap_<>::HORIZONTAL;
+        value(traceMatrix, 1, 4) = TraceBitMap_<>::NONE;
+        value(traceMatrix, 2, 4) = TraceBitMap_<>::NONE;
+        value(traceMatrix, 3, 4) = TraceBitMap_<>::DIAGONAL;
 
         TDPTraceNavigator navigator;
         _init(navigator, traceMatrix, DPBandConfig<BandOff>());
@@ -674,9 +674,9 @@ SEQAN_DEFINE_TEST(test_align2_traceback_gaps_right_affine_gaps)
         _computeTraceback(target, navigator, dpScout, str0, str1, DPBandConfig<BandOff>(), TDPProfile());
 
         // TODO(rmaerker): This is disabled by default for the affine gap costs.
-        SEQAN_ASSERT_EQ(target[0], TTraceSegment(3, 2, 1, +TraceBitMap_::DIAGONAL));
-        SEQAN_ASSERT_EQ(target[1], TTraceSegment(2, 2, 1, +TraceBitMap_::HORIZONTAL));
-        SEQAN_ASSERT_EQ(target[2], TTraceSegment(0, 0, 2, +TraceBitMap_::DIAGONAL));
+        SEQAN_ASSERT_EQ(target[0], TTraceSegment(3, 2, 1, +TraceBitMap_<>::DIAGONAL));
+        SEQAN_ASSERT_EQ(target[1], TTraceSegment(2, 2, 1, +TraceBitMap_<>::HORIZONTAL));
+        SEQAN_ASSERT_EQ(target[2], TTraceSegment(0, 0, 2, +TraceBitMap_<>::DIAGONAL));
     }
 }
 
diff --git a/tests/align_split/test_align_split.cpp b/tests/align_split/test_align_split.cpp
index b5d18f2..051054c 100644
--- a/tests/align_split/test_align_split.cpp
+++ b/tests/align_split/test_align_split.cpp
@@ -56,5 +56,7 @@ SEQAN_BEGIN_TESTSUITE(test_align_split)
     SEQAN_CALL_TEST(test_align_split_overlapping_reads_in_reference_gaps_banded);
     SEQAN_CALL_TEST(test_align_split_overlapping_contigs_in_reference_gaps_banded);
     SEQAN_CALL_TEST(test_align_split_insertion_in_reference_gaps_banded);
+
+    SEQAN_CALL_TEST(test_align_split_issue_1679);
 }
 SEQAN_END_TESTSUITE
diff --git a/tests/align_split/test_align_split.h b/tests/align_split/test_align_split.h
index 13bf0b4..cd44aca 100644
--- a/tests/align_split/test_align_split.h
+++ b/tests/align_split/test_align_split.h
@@ -85,10 +85,10 @@ SEQAN_DEFINE_TEST(test_align_split_overlapping_reads_in_reference_align_unbanded
 
     SEQAN_ASSERT_EQ(seqan::CharString("GCTAGTAGGCAGTCAGCGCCAT"), row(alignR, 0));
     SEQAN_ASSERT_EQ(seqan::CharString("GCTAGTAGGCAGTCAGCGACAT"), row(alignR, 1));
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignR, 0)), 24);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignR, 1)), 24);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignR, 0)), 46);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignR, 1)), 46);
+    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignR, 0)), 23);
+    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignR, 1)), 1);
+    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignR, 0)), 45);
+    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignR, 1)), 23);
 }
 
 SEQAN_DEFINE_TEST(test_align_split_overlapping_contigs_in_reference_align_unbanded)
@@ -127,17 +127,8 @@ SEQAN_DEFINE_TEST(test_align_split_overlapping_contigs_in_reference_align_unband
 
     SEQAN_ASSERT_EQ(seqan::CharString("AGCATGTTAGATAAGATAGCTGT"), row(alignL, 0));
     SEQAN_ASSERT_EQ(seqan::CharString("AGCCTGTTAGATAAGATAGCTGT"), row(alignL, 1));
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignL, 0)), 0);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignL, 1)), 0);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignL, 0)), 23);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignL, 1)), 23);
-
     SEQAN_ASSERT_EQ(seqan::CharString("GCTAGTAGGCAGTCAGCGCCAT"), row(alignR, 0));
     SEQAN_ASSERT_EQ(seqan::CharString("GCTAGTAGGCAGTCAGCGACAT"), row(alignR, 1));
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignR, 0)), 68);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignR, 1)), 68);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignR, 0)), 90);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignR, 1)), 90);
 }
 
 SEQAN_DEFINE_TEST(test_align_split_insertion_in_reference_align_unbanded)
@@ -175,17 +166,8 @@ SEQAN_DEFINE_TEST(test_align_split_insertion_in_reference_align_unbanded)
 
     SEQAN_ASSERT_EQ(seqan::CharString("AGCATTTTAGATAAGATAG"), row(alignL, 0));
     SEQAN_ASSERT_EQ(seqan::CharString("AGCATGTTAGATAAGATAG"), row(alignL, 1));
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignL, 0)), 0);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignL, 1)), 0);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignL, 0)), 19);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignL, 1)), 19);
-
     SEQAN_ASSERT_EQ(seqan::CharString("CTGTGCTAGTAGGCAGTCAGCGCCTT"), row(alignR, 0));
     SEQAN_ASSERT_EQ(seqan::CharString("CTGTGCTAGTAGGCAGTCAGCGCCAT"), row(alignR, 1));
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignR, 0)), 30);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignR, 1)), 30);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignR, 0)), 56);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignR, 1)), 56);
 }
 
 SEQAN_DEFINE_TEST(test_align_split_overlapping_reads_in_reference_gaps_unbanded)
@@ -213,17 +195,8 @@ SEQAN_DEFINE_TEST(test_align_split_overlapping_reads_in_reference_gaps_unbanded)
 
     SEQAN_ASSERT_EQ(seqan::CharString("AGCATGTTAGATAAGATAGCTGT"), gapsHL);
     SEQAN_ASSERT_EQ(seqan::CharString("AGCCTGTTAGATAAGATAGCTGT"), gapsVL);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsHL), 0);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsVL), 0);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsHL), 23);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsVL), 23);
-
     SEQAN_ASSERT_EQ(seqan::CharString("GCTAGTAGGCAGTCAGCGCCAT"), gapsHR);
     SEQAN_ASSERT_EQ(seqan::CharString("GCTAGTAGGCAGTCAGCGACAT"), gapsVR);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsHR), 24);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsVR), 24);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsHR), 46);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsVR), 46);
 }
 
 SEQAN_DEFINE_TEST(test_align_split_overlapping_contigs_in_reference_gaps_unbanded)
@@ -251,17 +224,8 @@ SEQAN_DEFINE_TEST(test_align_split_overlapping_contigs_in_reference_gaps_unbande
 
     SEQAN_ASSERT_EQ(seqan::CharString("AGCATGTTAGATAAGATAGCTGT"), gapsHL);
     SEQAN_ASSERT_EQ(seqan::CharString("AGCCTGTTAGATAAGATAGCTGT"), gapsVL);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsHL), 0);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsVL), 0);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsHL), 23);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsVL), 23);
-
     SEQAN_ASSERT_EQ(seqan::CharString("GCTAGTAGGCAGTCAGCGCCAT"), gapsHR);
     SEQAN_ASSERT_EQ(seqan::CharString("GCTAGTAGGCAGTCAGCGACAT"), gapsVR);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsHR), 68);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsVR), 68);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsHR), 90);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsVR), 90);
 }
 
 SEQAN_DEFINE_TEST(test_align_split_insertion_in_reference_gaps_unbanded)
@@ -300,17 +264,8 @@ SEQAN_DEFINE_TEST(test_align_split_insertion_in_reference_gaps_unbanded)
 
     SEQAN_ASSERT_EQ(seqan::CharString("AGCATTTTAGATAAGATAG"), gapsHL);
     SEQAN_ASSERT_EQ(seqan::CharString("AGCATGTTAGATAAGATAG"), gapsVL);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsHL), 0);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsVL), 0);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsHL), 19);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsVL), 19);
-
     SEQAN_ASSERT_EQ(seqan::CharString("CTGTGCTAGTAGGCAGTCAGCGCCTT"), gapsHR);
     SEQAN_ASSERT_EQ(seqan::CharString("CTGTGCTAGTAGGCAGTCAGCGCCAT"), gapsVR);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsHR), 30);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsVR), 30);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsHR), 56);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsVR), 56);
 }
 
 SEQAN_DEFINE_TEST(test_align_split_overlapping_reads_in_reference_align_banded)
@@ -351,17 +306,8 @@ SEQAN_DEFINE_TEST(test_align_split_overlapping_reads_in_reference_align_banded)
 
     SEQAN_ASSERT_EQ(seqan::CharString("AGCATGTTAGATAAGATAGCTGT"), row(alignL, 0));
     SEQAN_ASSERT_EQ(seqan::CharString("AGCCTGTTAGATAAGATAGCTGT"), row(alignL, 1));
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignL, 0)), 0);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignL, 1)), 0);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignL, 0)), 23);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignL, 1)), 23);
-
     SEQAN_ASSERT_EQ(seqan::CharString("GCTAGTAGGCAGTCAGCGCCAT"), row(alignR, 0));
     SEQAN_ASSERT_EQ(seqan::CharString("GCTAGTAGGCAGTCAGCGACAT"), row(alignR, 1));
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignR, 0)), 24);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignR, 1)), 24);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignR, 0)), 46);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignR, 1)), 46);
 }
 
 SEQAN_DEFINE_TEST(test_align_split_overlapping_contigs_in_reference_align_banded)
@@ -400,17 +346,8 @@ SEQAN_DEFINE_TEST(test_align_split_overlapping_contigs_in_reference_align_banded
 
     SEQAN_ASSERT_EQ(seqan::CharString("AGCATGTTAGATAAGATAGCTGT"), row(alignL, 0));
     SEQAN_ASSERT_EQ(seqan::CharString("AGCCTGTTAGATAAGATAGCTGT"), row(alignL, 1));
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignL, 0)), 0);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignL, 1)), 0);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignL, 0)), 23);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignL, 1)), 23);
-
     SEQAN_ASSERT_EQ(seqan::CharString("GCTAGTAGGCAGTCAGCGCCAT"), row(alignR, 0));
     SEQAN_ASSERT_EQ(seqan::CharString("GCTAGTAGGCAGTCAGCGACAT"), row(alignR, 1));
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignR, 0)), 68);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignR, 1)), 68);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignR, 0)), 90);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignR, 1)), 90);
 }
 
 SEQAN_DEFINE_TEST(test_align_split_insertion_in_reference_align_banded)
@@ -448,17 +385,8 @@ SEQAN_DEFINE_TEST(test_align_split_insertion_in_reference_align_banded)
 
     SEQAN_ASSERT_EQ(seqan::CharString("AGCATTTTAGATAAGATAG"), row(alignL, 0));
     SEQAN_ASSERT_EQ(seqan::CharString("AGCATGTTAGATAAGATAG"), row(alignL, 1));
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignL, 0)), 0);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignL, 1)), 0);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignL, 0)), 19);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignL, 1)), 19);
-
     SEQAN_ASSERT_EQ(seqan::CharString("CTGTGCTAGTAGGCAGTCAGCGCCTT"), row(alignR, 0));
     SEQAN_ASSERT_EQ(seqan::CharString("CTGTGCTAGTAGGCAGTCAGCGCCAT"), row(alignR, 1));
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignR, 0)), 30);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(row(alignR, 1)), 30);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignR, 0)), 56);
-    SEQAN_ASSERT_EQ(clippedEndPosition(row(alignR, 1)), 56);
 }
 
 SEQAN_DEFINE_TEST(test_align_split_overlapping_reads_in_reference_gaps_banded)
@@ -486,17 +414,8 @@ SEQAN_DEFINE_TEST(test_align_split_overlapping_reads_in_reference_gaps_banded)
 
     SEQAN_ASSERT_EQ(seqan::CharString("AGCATGTTAGATAAGATAGCTGT"), gapsHL);
     SEQAN_ASSERT_EQ(seqan::CharString("AGCCTGTTAGATAAGATAGCTGT"), gapsVL);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsHL), 0);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsVL), 0);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsHL), 23);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsVL), 23);
-
     SEQAN_ASSERT_EQ(seqan::CharString("GCTAGTAGGCAGTCAGCGCCAT"), gapsHR);
     SEQAN_ASSERT_EQ(seqan::CharString("GCTAGTAGGCAGTCAGCGACAT"), gapsVR);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsHR), 24);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsVR), 24);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsHR), 46);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsVR), 46);
 }
 
 SEQAN_DEFINE_TEST(test_align_split_overlapping_contigs_in_reference_gaps_banded)
@@ -524,17 +443,8 @@ SEQAN_DEFINE_TEST(test_align_split_overlapping_contigs_in_reference_gaps_banded)
 
     SEQAN_ASSERT_EQ(seqan::CharString("AGCATGTTAGATAAGATAGCTGT"), gapsHL);
     SEQAN_ASSERT_EQ(seqan::CharString("AGCCTGTTAGATAAGATAGCTGT"), gapsVL);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsHL), 0);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsVL), 0);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsHL), 23);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsVL), 23);
-
     SEQAN_ASSERT_EQ(seqan::CharString("GCTAGTAGGCAGTCAGCGCCAT"), gapsHR);
     SEQAN_ASSERT_EQ(seqan::CharString("GCTAGTAGGCAGTCAGCGACAT"), gapsVR);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsHR), 68);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsVR), 68);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsHR), 90);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsVR), 90);
 }
 
 SEQAN_DEFINE_TEST(test_align_split_insertion_in_reference_gaps_banded)
@@ -573,17 +483,79 @@ SEQAN_DEFINE_TEST(test_align_split_insertion_in_reference_gaps_banded)
 
     SEQAN_ASSERT_EQ(seqan::CharString("AGCATTTTAGATAAGATAG"), gapsHL);
     SEQAN_ASSERT_EQ(seqan::CharString("AGCATGTTAGATAAGATAG"), gapsVL);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsHL), 0);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsVL), 0);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsHL), 19);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsVL), 19);
-
     SEQAN_ASSERT_EQ(seqan::CharString("CTGTGCTAGTAGGCAGTCAGCGCCTT"), gapsHR);
     SEQAN_ASSERT_EQ(seqan::CharString("CTGTGCTAGTAGGCAGTCAGCGCCAT"), gapsVR);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsHR), 30);
-    SEQAN_ASSERT_EQ(clippedBeginPosition(gapsVR), 30);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsHR), 56);
-    SEQAN_ASSERT_EQ(clippedEndPosition(gapsVR), 56);
+}
+
+SEQAN_DEFINE_TEST(test_align_split_issue_1679)
+{
+    using namespace seqan;
+
+    // Scenario 1:
+    DnaString refLeft  = "TTTTTTTTTTTTGAGCCGATTTTTTTT";
+    DnaString refRight = "CCCCCCCCCCCCCCCCGGACCGTTTTTTTTTTTTTTTTTTTTTTT";
+    DnaString read     = "GAGCCGA" "GGACCG";
+
+    Gaps<DnaString> refGapsLeft;
+    Gaps<DnaString> refGapsRight;
+    Gaps<DnaString> readGapsLeft;
+    Gaps<DnaString> readGapsRight;
+
+    setSource(refGapsLeft, refLeft);
+    setSource(refGapsRight, refRight);
+    setSource(readGapsLeft, read);
+    setSource(readGapsRight, read);
+
+    Score<int> scoring(1, -3, -4, -5);
+
+    int splitScore = splitAlignment(readGapsLeft, refGapsLeft, readGapsRight, refGapsRight, scoring,
+                                    AlignConfig<false, true, true, true>());
+
+    SEQAN_ASSERT_EQ(splitScore, 13);
+    SEQAN_ASSERT_EQ(readGapsLeft, "------------GAGCCGA");
+    SEQAN_ASSERT_EQ(refGapsLeft,  "TTTTTTTTTTTTGAGCCGA");
+    SEQAN_ASSERT_EQ(readGapsRight, "GGACCG-----------------------");
+    SEQAN_ASSERT_EQ(refGapsRight,  "GGACCGTTTTTTTTTTTTTTTTTTTTTTT");
+
+    // Scenario 2:
+    refLeft  = "AGGCGCACGCCACCACCAAGCCCGGCTAAAGTTTTGTGTTTTTAGTATAGATGGGGTTTCGCCATGTTGGCCTGGCTGGTCTCGAATTCCTGACCTCAGGTGATCCACCCGCCCTGGCCTCCCAAAG";
+    read     = "AGGGGTTTCGCCATGTTGGCCTGGCTGGTCTCGAATTCCTGACCTCAGGTGATCCACCCGCCCTGGCCTCCCAAAGTGCTGGGATTACAGGCCTGAGCCGCTGCACCCGGCCCAGAGGCATTTATTTAAAATGTGCAATAAAAGTGTTCTG";
+    refRight = "AGAGACAGGGTTTTACCATGTTGGCCAGGCTGGTCTTGAGCTCCTGACCTCAGGTGATCCACCCGCCCTGGCCTCCCAAAGTGCTGGGATTACAGGCCTGAGCCGCTGCACCCGGCCCAGAGGCATTTATTTAAAATGTGCAATAAAAGTGTTCTGAGCTTCCCTTACGTACA";
+
+    setSource(refGapsLeft, refLeft);
+    setSource(refGapsRight, refRight);
+    setSource(readGapsLeft, read);
+    setSource(readGapsRight, read);
+
+    splitScore = splitAlignment(readGapsLeft, refGapsLeft, readGapsRight, refGapsRight, scoring,
+                                AlignConfig<false, true, true, true>());
+
+    SEQAN_ASSERT_EQ(splitScore, 147);
+    SEQAN_ASSERT_EQ(refGapsLeft, "AGGCGCACGCCACCACCAAGCCCGGCTAAAGTTTTGTGTTTTTAGTATAGATGGGGTTTCGCCATGTTGGCCTGGCTGGTCTCGAAT");
+    SEQAN_ASSERT_EQ(readGapsLeft, "---------------------------------------------------AGGGGTTTCGCCATGTTGGCCTGGCTGGTCTCGAAT");
+
+    SEQAN_ASSERT_EQ(refGapsRight,  "TCCTGACCTCAGGTGATCCACCCGCCCTGGCCTCCCAAAGTGCTGGGATTACAGGCCTGAGCCGCTGCACCCGGCCCAGAGGCATTTATTTAAAATGTGCAATAAAAGTGTTCTGAGCTTCCCTTACGTACA");
+    SEQAN_ASSERT_EQ(readGapsRight, "TCCTGACCTCAGGTGATCCACCCGCCCTGGCCTCCCAAAGTGCTGGGATTACAGGCCTGAGCCGCTGCACCCGGCCCAGAGGCATTTATTTAAAATGTGCAATAAAAGTGTTCTG-----------------");
+
+    // Scenario 3:
+    read     =           "ATTTTTTTTTTTTTAAATTCTAATATTATGAAGAA";
+    refLeft  = "ACACCCGGCTATTTTTTTTTTTTTTTTTT";
+    refRight =       "TTCTTCTTCATTTATCTGAAATTCTAATATGATGAAGAATCCTGCTT";
+
+    setSource(refGapsLeft, refLeft);
+    setSource(refGapsRight, refRight);
+    setSource(readGapsLeft, read);
+    setSource(readGapsRight, read);
+
+    splitScore = splitAlignment(readGapsLeft, refGapsLeft, readGapsRight, refGapsRight, scoring,
+                                AlignConfig<false, true, true, true>());
+
+    SEQAN_ASSERT_EQ(splitScore, 31);
+    SEQAN_ASSERT_EQ(readGapsLeft, "----------ATTTTTTTTTTTTT");
+    SEQAN_ASSERT_EQ(refGapsLeft,  "ACACCCGGCTATTTTTTTTTTTTT");
+
+    SEQAN_ASSERT_EQ(readGapsRight, "AAATTCTAATATTATGAAGAA--------");
+    SEQAN_ASSERT_EQ(refGapsRight,  "AAATTCTAATATGATGAAGAATCCTGCTT");
 }
 
 #endif  // SEQAN_TESTS_ALIGN_SPLIT_TEST_ALIGN_SPLIT_H_
diff --git a/tests/arg_parse/test_arg_parse_ctd_support.h b/tests/arg_parse/test_arg_parse_ctd_support.h
index 3ebba49..f703aa4 100644
--- a/tests/arg_parse/test_arg_parse_ctd_support.h
+++ b/tests/arg_parse/test_arg_parse_ctd_support.h
@@ -66,7 +66,7 @@ SEQAN_DEFINE_TEST(test_arg_parse_ctd_support)
     setValidValues(parser, "f", "fasta");
     addOption(parser, seqan::ArgParseOption("o", "out", "set an output file", seqan::ArgParseArgument::OUTPUT_FILE));
     setValidValues(parser, "o", "sam");
-    addOption(parser, seqan::ArgParseOption("ip", "input-prefix-option", "set an input prefix", seqan::ArgParseArgument::INPUTPREFIX));
+    addOption(parser, seqan::ArgParseOption("ip", "input-prefix-option", "set an input prefix", seqan::ArgParseArgument::INPUT_PREFIX));
     setValidValues(parser, "ip", "btx");
     addOption(parser, seqan::ArgParseOption("op", "output-prefix-option", "set an output prefix", seqan::ArgParseArgument::OUTPUT_PREFIX));
     setValidValues(parser, "output-prefix-option", "blub");
diff --git a/tests/basic/CMakeLists.txt b/tests/basic/CMakeLists.txt
index 7f2f54e..ba294ba 100644
--- a/tests/basic/CMakeLists.txt
+++ b/tests/basic/CMakeLists.txt
@@ -127,24 +127,6 @@ add_executable (
   test_basic_simd_vector.h)
 target_link_libraries (test_basic_simd_vector ${SEQAN_LIBRARIES})
 
-if (MSVC)
-  # Disable vectorization support on windows for now.
-  # SET (_FLAGS "/arch:AVX")
-else (MSVC)
-  SET (_FLAGS "-march=native")
-  if (CMAKE_COMPILER_IS_GNUCXX)
-    SET (_FLAGS "${_FLAGS} -fabi-version=6")
-    if (APPLE)
-      #exec_program("/usr/sbin/sysctl -n hw.optional.avx2_0" OUTPUT_VARIABLE _HAS_AVX2)
-      #if (NOT "${_HAS_AVX2}" EQUAL "1")
-      SET (_FLAGS "${_FLAGS} -mno-avx")
-      #endif ()
-    endif (APPLE)
-  endif (CMAKE_COMPILER_IS_GNUCXX)
-  SET_TARGET_PROPERTIES(test_basic_simd_vector PROPERTIES COMPILE_FLAGS ${_FLAGS})
-endif (MSVC)
-
-
 # Add CXX flags found by find_package (SeqAn).
 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SEQAN_CXX_FLAGS}")
 
diff --git a/tests/basic/test_basic_alphabet_adapt_builtins.h b/tests/basic/test_basic_alphabet_adapt_builtins.h
index 1829a15..b0e6705 100644
--- a/tests/basic/test_basic_alphabet_adapt_builtins.h
+++ b/tests/basic/test_basic_alphabet_adapt_builtins.h
@@ -218,9 +218,11 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_adapt_builtins_concepts_int)
     {
         int b = 0, c = 42;
 
-        SEQAN_ASSERT_EQ(minValue(int()), -(int)2147483648u);
-        SEQAN_ASSERT_EQ(minValue<int>(), -(int)2147483648u);
-        SEQAN_ASSERT_EQ(+(MinValue<int>::VALUE), -(int)2147483648u);
+        // note(marehr): -2147483648 would produce the compiler warning C4146:
+        // unary minus operator applied to unsigned type, result still unsigned
+        SEQAN_ASSERT_EQ(minValue(int()), -2147483647 - 1);
+        SEQAN_ASSERT_EQ(minValue<int>(), -2147483647 - 1);
+        SEQAN_ASSERT_EQ(+(MinValue<int>::VALUE), -2147483647 - 1);
         SEQAN_ASSERT_EQ(maxValue(int()), 2147483647);
         SEQAN_ASSERT_EQ(maxValue<int>(), 2147483647);
         SEQAN_ASSERT_EQ(+(MaxValue<int>::VALUE), 2147483647);
@@ -501,9 +503,11 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_adapt_builtins_concepts_int32)
     {
         int32_t b = 0, c = 42;
 
-        SEQAN_ASSERT_EQ(minValue(int32_t()), -(int)2147483648u);
-        SEQAN_ASSERT_EQ(minValue<int32_t>(), -(int)2147483648u);
-        SEQAN_ASSERT_EQ(+(MinValue<int32_t>::VALUE), -(int)2147483648u);
+        // note(marehr): -2147483648 would produce the compiler warning C4146:
+        // unary minus operator applied to unsigned type, result still unsigned
+        SEQAN_ASSERT_EQ(minValue(int32_t()), -2147483647 - 1);
+        SEQAN_ASSERT_EQ(minValue<int32_t>(), -2147483647 - 1);
+        SEQAN_ASSERT_EQ(+(MinValue<int32_t>::VALUE), -2147483647 - 1);
         SEQAN_ASSERT_EQ(maxValue(int32_t()), 2147483647);
         SEQAN_ASSERT_EQ(maxValue<int32_t>(), 2147483647);
         SEQAN_ASSERT_EQ(+(MaxValue<int32_t>::VALUE), 2147483647);
diff --git a/tests/basic/test_basic_iterator.h b/tests/basic/test_basic_iterator.h
index a01d45c..e130c41 100644
--- a/tests/basic/test_basic_iterator.h
+++ b/tests/basic/test_basic_iterator.h
@@ -161,7 +161,7 @@ void resetCDStructStatics()
 
 // Disable for windows vs as the two-phase template lookup is broken. See the
 // following link http://stackoverflow.com/questions/6273176/what-exactly-is-broken-with-microsoft-visual-cs-two-phase-template-instanti
-#if !defined(PLATFORM_WINDOWS_VS)
+#if !defined(STDLIB_VS)
 // --------------------------------------------------------------------------
 // Pointer adaptions to test the positional iterator.
 // --------------------------------------------------------------------------
@@ -191,7 +191,7 @@ moveValue(TValue * me,
 {
     move(value(me, pos), _value);
 }
-#endif  // !defined(PLATFORM_WINDOWS_VS) 
+#endif  // !defined(STDLIB_VS) 
 // --------------------------------------------------------------------------
 // Tests for Pointer Adaption to Iterator Concept
 // --------------------------------------------------------------------------
diff --git a/tests/basic/test_basic_simd_vector.h b/tests/basic/test_basic_simd_vector.h
index b0d8aff..d435e09 100644
--- a/tests/basic/test_basic_simd_vector.h
+++ b/tests/basic/test_basic_simd_vector.h
@@ -37,6 +37,8 @@
 #ifndef SEQAN_CORE_TESTS_BASIC_TEST_BASIC_SIMD_VECTOR_H_
 #define SEQAN_CORE_TESTS_BASIC_TEST_BASIC_SIMD_VECTOR_H_
 
+#if SEQAN_SIMD_ENABLED
+
 #include <random>
 
 #include <seqan/sequence.h>
@@ -149,6 +151,6 @@ SEQAN_DEFINE_TEST(test_basic_simd_transpose_32x32)
 
 #endif  // #ifdef __AVX2__
 #endif  // #ifdef __SSE4_1__
-
+#endif  // SEQAN_SIMD_ENABLED
 
 #endif  // #ifndef SEQAN_CORE_TESTS_BASIC_TEST_BASIC_SIMD_VECTOR_H_
diff --git a/tests/blast/test_blast.cpp b/tests/blast/test_blast.cpp
index 4f714e3..5af959c 100644
--- a/tests/blast/test_blast.cpp
+++ b/tests/blast/test_blast.cpp
@@ -36,7 +36,7 @@
 
 #include <seqan/basic.h>
 
-#ifndef PLATFORM_WINDOWS_VS
+#ifndef COMPILER_MSVC
 
 #include <seqan/file.h>
 #include <seqan/sequence.h>
@@ -77,6 +77,7 @@ SEQAN_BEGIN_TESTSUITE(test_blast)
     // WRITING (report tag)
     SEQAN_CALL_TEST(test_blast_write_report);
     SEQAN_CALL_TEST(test_blast_write_report_constexpr);
+    SEQAN_CALL_TEST(test_blast_write_report_constexpr_dynmatrix);
 
     // READING (lowlevel tag)
     SEQAN_CALL_TEST(test_blast_read_lowlevel);
diff --git a/tests/blast/test_blast_misc.h b/tests/blast/test_blast_misc.h
index 1bd8b87..b2482d9 100644
--- a/tests/blast/test_blast_misc.h
+++ b/tests/blast/test_blast_misc.h
@@ -77,7 +77,7 @@ SEQAN_DEFINE_TEST(test_blast_program)
     /*** TEST string functions ***/
     // gcc can do the following, because it provides a constexpr strcmp implementation (not required by the standard)
     // it is not really important, though, just for demonstration purposes:
-#if defined(PLATFORM_GNU)
+#if defined(COMPILER_GCC) || defined(COMPILER_LINTEL)
     static_assert(strcmp(_programTagToString(n), "BLASTN") == 0,       "static assertion failed!");
 #endif
     SEQAN_ASSERT_EQ(_programTagToString(n2), "BLASTN");
diff --git a/tests/blast/test_blast_output.h b/tests/blast/test_blast_output.h
index e4c023a..79c85d0 100644
--- a/tests/blast/test_blast_output.h
+++ b/tests/blast/test_blast_output.h
@@ -641,4 +641,17 @@ SEQAN_DEFINE_TEST(test_blast_write_report_constexpr)
     _testBlastOutput(context, BlastReport());
 }
 
+SEQAN_DEFINE_TEST(test_blast_write_report_constexpr_dynmatrix)
+{
+    SelectableAminoAcidMatrix sel;
+    SEQAN_ASSERT(getScoreMatrixId(sel) != AminoAcidScoreMatrixID::BLOSUM62);
+    setScoreMatrixById(sel, AminoAcidScoreMatrixID::BLOSUM62);
+    SEQAN_ASSERT(getScoreMatrixId(sel) == AminoAcidScoreMatrixID::BLOSUM62);
+
+    BlastIOContext<SelectableAminoAcidMatrix, BlastProgram::BLASTP> context;
+    context.scoringScheme._internalScheme = sel;
+
+    _testBlastOutput(context, BlastReport());
+}
+
 #endif  // SEQAN_TESTS_TEST_BLAST_OUTPUT_H_
diff --git a/tests/cuda/test_cuda_index.cu b/tests/cuda/test_cuda_index.cu
deleted file mode 100644
index 6b565ed..0000000
--- a/tests/cuda/test_cuda_index.cu
+++ /dev/null
@@ -1,249 +0,0 @@
-// ==========================================================================
-//                 SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2006-2016, Knut Reinert, FU Berlin
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
-//       its contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-// Author: Enrico Siragusa <enrico.siragusa at fu-berlin.de>
-// ==========================================================================
-
-#include <seqan/basic.h>
-#include <seqan/sequence.h>
-#include <seqan/index.h>
-#include <seqan/index/index_fm_device.h>
-
-#include "test_cuda_common.h"
-
-using namespace seqan;
-
-// TODO(esiragusa): move this into metaprogramming algebra
-namespace seqan {
-
-template <typename T1, typename T2>
-struct Pair<T1, T2, Tag<void> > {};
-
-// Manually specialize word size to be compatible with GPU
-
-template <typename TValue>
-struct RankDictionaryWordSize_<TValue, TwoLevels<void> > :
-    BitsPerValue<uint32_t> {};
-
-template <typename TValue>
-struct RankDictionaryWordSize_<TValue, TwoLevels<Device<void> > > :
-    BitsPerValue<uint32_t> {};
-
-template <typename TValue, typename TSpec>
-struct RankDictionaryWordSize_<TValue, TwoLevels<View<TSpec> > > :
-    BitsPerValue<uint32_t> {};
-
-}
-
-// ============================================================================
-// Types
-// ============================================================================
-
-typedef TagList<FibreRawText,
-        TagList<FibreLF
-        > >
-    FMIndexFibres;
-
-// ============================================================================
-// Classes
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// Class CudaIndexTest
-// ----------------------------------------------------------------------------
-
-template <typename TType>
-class CudaIndexTest : public Test
-{
-public:
-    typedef TType                                       TIndex;
-    typedef typename Host<TIndex>::Type                 TText;
-    typedef typename Device<TIndex>::Type               TCudaIndex;
-
-    TText    text;
-    TIndex   index;
-
-    CudaIndexTest() :
-        text(),
-        index(text)
-    {
-        // TODO(esiragusa): init generic text.
-        appendValue(text, "ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT");
-
-        // TODO(esiragusa): reverse text on FM-index only.
-        reverse(text);
-        indexCreate(index);
-        reverse(text);
-    }
-};
-
-typedef TagList<DnaStringSetFMIndex> CudaIndexTestTypes;
-
-SEQAN_TYPED_TEST_CASE(CudaIndexTest, CudaIndexTestTypes);
-
-// ----------------------------------------------------------------------------
-// Class CudaIndexFibreTest
-// ----------------------------------------------------------------------------
-
-template <typename TTypes>
-class CudaIndexFibreTest : public CudaIndexTest<typename Value<TTypes, 1>::Type> {};
-
-// TODO(esiragusa): use metaprogramming algebra.
-//typedef Product<DnaStringSetFMIndex, FMIndexFibres>::Type CudaIndexFibreTestTypes;
-
-typedef TagList<Pair<DnaStringSetFMIndex, FibreRawText, Tag<void> >,
-        TagList<Pair<DnaStringSetFMIndex, FibreLF, Tag<void> >
-        > >
-    CudaIndexFibreTestTypes;
-
-SEQAN_TYPED_TEST_CASE(CudaIndexFibreTest, CudaIndexFibreTestTypes);
-
-// ----------------------------------------------------------------------------
-// Class CudaIndexCountTest
-// ----------------------------------------------------------------------------
-
-template <typename TTypes>
-class CudaIndexCountTest : public CudaIndexTest<typename Value<TTypes, 1>::Type>
-{
-public:
-    typedef typename Value<TTypes, 1>::Type             TIndex;
-    typedef typename Value<TTypes, 2>::Type             TNeedles;
-    typedef CudaIndexTest<TIndex>                       TBase;
-    typedef typename Size<TIndex>::Type                 TSize;
-    typedef typename Device<TNeedles>::Type             TCudaNeedles;
-
-    TNeedles needles;
-    TSize    occurrences;
-
-    CudaIndexCountTest() :
-        TBase()
-    {
-        // TODO(esiragusa): append generic needles.
-        appendValue(needles, "ACGT");
-        appendValue(needles, "CGT");
-        appendValue(needles, "GTA");
-
-        occurrences = countOccurrences(this->index, needles);
-    }
-};
-
-// TODO(esiragusa): use metaprogramming algebra.
-//typedef Product<DnaStringSetFMIndex, DnaStringSet>::Type CudaIndexCountTestTypes;
-
-typedef TagList<Pair<DnaStringSetFMIndex, DnaStringSet, Tag<void> > > CudaIndexCountTestTypes;
-
-SEQAN_TYPED_TEST_CASE(CudaIndexCountTest, CudaIndexCountTestTypes);
-
-// ============================================================================
-// Tests
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// Test assign()
-// ----------------------------------------------------------------------------
-
-SEQAN_TYPED_TEST(CudaIndexTest, Assign)
-{
-    typedef typename TestFixture::TIndex        TIndex;
-    typedef typename TestFixture::TCudaIndex    TCudaIndex;
-
-    cudaDeviceReset();
-
-    TCudaIndex cudaIndex;
-    assign(cudaIndex, this->index);
-    SEQAN_ASSERT_EQ(length(cudaIndex), length(this->index));
-
-//    TIndex        index;
-//    assign(index, cudaIndex);
-//    SEQAN_ASSERT(index == this->index);
-}
-
-// ----------------------------------------------------------------------------
-// Test value() on Index Fibres
-// ----------------------------------------------------------------------------
-
-SEQAN_TYPED_TEST(CudaIndexFibreTest, Values)
-{
-    typedef FibreLF                                 TTag;
-    typedef typename TestFixture::TIndex            TIndex;
-    typedef typename TestFixture::TCudaIndex        TCudaIndex;
-    typedef typename Fibre<TIndex, TTag>::Type      TFibre;
-    typedef typename Fibre<TCudaIndex, TTag>::Type  TCudaFibre;
-    typedef typename View<TCudaFibre>::Type         TCudaFibreView;
-    typedef typename Size<TFibre>::Type             TSize;
-
-    cudaDeviceReset();
-
-    TCudaIndex cudaIndex;
-    assign(cudaIndex, this->index);
-
-    TFibre & fibre = getFibre(this->index, TTag());
-    TCudaFibre & cudaFibre = getFibre(cudaIndex, TTag());
-    SEQAN_ASSERT_EQ(length(fibre), length(cudaFibre));
-
-    TCudaFibreView cudaFibreView = view(cudaFibre);
-    for (TSize pos = 0; pos < length(fibre); pos++)
-    {
-        testGetValue<<<1,1>>>(cudaFibreView, pos, fibre[pos]);
-        cudaDeviceSynchronize();
-        SEQAN_ASSERT_EQ(cudaGetLastError(), cudaSuccess);
-    }
-}
-
-// ----------------------------------------------------------------------------
-// Test countOccurrences()
-// ----------------------------------------------------------------------------
-
-SEQAN_TYPED_TEST(CudaIndexCountTest, Count)
-{
-    typedef typename TestFixture::TCudaIndex    TCudaIndex;
-    typedef typename TestFixture::TCudaNeedles  TCudaNeedles;
-
-    cudaDeviceReset();
-
-    TCudaIndex   cudaIndex;
-    TCudaNeedles cudaNeedles;
-
-    assign(cudaIndex, this->index);
-    assign(cudaNeedles, this->needles);
-
-    SEQAN_ASSERT_EQ(countOccurrences(cudaIndex, cudaNeedles), this->occurrences);
-}
-
-// ============================================================================
-// Register Tests
-// ============================================================================
-
-int main(int argc, char const ** argv)
-{
-    TestSystem::init(argc, argv);
-    return TestSystem::runAll();
-}
diff --git a/tests/cuda/test_cuda_sequence.cu b/tests/cuda/test_cuda_sequence.cu
deleted file mode 100644
index e2f2945..0000000
--- a/tests/cuda/test_cuda_sequence.cu
+++ /dev/null
@@ -1,151 +0,0 @@
-// ==========================================================================
-//                 SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2006-2016, Knut Reinert, FU Berlin
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
-//       its contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-// Author: Enrico Siragusa <enrico.siragusa at fu-berlin.de>
-// ==========================================================================
-
-#include <seqan/basic.h>
-#include <seqan/sequence.h>
-#include <thrust/count.h>
-
-#include "test_cuda_common.h"
-
-using namespace seqan;
-
-// ============================================================================
-// Types
-// ============================================================================
-
-typedef TagList<String<char, Alloc<> >,
-        TagList<String<Dna, Alloc<> >,
-        TagList<String<Dna5, Alloc<> >
-//        TagList<String<Dna, Packed<> >
-        > > > //>
-        StringTypes;
-
-// TODO(esiragusa): test StringSets.
-//typedef TagList<StringSet<CharString, Owner<ConcatDirect<> > >,
-//        TagList<StringSet<DnaString, Owner<ConcatDirect<> > >
-//        > >
-//    TStringSetTypes;
-
-// TODO(esiragusa): use metaprogramming algebra.
-//typedef Product<StringTypes, Owner<ConcatDirect<> > >::Type TStringSetTypes;
-
-// ============================================================================
-// Classes
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// Class CudaSequenceTest
-// ----------------------------------------------------------------------------
-
-template <typename TType>
-class CudaSequenceTest : public Test
-{
-public:
-    typedef TType                             TString;
-    typedef typename Device<TString>::Type    TCudaString;
-    typedef typename Value<TString>::Type     TAlphabet;
-
-    TString str;
-
-    CudaSequenceTest() :
-        str("ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT")
-    {}
-};
-
-SEQAN_TYPED_TEST_CASE(CudaSequenceTest, StringTypes);
-
-
-// ============================================================================
-// Tests
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// Test assign()
-// ----------------------------------------------------------------------------
-
-SEQAN_TYPED_TEST(CudaSequenceTest, Assign)
-{
-    typedef typename TestFixture::TString       TString;
-    typedef typename TestFixture::TCudaString   TCudaString;
-    typedef typename TestFixture::TAlphabet     TAlphabet;
-
-    cudaDeviceReset();
-
-    TCudaString cudaStr;
-    assign(cudaStr, this->str);
-    SEQAN_ASSERT_EQ(length(cudaStr), length(this->str));
-    SEQAN_ASSERT_EQ(thrust::count(begin(cudaStr, Standard()), end(cudaStr, Standard()), TAlphabet('A')), 10u);
-    SEQAN_ASSERT_EQ(thrust::count(begin(cudaStr, Standard()), end(cudaStr, Standard()), TAlphabet('C')), 10u);
-    SEQAN_ASSERT_EQ(thrust::count(begin(cudaStr, Standard()), end(cudaStr, Standard()), TAlphabet('G')), 10u);
-    SEQAN_ASSERT_EQ(thrust::count(begin(cudaStr, Standard()), end(cudaStr, Standard()), TAlphabet('T')), 10u);
-
-//    TString str;
-//    assign(cudaStr, str);
-//    SEQAN_ASSERT_EQ(str, this->str);
-}
-
-// ----------------------------------------------------------------------------
-// Test getValue()
-// ----------------------------------------------------------------------------
-
-SEQAN_TYPED_TEST(CudaSequenceTest, GetValue)
-{
-    typedef typename TestFixture::TString       TString;
-    typedef typename TestFixture::TCudaString   TCudaString;
-    typedef typename View<TCudaString>::Type    TCudaStringView;
-    typedef typename Size<TString>::Type        TSize;
-
-    cudaDeviceReset();
-
-    TCudaString cudaStr;
-    assign(cudaStr, this->str);
-    TCudaStringView cudaStrView = view(cudaStr);
-
-    for (TSize pos = 0; pos < length(this->str); pos++)
-    {
-        testGetValue<<<1,1>>>(cudaStrView, pos, getValue(this->str, pos));
-        cudaDeviceSynchronize();
-        SEQAN_ASSERT_EQ(cudaGetLastError(), cudaSuccess);
-    }
-}
-
-// ============================================================================
-// Register Tests
-// ============================================================================
-
-int main(int argc, char const ** argv)
-{
-    TestSystem::init(argc, argv);
-    return TestSystem::runAll();
-}
diff --git a/tests/graph_align/test_graph_match_refinement.h b/tests/graph_align/test_graph_match_refinement.h
index c19853e..3cf69ff 100644
--- a/tests/graph_align/test_graph_match_refinement.h
+++ b/tests/graph_align/test_graph_match_refinement.h
@@ -207,7 +207,7 @@ SEQAN_DEFINE_TEST(GraphMatchRefine)
     //typedef String<Fragment<>, External<> > TFragmentString;
 
     // Windows
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
     String<char> in_path("Z:\\matches\\");
     String<char> out_path("Z:\\matches\\out\\");
     return;
diff --git a/tests/index/CMakeLists.txt b/tests/index/CMakeLists.txt
index 8cf1ee1..343d72a 100644
--- a/tests/index/CMakeLists.txt
+++ b/tests/index/CMakeLists.txt
@@ -102,6 +102,11 @@ add_executable (test_index_fm
                 test_index_helpers.h)
 target_link_libraries (test_index_fm ${SEQAN_LIBRARIES})
 
+add_executable (test_index_bifm
+                test_index_bifm.cpp
+                test_index_helpers.h)
+target_link_libraries (test_index_bifm ${SEQAN_LIBRARIES})
+
 add_executable (test_index_vstree
                 test_index_vstree.cpp
                 test_index_fm_stree.h
@@ -164,6 +169,7 @@ add_test (NAME test_test_index_fm_rank_dictionary COMMAND $<TARGET_FILE:test_ind
 add_test (NAME test_test_index_fm_sparse_string COMMAND $<TARGET_FILE:test_index_fm_sparse_string>)
 add_test (NAME test_test_index_base COMMAND $<TARGET_FILE:test_index_base>)
 add_test (NAME test_test_index_fm COMMAND $<TARGET_FILE:test_index_fm>)
+add_test (NAME test_test_index_bifm COMMAND $<TARGET_FILE:test_index_bifm>)
 add_test (NAME test_test_index_vstree COMMAND $<TARGET_FILE:test_index_vstree>)
 if (NOT CMAKE_COMPILER_IS_GNUCXX OR (450 LESS _GCC_VERSION))
     add_test (NAME test_test_index_stree_iterators COMMAND $<TARGET_FILE:test_index_stree_iterators>)
diff --git a/tests/index/test_index_bifm.cpp b/tests/index/test_index_bifm.cpp
new file mode 100644
index 0000000..fb2fb92
--- /dev/null
+++ b/tests/index/test_index_bifm.cpp
@@ -0,0 +1,210 @@
+// ==========================================================================
+//                 SeqAn - The Library for Sequence Analysis
+// ==========================================================================
+// Copyright (c) 2006-2015, Knut Reinert, FU Berlin
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
+//       its contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+//
+// ==========================================================================
+// Author: Christopher Pockrandt <christopher.pockrandt at fu-berlin.de>
+// ==========================================================================
+
+#include <seqan/basic.h>
+#include <seqan/reduced_aminoacid.h>
+#include <seqan/index.h>
+#include <ctime>
+
+#include "test_index_helpers.h"
+
+using namespace seqan;
+
+template <typename TSpec = void, typename TLengthSum = size_t>
+struct FMIndexConfigLevelsPrefix
+{
+    typedef TLengthSum                                                      LengthSum;
+    typedef Levels<TSpec, LevelsPrefixRDConfig<TLengthSum, Alloc<>, 1, 0> > Bwt;
+    typedef Levels<TSpec, LevelsRDConfig<TLengthSum, Alloc<>, 1, 0> >       Sentinels;
+
+    static const unsigned SAMPLING =                                        10;
+};
+
+template <typename TSpec = void, typename TLengthSum = size_t>
+struct FMIndexWTConfig
+{
+    typedef TLengthSum                                                      LengthSum;
+    typedef WaveletTree<TSpec, WTRDConfig<TLengthSum, Alloc<>, 1, 0> >      Bwt;
+    typedef Levels<TSpec, LevelsRDConfig<TLengthSum, Alloc<>, 1, 0> >       Sentinels;
+
+    static const unsigned SAMPLING =                                        10;
+};
+
+typedef String<SimpleType<unsigned char, ReducedAminoAcid_<Murphy10> > > Murphy10String;
+
+typedef
+    TagList<Index<String<bool>,   BidirectionalIndex<FMIndex<void, FMIndexConfigLevelsPrefix<> > > >,
+    TagList<Index<DnaString,      BidirectionalIndex<FMIndex<void, FMIndexConfigLevelsPrefix<> > > >,
+    TagList<Index<RnaString,      BidirectionalIndex<FMIndex<void, FMIndexConfigLevelsPrefix<> > > >,
+    TagList<Index<Dna5String,     BidirectionalIndex<FMIndex<void, FMIndexConfigLevelsPrefix<> > > >,
+    TagList<Index<Rna5String,     BidirectionalIndex<FMIndex<void, FMIndexConfigLevelsPrefix<> > > >,
+    TagList<Index<Murphy10String, BidirectionalIndex<FMIndex<void, FMIndexConfigLevelsPrefix<> > > >,
+    TagList<Index<Peptide,        BidirectionalIndex<FMIndex<void, FMIndexConfigLevelsPrefix<> > > >,
+    TagList<Index<CharString,     BidirectionalIndex<FMIndex<void, FMIndexConfigLevelsPrefix<> > > >,
+    TagList<Index<String<bool>,   BidirectionalIndex<FMIndex<void, FMIndexWTConfig<> > > >,
+    TagList<Index<DnaString,      BidirectionalIndex<FMIndex<void, FMIndexWTConfig<> > > >,
+    TagList<Index<RnaString,      BidirectionalIndex<FMIndex<void, FMIndexWTConfig<> > > >,
+    TagList<Index<Dna5String,     BidirectionalIndex<FMIndex<void, FMIndexWTConfig<> > > >,
+    TagList<Index<Rna5String,     BidirectionalIndex<FMIndex<void, FMIndexWTConfig<> > > >,
+    TagList<Index<Murphy10String, BidirectionalIndex<FMIndex<void, FMIndexWTConfig<> > > >,
+    TagList<Index<Peptide,        BidirectionalIndex<FMIndex<void, FMIndexWTConfig<> > > >,
+    TagList<Index<CharString,     BidirectionalIndex<FMIndex<void, FMIndexWTConfig<> > > >
+    > > > > > > > > > > > > > > > >
+    FMIndices;
+
+// ==========================================================================
+// Test Classes
+// ==========================================================================
+
+// --------------------------------------------------------------------------
+// Class RankDictionaryTest
+// --------------------------------------------------------------------------
+
+template <typename TIndex_>
+class BidirectionalFMIndexTest : public Test
+{
+public:
+    typedef TIndex_ TIndex;
+};
+
+SEQAN_TYPED_TEST_CASE(BidirectionalFMIndexTest, FMIndices);
+
+// testing the bidirectional FM index by comparing ranges and hits against two stand-alone
+// FM indices of the original and the reversed text
+template <typename TBiFMIndex, typename TText, typename TPattern>
+inline bool
+testBidirectionalIndex(TBiFMIndex & bifmIndex, TText & text, TText & revText, TPattern & pattern)
+{
+    typedef Index<TText, FMIndex<> >                           TFMIndex;
+    typedef typename Iterator<TFMIndex, TopDown<> >::Type      TFMIter;
+    typedef typename Iterator<TBiFMIndex, TopDown<> >::Type    TBiFMIter;
+
+    ModifiedString<TPattern, ModReverse> revPattern(pattern);
+
+    TFMIndex indexFwd(text);
+    TFMIndex indexRev(revText);
+    TFMIter itFwd(indexFwd);
+    TFMIter itRev(indexRev);
+
+    TBiFMIter bifm1(bifmIndex);
+    TBiFMIter bifm2(bifmIndex);
+
+    bool res1 = goDown(itFwd, revPattern);
+    bool res2 = goDown(itRev, pattern);
+    bool res3 = goDown(bifm1, pattern, Rev());
+    bool res4 = goDown(bifm2, revPattern, Fwd());
+
+    SEQAN_ASSERT_EQ(res1, res2);
+    SEQAN_ASSERT_EQ(res1, res3);
+    SEQAN_ASSERT_EQ(res1, res4);
+
+    if (res1) // if pattern was found in string
+    {
+        SEQAN_ASSERT(getOccurrences(itFwd) == getOccurrences(bifm1, Fwd()));
+        SEQAN_ASSERT(getOccurrences(itFwd) == getOccurrences(bifm2, Fwd()));
+        SEQAN_ASSERT(getOccurrences(itRev) == getOccurrences(bifm1, Rev()));
+        SEQAN_ASSERT(getOccurrences(itRev) == getOccurrences(bifm2, Rev()));
+    }
+
+    return 0;
+}
+
+SEQAN_TYPED_TEST(BidirectionalFMIndexTest, SearchInString)
+{
+    typedef typename TestFixture::TIndex                        TIndex;
+    typedef typename Host<TIndex>::Type                         TText;
+
+    std::mt19937 rng(time(nullptr));
+
+    TText text;
+    generateText(rng, text, 3947);
+    TText revText(text);
+    reverse(revText);
+
+    TIndex index(text);
+
+    for (unsigned int patternLength = 1; patternLength <= 20; ++patternLength)
+    {
+        TText pattern;
+        generateText(rng, pattern, patternLength);
+
+        testBidirectionalIndex(index, text, revText, pattern);
+    }
+}
+
+SEQAN_TYPED_TEST(BidirectionalFMIndexTest, SearchInStringSet)
+{
+    typedef typename TestFixture::TIndex                        TIndex;
+    typedef typename Host<TIndex>::Type                         TText;
+    typedef typename Spec<TIndex>::Type                         TIndexSpec;
+    typedef StringSet<TText, Owner<ConcatDirect<void> > >       TStringSet;
+    typedef Index<TStringSet, TIndexSpec>                       TStringSetIndex;
+
+    std::mt19937 rng(time(nullptr));
+
+    TStringSet stringSet;
+    for (unsigned stringSetSize = 1; stringSetSize <= 3; ++stringSetSize)
+    {
+        TText text;
+        generateText(rng, text, 3947);
+        appendValue(stringSet, text);
+
+        TStringSet revStringSet;
+        for (unsigned i = 0; i < stringSetSize; ++i)
+        {
+            TText revText(stringSet[stringSetSize - i - 1]);
+            reverse(revText);
+            appendValue(revStringSet, revText);
+        }
+
+        TStringSetIndex index(stringSet);
+        for (unsigned int patternLength = 1; patternLength <= 10; ++patternLength)
+        {
+            TText pattern;
+            generateText(rng, pattern, patternLength);
+
+            testBidirectionalIndex(index, stringSet, revStringSet, pattern);
+        }
+    }
+}
+
+// ========================================================================== 
+// Functions
+// ========================================================================== 
+
+int main(int argc, char const ** argv)
+{
+    TestSystem::init(argc, argv);
+    return TestSystem::runAll();
+}
diff --git a/tests/index/test_index_finder.cpp b/tests/index/test_index_finder.cpp
index 0805983..1430cf8 100644
--- a/tests/index/test_index_finder.cpp
+++ b/tests/index/test_index_finder.cpp
@@ -63,7 +63,7 @@ public:
     {}
 };
 
-SEQAN_TYPED_TEST_CASE(IndexFinderTest, IndexTypes);
+SEQAN_TYPED_TEST_CASE(IndexFinderTest, UnidirectionalIndexTypes);
 
 // --------------------------------------------------------------------------
 // Test Finder
diff --git a/tests/index/test_index_fm.cpp b/tests/index/test_index_fm.cpp
index f02416d..66d94a4 100644
--- a/tests/index/test_index_fm.cpp
+++ b/tests/index/test_index_fm.cpp
@@ -53,16 +53,24 @@ struct WTFMIndexConfig : FMIndexConfig<TSpec, TLengthSum> {};
 template <typename TSpec = void, typename TLengthSum = size_t>
 struct SmallWTFMIndexConfig : FMIndexConfig<TSpec, TLengthSum>
 {
-    typedef TLengthSum                              LengthSum;
-    typedef Naive<TSpec, RDConfig<TLengthSum> >     Sentinels;
+    typedef TLengthSum                                           LengthSum;
+    typedef Naive<TSpec, RDConfig<TLengthSum, Alloc<>, 1, 0> >   Sentinels;
 };
 
 template <typename TSpec = void, typename TLengthSum = size_t>
 struct SmallLVFMIndexConfig : FMIndexConfig<TSpec, TLengthSum>
 {
-    typedef TLengthSum                                  LengthSum;
-    typedef Levels<TSpec, LevelsRDConfig<LengthSum> >   Bwt;
-    typedef Naive<TSpec, RDConfig<LengthSum> >          Sentinels;
+    typedef TLengthSum                                                  LengthSum;
+    typedef Levels<TSpec, LevelsRDConfig<TLengthSum, Alloc<>, 1, 0> >   Bwt;
+    typedef Naive<TSpec, RDConfig<TLengthSum, Alloc<>, 1, 0> >          Sentinels;
+};
+
+template <typename TSpec = void, typename TLengthSum = size_t>
+struct PrefixLVFMIndexConfig : FMIndexConfig<TSpec, TLengthSum>
+{
+    typedef TLengthSum                                                       LengthSum;
+    typedef Levels<TSpec, LevelsPrefixRDConfig<TLengthSum, Alloc<>, 1, 0> >  Bwt;
+    typedef Naive<TSpec, RDConfig<TLengthSum, Alloc<>, 1, 0> >               Sentinels;
 };
 
 // --------------------------------------------------------------------------
@@ -72,6 +80,7 @@ struct SmallLVFMIndexConfig : FMIndexConfig<TSpec, TLengthSum>
 typedef FMIndex<void, WTFMIndexConfig<> >       WTFMIndex;
 typedef FMIndex<void, SmallWTFMIndexConfig<> >  SmallWTFMIndex;
 typedef FMIndex<void, SmallLVFMIndexConfig<> >  SmallLVFMIndex;
+typedef FMIndex<void, PrefixLVFMIndexConfig<> > PrefixLVFMIndex;
 
 // --------------------------------------------------------------------------
 // FMIndex Types
@@ -82,8 +91,12 @@ typedef
     TagList<Index<CharString, WTFMIndex>,
     TagList<Index<StringSet<CharString>, WTFMIndex>,
     TagList<Index<StringSet<CharString>, SmallWTFMIndex>,
-    TagList<Index<StringSet<DnaString>, SmallLVFMIndex>
-    > > > > >
+    TagList<Index<StringSet<DnaString>, SmallLVFMIndex>,
+    TagList<Index<String<bool>, PrefixLVFMIndex>,
+    TagList<Index<DnaString, PrefixLVFMIndex>,
+    TagList<Index<CharString, PrefixLVFMIndex>,
+    TagList<Index<StringSet<DnaString>, PrefixLVFMIndex>
+    > > > > > > > > >
     FMIndexTypes2;
 
 // ========================================================================== 
diff --git a/tests/index/test_index_fm_rank_dictionary.cpp b/tests/index/test_index_fm_rank_dictionary.cpp
index e72ef6f..dcbd88b 100644
--- a/tests/index/test_index_fm_rank_dictionary.cpp
+++ b/tests/index/test_index_fm_rank_dictionary.cpp
@@ -34,6 +34,7 @@
 // ==========================================================================
 
 #include <seqan/basic.h>
+#include <seqan/reduced_aminoacid.h>
 #include <seqan/index.h>
 
 #include "test_index_helpers.h"
@@ -42,7 +43,7 @@ using namespace seqan;
 
 // ==========================================================================
 // Metafunctions
-// ========================================================================== 
+// ==========================================================================
 
 // ----------------------------------------------------------------------------
 // Metafunction Size
@@ -58,30 +59,69 @@ using namespace seqan;
 
 // ==========================================================================
 // Types
-// ========================================================================== 
+// ==========================================================================
 
 // --------------------------------------------------------------------------
 // RankDictionary Types
 // --------------------------------------------------------------------------
 
+typedef SimpleType<unsigned char, ReducedAminoAcid_<Murphy10> >         ReducedMurphy10;
+
+typedef Levels<void, LevelsPrefixRDConfig<uint32_t, Alloc<>, 1, 1> > Prefix1Level;
+typedef Levels<void, LevelsPrefixRDConfig<uint32_t, Alloc<>, 2, 2> > Prefix2Level;
+typedef Levels<void, LevelsPrefixRDConfig<uint32_t, Alloc<>, 3, 3> > Prefix3Level;
+
+typedef Levels<void, LevelsRDConfig<uint32_t, Alloc<>, 1, 1> >       Default1Level;
+typedef Levels<void, LevelsRDConfig<uint32_t, Alloc<>, 2, 2> >       Default2Level;
+typedef Levels<void, LevelsRDConfig<uint32_t, Alloc<>, 3, 3> >       Default3Level;
+
 typedef
-    TagList<RankDictionary<bool,            Naive<> >,
-    TagList<RankDictionary<bool,            Levels<> >,
-    TagList<RankDictionary<Dna,             Levels<> >,
-    TagList<RankDictionary<char,            Levels<> >,
+    TagList<RankDictionary<bool,            Prefix1Level>,
+    TagList<RankDictionary<Dna,             Prefix1Level>,
+    TagList<RankDictionary<Dna5Q,           Prefix1Level>,
+    TagList<RankDictionary<ReducedMurphy10, Prefix1Level>,
+    TagList<RankDictionary<AminoAcid,       Prefix1Level>,
+    TagList<RankDictionary<bool,            Prefix2Level>,
+    TagList<RankDictionary<Dna,             Prefix2Level>,
+    TagList<RankDictionary<Dna5Q,           Prefix2Level>,
+    TagList<RankDictionary<ReducedMurphy10, Prefix2Level>,
+    TagList<RankDictionary<AminoAcid,       Prefix2Level>,
+    TagList<RankDictionary<bool,            Prefix3Level>,
+    TagList<RankDictionary<Dna,             Prefix3Level>,
+    TagList<RankDictionary<Dna5Q,           Prefix3Level>,
+    TagList<RankDictionary<ReducedMurphy10, Prefix3Level>,
+    TagList<RankDictionary<AminoAcid,       Prefix3Level>,
+    TagList<RankDictionary<bool,            WaveletTree<> >,
     TagList<RankDictionary<Dna,             WaveletTree<> >,
-    TagList<RankDictionary<Dna5,            WaveletTree<> >,
-    TagList<RankDictionary<DnaQ,            WaveletTree<> >,
     TagList<RankDictionary<Dna5Q,           WaveletTree<> >,
-    TagList<RankDictionary<AminoAcid,       WaveletTree<> >,
-    TagList<RankDictionary<char,            WaveletTree<> >,
-    TagList<RankDictionary<unsigned char,   WaveletTree<> >
-    > > > > > > > > > > >
-    RankDictionaryTypes;
+    TagList<RankDictionary<AminoAcid,       WaveletTree<> >
+    > > > > > > > > > > > > > > > > > > >
+    RankDictionaryPrefixSumTypes;
 
-// ========================================================================== 
+typedef
+    TagList<RankDictionary<bool,            Naive<> >,
+    TagList<RankDictionary<bool,            Default1Level>,
+    TagList<RankDictionary<Dna,             Default1Level>,
+    TagList<RankDictionary<Dna5Q,           Default1Level>,
+    TagList<RankDictionary<ReducedMurphy10, Default1Level>,
+    TagList<RankDictionary<AminoAcid,       Default1Level>,
+    TagList<RankDictionary<bool,            Default2Level>,
+    TagList<RankDictionary<Dna,             Default2Level>,
+    TagList<RankDictionary<Dna5Q,           Default2Level>,
+    TagList<RankDictionary<ReducedMurphy10, Default2Level>,
+    TagList<RankDictionary<AminoAcid,       Default2Level>,
+    TagList<RankDictionary<bool,            Default3Level>,
+    TagList<RankDictionary<Dna,             Default3Level>,
+    TagList<RankDictionary<Dna5Q,           Default3Level>,
+    TagList<RankDictionary<ReducedMurphy10, Default3Level>,
+    TagList<RankDictionary<AminoAcid,       Default3Level>,
+    RankDictionaryPrefixSumTypes
+    > > > > > > > > > > > > > > > >
+    RankDictionaryAllTypes;
+
+// ==========================================================================
 // Test Classes
-// ========================================================================== 
+// ==========================================================================
 
 // --------------------------------------------------------------------------
 // Class RankDictionaryTest
@@ -108,17 +148,21 @@ public:
 
     void setUp()
     {
-        createText(text, TValue());
+        generateText(text, 3947);
         textBegin = begin(text, Standard());
         textEnd = end(text, Standard());
     }
 };
 
-SEQAN_TYPED_TEST_CASE(RankDictionaryTest, RankDictionaryTypes);
+template <typename TRankDictionary>
+class RankDictionaryPrefixTest : public RankDictionaryTest<TRankDictionary> {};
 
-// ========================================================================== 
+SEQAN_TYPED_TEST_CASE(RankDictionaryTest, RankDictionaryAllTypes);
+SEQAN_TYPED_TEST_CASE(RankDictionaryPrefixTest, RankDictionaryPrefixSumTypes);
+
+// ==========================================================================
 // Tests
-// ========================================================================== 
+// ==========================================================================
 
 // ----------------------------------------------------------------------------
 // Test RankDictionary()
@@ -198,6 +242,38 @@ SEQAN_TYPED_TEST(RankDictionaryTest, GetRank)
     }
 }
 
+SEQAN_TYPED_TEST(RankDictionaryPrefixTest, GetPrefixRank)
+{
+    typedef typename TestFixture::TValueSize TValueSize;
+    typedef typename TestFixture::TText TText;
+    typedef typename TestFixture::TTextIterator TTextIterator;
+    typedef typename Size<TText>::Type TTextSize;
+    typedef String<TTextSize> TPrefixSum;
+
+    typename TestFixture::TRankDict dict(this->text);
+
+    // The prefix sum is built while scanning the text.
+    TPrefixSum prefixSum;
+    resize(prefixSum, this->alphabetSize, 0);
+
+    // Scan the text.
+    for (TTextIterator textIt = this->textBegin; textIt != this->textEnd; ++textIt)
+    {
+        // Update the prefix sum.
+        prefixSum[ordValue(value(textIt))]++;
+
+        // Check the rank for all alphabet symbols.
+        unsigned long smallerNaive = 0;
+        for (TValueSize c = 0; c < this->alphabetSize; ++c)
+        {
+            unsigned long smaller;
+            SEQAN_ASSERT_EQ(getRank(dict, (unsigned long)(textIt - this->textBegin), c, smaller), prefixSum[c]);
+            SEQAN_ASSERT_EQ(smaller, smallerNaive);
+            smallerNaive += prefixSum[c];
+        }
+    }
+}
+
 // ----------------------------------------------------------------------------
 // Test setValue()
 // ----------------------------------------------------------------------------
diff --git a/tests/index/test_index_helpers.h b/tests/index/test_index_helpers.h
index 8d6d263..9df599c 100644
--- a/tests/index/test_index_helpers.h
+++ b/tests/index/test_index_helpers.h
@@ -63,7 +63,7 @@ void generateText(TText & text, unsigned textLength = 100000)
     int minChar = MinValue<TChar>::VALUE;
     unsigned alphabetSize = ValueSize<TChar>::VALUE;
 
-    std::mt19937 rng(SEED);
+    std::mt19937 rng(time(nullptr));
 
     resize(text, textLength);
 
@@ -83,7 +83,21 @@ void generateText(CharString & text, unsigned textLength = 100000)
     int minChar = -128;
     unsigned alphabetSize = ValueSize<TChar>::VALUE;
 
-    std::mt19937 rng(SEED);
+    std::mt19937 rng(time(nullptr));
+
+    resize(text, textLength);
+
+    for (unsigned i = 0; i < textLength; ++i)
+        text[i] = rng() % alphabetSize - minChar;
+}
+
+template<typename TText>
+void generateText(std::mt19937 & rng, TText & text, unsigned textLength = 100000)
+{
+    typedef typename Value<TText>::Type TChar;
+
+    int minChar = MinValue<TChar>::VALUE;
+    unsigned alphabetSize = ValueSize<TChar>::VALUE;
 
     resize(text, textLength);
 
@@ -95,8 +109,8 @@ void generateText(CharString & text, unsigned textLength = 100000)
 // Function generateText(StringSet)
 // --------------------------------------------------------------------------
 
-template <typename TText>
-void generateText(StringSet<TText> & text, unsigned numSeq = 1000, unsigned seqLength = 2000)
+template <typename TText, typename TConfig>
+void generateText(StringSet<TText, TConfig> & text, unsigned numSeq = 1000, unsigned seqLength = 2000)
 {
     typedef typename Value<TText>::Type TChar;
 
@@ -618,11 +632,24 @@ typedef
     TagList<Index<StringSet<DnaString>, FMIndex<> >,
     TagList<Index<StringSet<CharString>, FMIndex<> >
     > > > > > >
+    UnidirectionalFMIndexTypes;
+
+typedef
+    TagList<Index<DnaString, BidirectionalIndex<FMIndex<> > >,
+    UnidirectionalFMIndexTypes
+    >
     FMIndexTypes;
 
 typedef
     TagList<Index<CharString, IndexSa<> >,
     TagList<Index<CharString, IndexEsa<> >,
+    UnidirectionalFMIndexTypes
+    > >
+    UnidirectionalIndexTypes;
+
+typedef
+    TagList<Index<CharString, IndexSa<> >,
+    TagList<Index<CharString, IndexEsa<> >,
     FMIndexTypes
     > >
     IndexTypes;
diff --git a/tests/journaled_string_tree/CMakeLists.txt b/tests/journaled_string_tree/CMakeLists.txt
index b0139bc..c20c8d7 100644
--- a/tests/journaled_string_tree/CMakeLists.txt
+++ b/tests/journaled_string_tree/CMakeLists.txt
@@ -70,9 +70,6 @@ target_link_libraries (test_journaled_string_tree_find ${SEQAN_LIBRARIES})
 # Add CXX flags found by find_package (SeqAn).
 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SEQAN_CXX_FLAGS}")
 
-# Enable OpenMP.
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
-
 # ----------------------------------------------------------------------------
 # Register with CTest
 # ----------------------------------------------------------------------------
diff --git a/tests/journaled_string_tree/test_journaled_string_tree_traverser.h b/tests/journaled_string_tree/test_journaled_string_tree_traverser.h
index ba47892..8b2feee 100644
--- a/tests/journaled_string_tree/test_journaled_string_tree_traverser.h
+++ b/tests/journaled_string_tree/test_journaled_string_tree_traverser.h
@@ -338,12 +338,15 @@ SEQAN_DEFINE_TEST(test_journaled_string_tree_traverser_basic_traversal)
 
     while (!atEnd(sub))
     {
-        auto pos = position(sub);
-        for (auto p : pos)
+        auto const & pos = position(sub);
+        for (auto it = begin(pos), itEnd = end(pos); it != itEnd; ++it)
+        {
+            auto const & p = *it;
             appendValue(testSeqs[p.i1], *(impl::activeNode(sub).curEdgeIt));
+        }
 
         advance(sub, 1, SelectFirstProxy());
-        
+
     }
 
     for (unsigned i = 0; i < length(impl::buffer(sub)._journaledSet); ++i)
diff --git a/tests/misc/test_misc.cpp b/tests/misc/test_misc.cpp
index 388e1ad..63aff88 100644
--- a/tests/misc/test_misc.cpp
+++ b/tests/misc/test_misc.cpp
@@ -67,13 +67,13 @@ SEQAN_DEFINE_TEST(test_misc_terminal_get_terminal_size)
     unsigned cols = maxValue<unsigned>(), rows = maxValue<unsigned>();
     bool succ = getTerminalSize(cols, rows);
 
-#if !defined(PLATFORM_WINDOWS)
+#if !defined(STDLIB_VS)
     SEQAN_ASSERT(succ);
     SEQAN_ASSERT_NEQ(cols, maxValue<unsigned>());
     SEQAN_ASSERT_NEQ(rows, maxValue<unsigned>());
-#else  // #if !defined(PLATFORM_WINDOWS)
+#else  // #if !defined(STDLIB_VS)
     SEQAN_ASSERT_NOT(succ);
-#endif  // #if !defined(PLATFORM_WINDOWS)
+#endif  // #if !defined(STDLIB_VS)
 }
 
 SEQAN_BEGIN_TESTSUITE(test_misc) {
diff --git a/tests/modifier/CMakeLists.txt b/tests/modifier/CMakeLists.txt
index 7fb1ab1..2baaa98 100644
--- a/tests/modifier/CMakeLists.txt
+++ b/tests/modifier/CMakeLists.txt
@@ -35,7 +35,8 @@ add_executable (test_modifier
                 test_modifier_functors.h
                 test_modifier_shortcuts.h
                 test_modifier_string.h
-                test_modifier_view.h)
+                test_modifier_view.h
+                test_modifier_string_padding.h)
 
 # Add dependencies found by find_package (SeqAn).
 target_link_libraries (test_modifier ${SEQAN_LIBRARIES})
diff --git a/tests/modifier/test_modifier.cpp b/tests/modifier/test_modifier.cpp
index 0310f0b..9b139a9 100644
--- a/tests/modifier/test_modifier.cpp
+++ b/tests/modifier/test_modifier.cpp
@@ -39,6 +39,7 @@
 #include "test_modifier_shortcuts.h"
 #include "test_modifier_string.h"
 #include "test_modifier_view.h"
+#include "test_modifier_string_padding.h"
 
 
 SEQAN_BEGIN_TESTSUITE(test_modifier) 
@@ -120,5 +121,14 @@ SEQAN_BEGIN_TESTSUITE(test_modifier)
 
     SEQAN_CALL_TEST(test_modifier_minimal);
     SEQAN_CALL_TEST(test_modifier_reverse_back_front);
+
+    // Test modified string with padding.
+    SEQAN_CALL_TEST(test_modified_string_padding_construction);
+    SEQAN_CALL_TEST(test_modified_string_padding_expand);
+    SEQAN_CALL_TEST(test_modified_string_padding_length);
+    SEQAN_CALL_TEST(test_modified_string_padding_begin);
+    SEQAN_CALL_TEST(test_modified_string_padding_end);
+    SEQAN_CALL_TEST(test_modified_string_padding_difference);
+    SEQAN_CALL_TEST(test_modified_string_padding_iterator);
 }
 SEQAN_END_TESTSUITE
diff --git a/tests/modifier/test_modifier_string.h b/tests/modifier/test_modifier_string.h
index c89cd95..15b460f 100644
--- a/tests/modifier/test_modifier_string.h
+++ b/tests/modifier/test_modifier_string.h
@@ -366,7 +366,7 @@ SEQAN_DEFINE_TEST(test_modifier_modified_string_mod_pos)
 
         seqan::sort(modified);
         SEQAN_ASSERT_EQ(modified, "ACGT");
-        SEQAN_ASSERT_EQ(original, "TGCA");
+        SEQAN_ASSERT_EQ(original, "CGAT");
 
         SEQAN_ASSERT_EQ(infix(modified, 1, 3), "CG");
     }
diff --git a/tests/modifier/test_modifier_string_padding.h b/tests/modifier/test_modifier_string_padding.h
new file mode 100644
index 0000000..063b620
--- /dev/null
+++ b/tests/modifier/test_modifier_string_padding.h
@@ -0,0 +1,184 @@
+// ==========================================================================
+//                 SeqAn - The Library for Sequence Analysis
+// ==========================================================================
+// Copyright (c) 2006-2016, Knut Reinert, FU Berlin
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//     * Neither the name of Knut Reinert or the FU Berlin nor the names of
+//       its contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+//
+// ==========================================================================
+// Author: Rene Rahn <rene.rahn at fu-berlin.de>
+// ==========================================================================
+
+#ifndef TESTS_MODIFIER_MODIFIER_STRING_PADDING_H_
+#define TESTS_MODIFIER_MODIFIER_STRING_PADDING_H_
+
+SEQAN_DEFINE_TEST(test_modified_string_padding_construction)
+{
+    using namespace seqan;
+
+    DnaString seq = "ACGTGGATAGCATCG";
+    ModifiedString<DnaString, ModPadding> modString(seq);
+
+    SEQAN_ASSERT(modString._host == &seq);
+    SEQAN_ASSERT(modString._cargo._paddedValue == 'A');
+    SEQAN_ASSERT(modString._cargo._numPaddedChar == 0u);
+    SEQAN_ASSERT(modString._cargo._remainingSteps == 0u);
+}
+
+SEQAN_DEFINE_TEST(test_modified_string_padding_expand)
+{
+    using namespace seqan;
+
+    DnaString seq = "ACGTGGATAGCATCG";
+    ModifiedString<DnaString, ModPadding> modString(seq);
+    ModifiedString<DnaString, ModPadding> modString2(seq);
+
+    expand(modString, 5);
+    expand(modString2, 5, 'C');
+
+    for (unsigned i = 0; i < 5; ++i)
+    {
+        SEQAN_ASSERT(modString[length(seq) + i] == 'A');
+        SEQAN_ASSERT(modString2[length(seq) + i] == 'C');
+    }
+}
+
+SEQAN_DEFINE_TEST(test_modified_string_padding_length)
+{
+    using namespace seqan;
+
+    DnaString seq = "ACGTGGATAGCATCG";
+    ModifiedString<DnaString, ModPadding> modString(seq);
+
+    SEQAN_ASSERT(length(modString) == length(seq));
+    expand(modString, 5);
+    SEQAN_ASSERT(length(modString) == length(seq) + 5);
+}
+
+SEQAN_DEFINE_TEST(test_modified_string_padding_begin)
+{
+    using namespace seqan;
+
+    DnaString seq = "ACGTGGATAGCATCG";
+    ModifiedString<DnaString, ModPadding> modString(seq);
+
+    auto it = begin(modString, Standard());
+    SEQAN_ASSERT(host(it) == begin(seq, Rooted()));
+    SEQAN_ASSERT_EQ(cargo(it)._remainingSteps, 0u);
+    SEQAN_ASSERT_EQ(cargo(it)._numPaddedChar, 0u);
+
+    expand(modString, 5);
+    it = begin(modString, Standard());
+    SEQAN_ASSERT(host(it) == begin(seq, Rooted()));
+    SEQAN_ASSERT_EQ(cargo(it)._remainingSteps, 5u);
+    SEQAN_ASSERT_EQ(cargo(it)._numPaddedChar, 5u);
+}
+
+SEQAN_DEFINE_TEST(test_modified_string_padding_end)
+{
+    using namespace seqan;
+
+    DnaString seq = "ACGTGGATAGCATCG";
+    ModifiedString<DnaString, ModPadding> modString(seq);
+
+    auto itEnd = end(modString, Standard());
+    SEQAN_ASSERT(host(itEnd) == end(seq, Rooted()));
+    SEQAN_ASSERT_EQ(cargo(itEnd)._remainingSteps, 0u);
+    SEQAN_ASSERT_EQ(cargo(itEnd)._numPaddedChar, 0u);
+
+    expand(modString, 5);
+    itEnd = end(modString, Standard());
+    SEQAN_ASSERT(host(itEnd) == end(seq, Rooted()));
+    SEQAN_ASSERT_EQ(cargo(itEnd)._remainingSteps, 0u);
+    SEQAN_ASSERT_EQ(cargo(itEnd)._numPaddedChar, 5u);
+}
+
+SEQAN_DEFINE_TEST(test_modified_string_padding_difference)
+{
+    using namespace seqan;
+
+    DnaString seq = "ACGTGGATAGCATCG";
+    ModifiedString<DnaString, ModPadding> modString(seq);
+
+    expand(modString, 5);
+
+    auto itB = begin(modString, Standard());
+    auto itE = end(modString, Standard());
+
+    auto pos = 0;
+    for (auto it = itB; it != itE; ++it, ++pos)
+        SEQAN_ASSERT(it - itB == pos);
+}
+
+SEQAN_DEFINE_TEST(test_modified_string_padding_iterator)
+{
+    using namespace seqan;
+
+    DnaString seq = "ACGTGGATAGCATCG";
+    ModifiedString<DnaString, ModPadding> modString(seq);
+
+    expand(modString, 5, static_cast<Dna>('T'));
+
+    // Test begin, end, increment, decrement and dereference
+    auto itSeq = begin(seq, Standard());
+    auto it = begin(modString, Standard());
+    for (; it != end(modString, Standard()); ++it)
+    {
+        if (itSeq < end(seq, Standard()))
+            SEQAN_ASSERT_EQ(*it, *(itSeq++));
+        else
+            SEQAN_ASSERT_EQ(*it, static_cast<Dna>('T'));
+    }
+
+    while (it != begin(modString, Standard()))
+    {
+        --it;
+        if (it - begin(modString, Standard()) < static_cast<typename Difference<decltype(it)>::Type>(length(seq)))
+            SEQAN_ASSERT_EQ(*it, *(--itSeq));
+        else
+            SEQAN_ASSERT_EQ(*it, static_cast<Dna>('T'));
+    }
+
+    // Test advance.
+    SEQAN_ASSERT(it == begin(modString, Standard()));
+    it += 4;
+    SEQAN_ASSERT_EQ(*it, seq[4]);
+    it -= 2;
+    SEQAN_ASSERT_EQ(*it, seq[2]);
+    it += 13;
+    SEQAN_ASSERT_EQ(*it, static_cast<Dna>('T'));
+    it -= 15;
+    SEQAN_ASSERT_EQ(*it, seq[0]);
+    it = it + 17;
+    SEQAN_ASSERT_EQ(*it, static_cast<Dna>('T'));
+    it += 3;
+    SEQAN_ASSERT(it == end(modString, Standard()));
+    it -= 5;
+    SEQAN_ASSERT_EQ(*it, static_cast<Dna>('T'));
+    SEQAN_ASSERT_EQ(*(it - 3), seq[12]);
+}
+
+#endif  // #ifndef TESTS_MODIFIER_MODIFIER_STRING_PADDING_H_
diff --git a/tests/pipe/test_pipe.cpp b/tests/pipe/test_pipe.cpp
index 2cf1e69..0fcac33 100644
--- a/tests/pipe/test_pipe.cpp
+++ b/tests/pipe/test_pipe.cpp
@@ -299,22 +299,18 @@ SEQAN_DEFINE_TEST(test_pipe_test_sorter) {
     testSorter(MAX_SIZE);
 }
 
-template <typename TStringSet>
-inline void appendValues(TStringSet &stringSet, int numArgs, ...)
+template <typename TStringSet, typename T>
+inline void appendValues(TStringSet &stringSet, T t)
 {
-    va_list ap;
-    va_start(ap, numArgs);
-    for(int j = 0; j < numArgs; ++j)
-        appendValue(stringSet, va_arg(ap, char const *));
-    va_end(ap);
+    appendValue(stringSet, t);
 }
 
-template <typename TStringSet, typename TStrings>
-inline void appendValues(TStringSet &stringSet, TStrings const &strings)
+template <typename TStringSet, typename T, typename... Args>
+inline void appendValues(TStringSet &stringSet, T t, Args... args)
 {
-    typename Size<TStrings>::Type numStrings = length(strings);
-    for(int j = 0; j < numStrings; ++j)
-        appendValue(stringSet, strings[j]);
+    // use recursive variadic function, instead of va_list
+    appendValue(stringSet, t);
+    appendValues(stringSet, args...) ;
 }
 
 template <typename TPipe, typename TStrings>
@@ -365,7 +361,7 @@ void testPipeSampler()
         string = "TA";
         SEQAN_ASSERT_EQ(length(source), 2u);
         clear(expectedOutput);
-        appendValues(expectedOutput, 2,
+        appendValues(expectedOutput,
             "< 2 , [T A A] >",
             "< 1 , [A A A] >");
         comparePipeStream(sampler, expectedOutput);
@@ -374,7 +370,7 @@ void testPipeSampler()
         string = "TAC";
         SEQAN_ASSERT_EQ(length(source), 3u);
         clear(expectedOutput);
-        appendValues(expectedOutput, 2,
+        appendValues(expectedOutput,
             "< 2 , [A C A] >",
             "< 1 , [C A A] >");
         comparePipeStream(sampler, expectedOutput);
@@ -383,7 +379,7 @@ void testPipeSampler()
         string = "TACG";
         SEQAN_ASSERT_EQ(length(source), 4u);
         clear(expectedOutput);
-        appendValues(expectedOutput, 3,
+        appendValues(expectedOutput,
             "< 4 , [T A C] >",
             "< 2 , [C G A] >",
             "< 1 , [G A A] >");
@@ -420,7 +416,7 @@ void testPipeSampler()
         SEQAN_ASSERT_EQ(length(source), 106u);
 
         StringSet<CharString> expectedOutput;
-        appendValues(expectedOutput, 53,
+        appendValues(expectedOutput,
             "< < 0 , 9 > , [C G G A A G G] >",
             "< < 0 , 8 > , [G G A A G G C] >",
             "< < 0 , 4 > , [G G C C A A C] >",
@@ -510,7 +506,7 @@ void testPipeTupler()
     StringSet<CharString> expectedOutput;
     if (omitLast)
     {
-        appendValues(expectedOutput, 7,
+        appendValues(expectedOutput,
             "< 0 , [A B C D] >",
             "< 1 , [B C D E] >",
             "< 2 , [C D E F] >",
@@ -521,7 +517,7 @@ void testPipeTupler()
     }
     else
     {
-        appendValues(expectedOutput, 10,
+        appendValues(expectedOutput,
             "< 0 , [A B C D] >",
             "< 1 , [B C D E] >",
             "< 2 , [C D E F] >",
@@ -594,7 +590,7 @@ void testPipeMultiTupler()
     StringSet<CharString> expectedOutput;
     if (omitLast)
     {
-        appendValues(expectedOutput, 14,
+        appendValues(expectedOutput,
             "< < 0 , 0 > , [A B C D] >",
             "< < 0 , 1 > , [B C D E] >",
             "< < 0 , 2 > , [C D E F] >",
@@ -612,7 +608,7 @@ void testPipeMultiTupler()
     }
     else
     {
-        appendValues(expectedOutput, 24,
+        appendValues(expectedOutput,
             "< < 0 , 0 > , [A B C D] >",
             "< < 0 , 1 > , [B C D E] >",
             "< < 0 , 2 > , [C D E F] >",
diff --git a/tests/cuda/CMakeLists.txt b/tests/platform/CMakeLists.txt
similarity index 52%
rename from tests/cuda/CMakeLists.txt
rename to tests/platform/CMakeLists.txt
index 6e565b9..012785a 100644
--- a/tests/cuda/CMakeLists.txt
+++ b/tests/platform/CMakeLists.txt
@@ -1,33 +1,26 @@
 # ===========================================================================
 #                  SeqAn - The Library for Sequence Analysis
 # ===========================================================================
-# File: /tests/cuda/CMakeLists.txt
+# File: /tests/platform/CMakeLists.txt
 #
-# CMakeLists.txt file for the cuda module tests.
+# CMakeLists.txt file for the platform module tests.
 # ===========================================================================
 
 cmake_minimum_required (VERSION 3.0.0)
-project (seqan_tests_cuda CXX)
-message (STATUS "Configuring tests/cuda")
+project (seqan_tests_platform CXX)
+message (STATUS "Configuring tests/platform")
 
 # ----------------------------------------------------------------------------
 # Dependencies
 # ----------------------------------------------------------------------------
 
 # Search SeqAn and select dependencies.
-set (SEQAN_FIND_DEPENDENCIES CUDA)
 find_package (SeqAn REQUIRED)
 
 # ----------------------------------------------------------------------------
 # Build Setup
 # ----------------------------------------------------------------------------
 
-# Setup CUDA flags.
-seqan_setup_cuda_vars (ARCH sm_20 DEBUG_DEVICE DISABLE_WARNINGS)
-
-# Add CXX flags found by find_package (SeqAn).
-set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SEQAN_CXX_FLAGS}")
-
 # Add include directories.
 include_directories (${SEQAN_INCLUDE_DIRS})
 
@@ -35,30 +28,18 @@ include_directories (${SEQAN_INCLUDE_DIRS})
 add_definitions (${SEQAN_DEFINITIONS})
 
 # Update the list of file names below if you add source files to your test.
-if (SEQAN_HAS_CUDA)
-  cuda_add_executable (test_cuda_basic test_cuda_basic.cu)
-  cuda_add_executable (test_cuda_sequence test_cuda_sequence.cu test_cuda_common.h)
-# NOTE(esiragusa): CUDA FM-index is broken.
-#  cuda_add_executable (test_cuda_index test_cuda_index.cu test_cuda_common.h)
-endif ()
+add_executable (test_platform
+                test_platform.cpp
+                test_platform_range_based_for_loops.h)
 
 # Add dependencies found by find_package (SeqAn).
-# NOTE(esiragusa): CUDA FM-index is broken.
+target_link_libraries (test_platform ${SEQAN_LIBRARIES})
 
-if (SEQAN_HAS_CUDA)
-  target_link_libraries (test_cuda_basic ${SEQAN_LIBRARIES})
-  target_link_libraries (test_cuda_sequence ${SEQAN_LIBRARIES})
-# NOTE(esiragusa): CUDA FM-index is broken.
-#  target_link_libraries (test_cuda_index ${SEQAN_LIBRARIES})
-endif ()
+# Add CXX flags found by find_package (SeqAn).
+set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SEQAN_CXX_FLAGS}")
 
 # ----------------------------------------------------------------------------
 # Register with CTest
 # ----------------------------------------------------------------------------
 
-if (SEQAN_HAS_CUDA)
-    add_test (NAME test_test_cuda_basic COMMAND $<TARGET_FILE:test_cuda_basic>)
-    add_test (NAME test_test_cuda_sequence COMMAND $<TARGET_FILE:test_cuda_sequence>)
-# NOTE(esiragusa): CUDA FM-index is broken.
-#    add_test (NAME test_test_cuda_index COMMAND $<TARGET_FILE:test_cuda_index>)
-endif ()
+add_test (NAME test_test_platform COMMAND $<TARGET_FILE:test_platform>)
diff --git a/tests/cuda/test_cuda_common.h b/tests/platform/test_platform.cpp
similarity index 74%
rename from tests/cuda/test_cuda_common.h
rename to tests/platform/test_platform.cpp
index 027c511..1df7589 100644
--- a/tests/cuda/test_cuda_common.h
+++ b/tests/platform/test_platform.cpp
@@ -29,28 +29,16 @@
 // DAMAGE.
 //
 // ==========================================================================
-// Author: Enrico Siragusa <enrico.siragusa at fu-berlin.de>
+// Author: Marcel Ehrhardt <marcel.ehrhardt at fu-berlin.de>
 // ==========================================================================
 
-#ifndef TEST_CUDA_COMMON_H_
-#define TEST_CUDA_COMMON_H_
+#include <seqan/basic.h>
 
-namespace seqan {
+#include "test_platform_range_based_for_loops.h"
 
-// ============================================================================
-// Kernels
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// Kernel testGetValue()
-// ----------------------------------------------------------------------------
-
-template <typename TString, typename TPos, typename TValue>
-SEQAN_GLOBAL void testGetValue(TString str, TPos pos, TValue value)
+SEQAN_BEGIN_TESTSUITE(test_platform)
 {
-    SEQAN_ASSERT_EQ(str[pos], value);
+    SEQAN_CALL_TEST(test_platform_range_based_for_loops1);
+    SEQAN_CALL_TEST(test_platform_range_based_for_loops2);
 }
-
-}
-
-#endif // TEST_CUDA_COMMON_H_
+SEQAN_END_TESTSUITE
diff --git a/include/seqan/system/system_critical_section.h b/tests/platform/test_platform_range_based_for_loops.h
similarity index 56%
rename from include/seqan/system/system_critical_section.h
rename to tests/platform/test_platform_range_based_for_loops.h
index 0fa6c41..63cac6d 100644
--- a/include/seqan/system/system_critical_section.h
+++ b/tests/platform/test_platform_range_based_for_loops.h
@@ -29,81 +29,83 @@
 // DAMAGE.
 //
 // ==========================================================================
-// Author: David Weese <david.weese at fu-berlin.de>
-// ==========================================================================
-// Critical Section class. In conjunction with a condition object it allows
-// to suspend a thread until another wakes it up.
+// Author: Marcel Ehrhardt <marcel.ehrhardt at fu-berlin.de>
 // ==========================================================================
 
-#ifndef SEQAN_HEADER_SYSTEM_CRITICAL_SECTION_H_
-#define SEQAN_HEADER_SYSTEM_CRITICAL_SECTION_H_
+#ifndef TESTS_PLATFORM_TEST_PLATFORM_RANGE_BASED_FOR_LOOPS_H_
+#define TESTS_PLATFORM_TEST_PLATFORM_RANGE_BASED_FOR_LOOPS_H_
 
-namespace seqan {
+#include <string>
+#include <vector>
 
-#ifdef PLATFORM_WINDOWS
+struct String
+{
+    std::string me;
+};
 
-struct CriticalSection
+inline char *
+begin(String & str)
 {
-    CRITICAL_SECTION data_cs;
+    return &str.me[0];
+}
 
-    CriticalSection()
-    {
-        InitializeCriticalSection(&data_cs);
-    }
+inline char *
+end(String & str)
+{
+    return &str.me[0] + str.me.length();
+}
+
+void foobar1()
+{
+    String hello{"world"};
 
-    ~CriticalSection()
+    std::vector<char> hits;
+    for (auto c: hello)
     {
-        DeleteCriticalSection(&data_cs);
+        hits.emplace_back(c);
     }
-};
 
-#else
+    SEQAN_ASSERT_EQ(hits.size(), 5u);
+    SEQAN_ASSERT_EQ(hits[0], 'w');
+    SEQAN_ASSERT_EQ(hits[1], 'o');
+    SEQAN_ASSERT_EQ(hits[2], 'r');
+    SEQAN_ASSERT_EQ(hits[3], 'l');
+    SEQAN_ASSERT_EQ(hits[4], 'd');
+}
 
-struct CriticalSection
+template <bool speed_up>
+void foobar2()
 {
-    pthread_mutex_t data_cs;
+    String hello{"world"};
 
-    CriticalSection()
+    std::vector<char> hits;
+    for (auto c: hello)
     {
-        int result = pthread_mutex_init(&data_cs, NULL);
-        ignoreUnusedVariableWarning(result);
-        SEQAN_ASSERT_EQ(result, 0);
+        hits.emplace_back(c);
     }
 
-    ~CriticalSection()
-    {
-        int result = pthread_mutex_destroy(&data_cs);
-        ignoreUnusedVariableWarning(result);
-        SEQAN_ASSERT_EQ(result, 0);
-    }
-};
-
-#endif
-
-inline void
-lock(CriticalSection &cs)
-{
-#ifdef PLATFORM_WINDOWS
-    EnterCriticalSection(&cs.data_cs);
-#else
-    int result = pthread_mutex_lock(&cs.data_cs);
-    ignoreUnusedVariableWarning(result);
-    SEQAN_ASSERT_EQ(result, 0);
-#endif
+    SEQAN_ASSERT_EQ(hits.size(), 5u);
+    SEQAN_ASSERT_EQ(hits[0], 'w');
+    SEQAN_ASSERT_EQ(hits[1], 'o');
+    SEQAN_ASSERT_EQ(hits[2], 'r');
+    SEQAN_ASSERT_EQ(hits[3], 'l');
+    SEQAN_ASSERT_EQ(hits[4], 'd');
 }
 
-inline void
-unlock(CriticalSection &cs)
-{
-#ifdef PLATFORM_WINDOWS
-    LeaveCriticalSection(&cs.data_cs);
-#else
-    int result = pthread_mutex_unlock(&cs.data_cs);
-    ignoreUnusedVariableWarning(result);
-    SEQAN_ASSERT_EQ(result, 0);
-#endif
+SEQAN_DEFINE_TEST(test_platform_range_based_for_loops1) {
+    foobar1();
 }
 
+SEQAN_DEFINE_TEST(test_platform_range_based_for_loops2) {
+    #if defined(__INTEL_COMPILER)
+        #if __INTEL_COMPILER < 1600 || (__INTEL_COMPILER == 1600 && __INTEL_COMPILER_UPDATE <= 3)
+            SEQAN_SKIP_TEST;
+        #else
+            #warning "The Intel Compiler has a bug for this type of range-based for loop (at least until v16.0.3). Please reevaluate this issue for newer versions."
+        #endif
+    #endif
+
+    foobar2<true>();
 }
 
-#endif  // SEQAN_HEADER_SYSTEM_CRITICAL_SECTION_H_
+#endif
diff --git a/tests/reduced_aminoacid/test_reduced_aminoacid.h b/tests/reduced_aminoacid/test_reduced_aminoacid.h
index 8c74051..97158e0 100644
--- a/tests/reduced_aminoacid/test_reduced_aminoacid.h
+++ b/tests/reduced_aminoacid/test_reduced_aminoacid.h
@@ -180,9 +180,9 @@ SEQAN_DEFINE_TEST(test_reduced_aminoacid_murphy10_moditerators)
 
 struct ReducedFMIndexConfig_
 {
-    typedef size_t                                                 LengthSum;
-    typedef WaveletTree<void, WTRDConfig<LengthSum> >              Bwt;
-    typedef Levels<void, LevelsRDConfig<LengthSum, Alloc<>, 2> >   Sentinels;
+    typedef size_t                                                          LengthSum;
+    typedef WaveletTree<void, WTRDConfig<LengthSum, Alloc<>, 1> >           Bwt;
+    typedef Levels<void, LevelsRDConfig<LengthSum, Alloc<>, 1> >            Sentinels;
 
     static const unsigned SAMPLING = 10;
 };
@@ -223,8 +223,10 @@ SEQAN_DEFINE_TEST(test_reduced_aminoacid_murphy10_modview_fmindex)
     std::vector<std::pair<uint64_t, uint64_t>> hits;
     auto callback = [&] (TIndexIt & indexIt, int)
     {
-        for (auto subjOcc : getOccurrences(indexIt))
+        auto const & occurrences = getOccurrences(indexIt);
+        for (auto it = begin(occurrences), itEnd = end(occurrences); it != itEnd; ++it)
         {
+            auto subjOcc = *it;
             // reverse positions again
             setSeqOffset(subjOcc,
                          length(origSet[getSeqNo(subjOcc)])
diff --git a/tests/score/test_score.cpp b/tests/score/test_score.cpp
index e850c68..9dc358a 100644
--- a/tests/score/test_score.cpp
+++ b/tests/score/test_score.cpp
@@ -666,6 +666,20 @@ SEQAN_DEFINE_TEST(test_score_sequence_entry_for_score)
     testScoreSequenceEntryForScore<ScoreMatrix<AminoAcid, Blosum62_> >();
 }
 
+SEQAN_DEFINE_TEST(test_score_dynamic_score_matrix)
+{
+    Blosum62 blo;
+    SelectableAminoAcidMatrix sel;
+    SEQAN_ASSERT(getScoreMatrixId(sel) != AminoAcidScoreMatrixID::BLOSUM62);
+
+    setScoreMatrixById(sel, AminoAcidScoreMatrixID::BLOSUM62);
+    SEQAN_ASSERT(getScoreMatrixId(sel) == AminoAcidScoreMatrixID::BLOSUM62);
+
+    for (unsigned i = 0; i < ValueSize<AminoAcid>::VALUE; ++i)
+        for (unsigned j = 0; j < ValueSize<AminoAcid>::VALUE; ++j)
+            SEQAN_ASSERT_EQ(score(blo, static_cast<AminoAcid>(i), static_cast<AminoAcid>(j)),
+                            score(sel, static_cast<AminoAcid>(i), static_cast<AminoAcid>(j)));
+}
 
 SEQAN_BEGIN_TESTSUITE(test_score) {
     // Call the tests for this module.
@@ -676,5 +690,6 @@ SEQAN_BEGIN_TESTSUITE(test_score) {
     SEQAN_CALL_TEST(test_score_matrix_file);
     SEQAN_CALL_TEST(test_score_matrix_data);
     SEQAN_CALL_TEST(test_score_sequence_entry_for_score);
+    SEQAN_CALL_TEST(test_score_dynamic_score_matrix);
 }
 SEQAN_END_TESTSUITE
diff --git a/tests/sequence/test_sequence.cpp b/tests/sequence/test_sequence.cpp
index a4e11d5..6bc826e 100644
--- a/tests/sequence/test_sequence.cpp
+++ b/tests/sequence/test_sequence.cpp
@@ -106,8 +106,10 @@ SEQAN_BEGIN_TESTSUITE(Sequence tests)
     SEQAN_CALL_TEST(ticket848);
     SEQAN_CALL_TEST(test_find_motif_memory_leak_ticket_364);
     SEQAN_CALL_TEST(ticket901);
+    #ifndef __OpenBSD__
+    // TODO(h-2): fix this test on OpenBSD (some problem with mmap)
     SEQAN_CALL_TEST(ticket1108);
-
+    #endif
     SEQAN_CALL_TEST(String_Packed_Extension);
 }
 SEQAN_END_TESTSUITE
diff --git a/tests/sequence/test_string_set.h b/tests/sequence/test_string_set.h
index ebcd43f..4b7c313 100755
--- a/tests/sequence/test_string_set.h
+++ b/tests/sequence/test_string_set.h
@@ -1444,141 +1444,6 @@ SEQAN_TYPED_TEST(StringSetTestCommon, GetValueById)
 //    testConstructDeconstruct(strSet);
 }
 
-// // TODO (singer): define behaviour and adjust test.
-// // Infix() compiles and does what it is supposed to do?!
-// // However, it is not very intuitive. For details see comments below.
-// // There is a need to improve the documentation of this!
-// // Test of infix()
-// template <typename TStringSet>
-// void testStringSetInfix(TStringSet & /*Tag*/)
-// {
-//     using namespace seqan;
-// 
-//     typedef typename TestStringSetValue_<TStringSet>::Type TString;
-//     typedef typename RemoveConst<TStringSet>::Type TNonConstStringSet;
-// 
-//     TString str("AAAA");
-//     TString str2("CCC");
-//     TString str3("GGGG");
-//     TNonConstStringSet nonConstStringSet;
-//     appendValue(nonConstStringSet, str);
-//     appendValue(nonConstStringSet, str2);
-//     appendValue(nonConstStringSet, str3);
-// 
-//     // Only non-const test for this scenario possible.
-//     TStringSet stringSet(nonConstStringSet);
-//     TString string = infix(stringSet, 0, 1); // Returns the first character not string!
-//     // std::cerr << string << std::endl; -> "A"
-// 
-//     // Only non-const test for this scenario possible.
-//     // TString str2("TT");
-//     // nonConstStringSet[0] = str2;
-// 
-//     // Since the infix (should) point to the fist element it should point to "T"
-//     // std::cerr << string << std::endl; -> "A"
-//     // Therefore there is a different behaviour to normal strings.
-// }
-// 
-// // TODO(singer): No appendValue for string sets of packed strings
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfix(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfix(StringSet<String<TValue, MMap<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfix(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfix(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfix(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfix(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
-// 
-// // TODO(singer)
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfix(StringSet<String<TValue, External<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue,typename TStringSetSpec>
-// void testStringSetInfix(StringSet<String<TValue, External<> >, TStringSetSpec> const & /*Tag*/) {}
-// 
-// SEQAN_TYPED_TEST(StringSetTestCommon, Infix)
-// {
-//     CountingChar::clear();
-// 
-//     typename TestFixture::TStringSet strSet;
-//     testStringSetInfix(strSet);
-// 
-//     typename TestFixture::TStringSet const constStrSet;
-//     testStringSetInfix(constStrSet);
-// 
-// //    testConstructDeconstruct(strSet);
-// }
-// 
-// // TODO (singer): define behaviour and adjust test.
-// // Infix() compiles and does what it is supposed to do?!
-// // However, it is not very intuitive. For details see comments below.
-// // There is a need to improve the documentation of this!
-// // Test of infixWithLength()
-// template <typename TStringSet>
-// void testStringSetInfixWithLength(TStringSet & /*Tag*/)
-// {
-// using namespace seqan;
-// 
-//     typedef typename TestStringSetValue_<TStringSet>::Type TString;
-//     typedef typename RemoveConst<TStringSet>::Type TNonConstStringSet;
-// 
-//     TString str("AAAA");
-//     TString str2("CCC");
-//     TString str3("GGGG");
-//     TNonConstStringSet nonConstStringSet;
-//     appendValue(nonConstStringSet, str);
-//     appendValue(nonConstStringSet, str2);
-//     appendValue(nonConstStringSet, str3);
-// 
-//     // Only non-const test for this scenario possible.
-//     TStringSet stringSet(nonConstStringSet);
-//     TString string = infixWithLength(stringSet, 0, 1); // Returns the first character not string!
-//     // std::cerr << string << std::endl; -> "A"
-// 
-//     // Only non-const test for this scenario possible.
-//     // TString str2("TT");
-//     // nonConstStringSet[0] = str2;
-// 
-//     // Since the infix (should) point to the fist element it should point to "T"
-//     // std::cerr << string << std::endl; -> "A"
-//     // Therefore there is a different behaviour to normal strings.
-// }
-// // TODO(singer): No appendValue for string sets of packed strings
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfixWithLength(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfixWithLength(StringSet<String<TValue, MMap<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfixWithLength(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfixWithLength(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfixWithLength(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfixWithLength(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
-// 
-// // TODO(singer)
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfixWithLength(StringSet<String<TValue, External<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue,typename TStringSetSpec>
-// void testStringSetInfixWithLength(StringSet<String<TValue, External<> >, TStringSetSpec> const & /*Tag*/) {}
-// 
-// SEQAN_TYPED_TEST(StringSetTestCommon, InfixWithLength)
-// {
-//     CountingChar::clear();
-// 
-//     typename TestFixture::TStringSet strSet;
-//     testStringSetInfixWithLength(strSet);
-// 
-//     typename TestFixture::TStringSet const constStrSet;
-//     testStringSetInfixWithLength(constStrSet);
-// 
-// //    testConstructDeconstruct(strSet);
-// }
-
 // Test of insert().
 // TODO (singer): no insert function implemented.
 template <typename TStringSet>
@@ -1814,61 +1679,6 @@ SEQAN_TYPED_TEST(StringSetTestCommon, Length)
 // //     testConstructDeconstruct(strSet);
 // }
 
-// // TODO (singer): see infix.
-// // Test of prefix().
-// template <typename TStringSet>
-// void testStringSetPrefix(TStringSet & /*Tag*/)
-// {
-//     using namespace seqan;
-//     typedef typename RemoveConst<TStringSet>::Type TNonConstStringSet;
-//     typedef typename TestStringSetValue_<TStringSet>::Type TString;
-// 
-//     TString str("ACGTACGT");
-//     TString str2("GTACGT");
-//     TString str3("TACGT");
-//     TNonConstStringSet nonConstStringSet;
-//     appendValue(nonConstStringSet, str);
-//     appendValue(nonConstStringSet, str2);
-//     appendValue(nonConstStringSet, str3);
-//     TStringSet stringSet(nonConstStringSet);
-//     TString pref = prefix(stringSet, 3);
-//     TString str4("ACG");
-//     SEQAN_ASSERT_EQ(pref, str4);
-// }
-// 
-// // TODO(singer): No appendValue for string sets of packed strings
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetPrefix(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetPrefix(StringSet<String<TValue, MMap<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetPrefix(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetPrefix(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetPrefix(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetPrefix(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
-// 
-// // TODO(singer)
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetPrefix(StringSet<String<TValue, External<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetPrefix(StringSet<String<TValue, External<> >, TStringSetSpec> const & /*Tag*/) {}
-// 
-// SEQAN_TYPED_TEST(StringSetTestCommon, Prefix)
-// {
-//     CountingChar::clear();
-// 
-//     typename TestFixture::TStringSet strSet;
-//     testStringSetPrefix(strSet);
-// 
-//     typename TestFixture::TStringSet const constStrSet;
-//     testStringSetPrefix(constStrSet);
-// 
-// //    testConstructDeconstruct(strSet);
-// }
-
 // TODO (singer); replace is not defined for string sets.
 //// Test of replace().
 //template <typename TStringSet>
@@ -1973,63 +1783,6 @@ SEQAN_TYPED_TEST(StringSetTestCommon, Resize)
 //    testConstructDeconstruct(strSet);
 }
 
-// // TODO (singer): see infix.
-// // Test of suffix().
-// template <typename TStringSet>
-// void testStringSetSuffix(TStringSet & /*Tag*/)
-// {
-//     using namespace seqan;
-//     typedef typename RemoveConst<TStringSet>::Type TNonConstStringSet;
-//     typedef typename TestStringSetValue_<TStringSet>::Type TString;
-// 
-//     TString str("ACGTACGT");
-//     TString str2("GTACGT");
-//     TString str3("TACGT");
-//     TNonConstStringSet nonConstStringSet;
-//     appendValue(nonConstStringSet, str);
-//     appendValue(nonConstStringSet, str2);
-//     appendValue(nonConstStringSet, str3);
-//     TStringSet stringSet(nonConstStringSet);
-//     TString pref = suffix(stringSet, 5);
-//     TString str4("CGT");
-//     SEQAN_ASSERT_EQ(pref, str4);
-// }
-// 
-// // TODO(singer): No appendValue for string sets of packed strings
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetSuffix(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetSuffix(StringSet<String<TValue, MMap<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetSuffix(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetSuffix(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetSuffix(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetSuffix(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
-// 
-// 
-// // TODO(singer)
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetSuffix(StringSet<String<TValue, External<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetSuffix(StringSet<String<TValue, External<> >, TStringSetSpec> const & /*Tag*/) {}
-// 
-// SEQAN_TYPED_TEST(StringSetTestCommon, Suffix)
-// {
-//     CountingChar::clear();
-// 
-//     typename TestFixture::TStringSet strSet;
-//     testStringSetSuffix(strSet);
-// 
-//     typename TestFixture::TStringSet const constStrSet;
-//     testStringSetSuffix(constStrSet);
-// 
-// //    testConstructDeconstruct(strSet);
-// }
-
-
 // TODO (singer): swap is not working because a constructor string set (StringSet(StringSet, Move)) is missing.
 // Test of swap().
 // template <typename TStringSet>
@@ -2277,4 +2030,272 @@ SEQAN_TYPED_TEST(StringSetTestCommon, Value)
 // ////    testConstructDeconstruct(strSet);
 // }
 
+// ----------------------------------------------------------------------------
+// Issue #1678
+// ----------------------------------------------------------------------------
+
+template <typename TStringSet>
+void testStringSetInfix(TStringSet & set)
+{
+    typedef typename Value<TStringSet>::Type TSetValue;
+    typedef typename Infix<TStringSet>::Type TSetInfix;
+
+    bool res = IsSameType<TSetValue, typename Value<TSetInfix>::Type>::VALUE;
+    SEQAN_ASSERT(res);
+
+    TSetInfix inf = infix(set, 1, 3);
+
+    SEQAN_ASSERT(length(inf) == 2u);
+    SEQAN_ASSERT(inf[0] == set[1]);
+    SEQAN_ASSERT(inf[1] == set[2]);
+}
+
+template <typename TStringSet>
+void testStringSetSuffix(TStringSet & set)
+{
+    typedef typename Value<TStringSet>::Type TSetValue;
+    typedef typename Suffix<TStringSet>::Type TSetSuffix;
+
+    bool res = IsSameType<TSetValue, typename Value<TSetSuffix>::Type>::VALUE;
+
+    SEQAN_ASSERT(res);
+
+    TSetSuffix suf = suffix(set, 1);
+
+    SEQAN_ASSERT(length(suf) == 3u);
+    SEQAN_ASSERT(suf[0] == set[1]);
+    SEQAN_ASSERT(suf[1] == set[2]);
+    SEQAN_ASSERT(suf[2] == set[3]);
+}
+
+template <typename TStringSet>
+void testStringSetPrefix(TStringSet & set)
+{
+    typedef typename Value<TStringSet>::Type TSetValue;
+    typedef typename Prefix<TStringSet>::Type TSetPrefix;
+
+    bool res = IsSameType<TSetValue, typename Value<TSetPrefix>::Type>::VALUE;
+
+    SEQAN_ASSERT(res);
+
+    TSetPrefix pref = prefix(set, 3);
+
+    SEQAN_ASSERT(length(pref) == 3u);
+    SEQAN_ASSERT(pref[0] == set[0]);
+    SEQAN_ASSERT(pref[1] == set[1]);
+    SEQAN_ASSERT(pref[2] == set[2]);
+}
+
+SEQAN_TYPED_TEST(StringSetTestCommon, Infix)
+{
+    CountingChar::clear();
+    typedef typename TestFixture::TStringSet TSet;
+
+    TSet strSet;
+    char raw1[] = "AAAA";
+    char raw2[] = "CCCC";
+    char raw3[] = "GGGG";
+    char raw4[] = "TTTT";
+
+    appendValue(strSet, raw1);
+    appendValue(strSet, raw2);
+    appendValue(strSet, raw3);
+    appendValue(strSet, raw4);
+
+    TSet const constStrSet(strSet);
+
+    testStringSetInfix(strSet);
+    testStringSetInfix(constStrSet);
+}
+
+SEQAN_TYPED_TEST(StringSetTestCommon, Prefix)
+{
+    CountingChar::clear();
+
+    typename TestFixture::TStringSet strSet;
+
+    char raw1[] = "AAAA";
+    char raw2[] = "CCCC";
+    char raw3[] = "GGGG";
+    char raw4[] = "TTTT";
+
+    appendValue(strSet, raw1);
+    appendValue(strSet, raw2);
+    appendValue(strSet, raw3);
+    appendValue(strSet, raw4);
+
+    testStringSetPrefix(strSet);
+
+    typename TestFixture::TStringSet const constStrSet(strSet);
+    testStringSetPrefix(constStrSet);
+}
+
+SEQAN_TYPED_TEST(StringSetTestCommon, Suffix)
+{
+    CountingChar::clear();
+
+    typename TestFixture::TStringSet strSet;
+
+    char raw1[] = "AAAA";
+    char raw2[] = "CCCC";
+    char raw3[] = "GGGG";
+    char raw4[] = "TTTT";
+
+    appendValue(strSet, raw1);
+    appendValue(strSet, raw2);
+    appendValue(strSet, raw3);
+    appendValue(strSet, raw4);
+
+    testStringSetSuffix(strSet);
+
+    typename TestFixture::TStringSet const constStrSet(strSet);
+    testStringSetSuffix(constStrSet);
+}
+
+// ----------------------------------------------------------------------------
+// Tests InfixOnValue, SuffixOnValue, PrefixOnValue
+// ----------------------------------------------------------------------------
+
+template <typename TString, typename TSpec>
+constexpr bool _isAlwaysInfix(StringSet<TString, ConcatDirect<TSpec> > const &)
+{
+    return true;
+}
+
+template <typename TString, typename TSpec>
+constexpr bool _isAlwaysInfix(StringSet<TString, Segment<TSpec> > const &)
+{
+    return true;
+}
+
+template <typename TStringSet>
+constexpr bool _isAlwaysInfix(TStringSet const &)
+{
+    return false;
+}
+
+template <typename TStringSet>
+void testStringSetInfixOnValue(TStringSet & set)
+{
+    typedef typename Value<TStringSet>::Type                TSetValue;
+    typedef typename InfixOnValue<TStringSet>::Type          TSetInfixOnValue;
+    typedef typename StringSetPosition<TStringSet>::Type    TSetPosition;
+
+    bool res = IsSameType<TSetInfixOnValue, typename Infix<TSetValue>::Type>::VALUE;
+    SEQAN_ASSERT(res);
+
+    TSetInfixOnValue inf = infix(set, TSetPosition(1, 1), TSetPosition(1, 3));
+
+    SEQAN_ASSERT(length(inf) == 2u);
+    SEQAN_ASSERT(inf == infix(set[1], 1, 3));
+}
+
+template <typename TStringSet>
+void testStringSetSuffixOnValue(TStringSet & set)
+{
+    typedef typename Value<TStringSet>::Type                TSetValue;
+    typedef typename SuffixOnValue<TStringSet>::Type         TSetSuffixOnValue;
+    typedef typename StringSetPosition<TStringSet>::Type    TSetPosition;
+
+    bool res = false;
+
+    if (_isAlwaysInfix(set))
+        res = IsSameType<TSetSuffixOnValue, typename Infix<TSetValue>::Type>::VALUE;
+    else
+        res = IsSameType<TSetSuffixOnValue, typename Suffix<TSetValue>::Type>::VALUE;
+
+    SEQAN_ASSERT(res);
+
+    TSetSuffixOnValue suf = suffix(set, TSetPosition(2, 1));
+
+    SEQAN_ASSERT(length(suf) == 3u);
+    SEQAN_ASSERT(suf == suffix(set[2], 1));
+}
+
+template <typename TStringSet>
+void testStringSetPrefixOnValue(TStringSet & set)
+{
+    typedef typename Value<TStringSet>::Type                TSetValue;
+    typedef typename PrefixOnValue<TStringSet>::Type         TSetPrefixOnValue;
+    typedef typename StringSetPosition<TStringSet>::Type    TSetPosition;
+
+    bool res = false;
+
+    if (_isAlwaysInfix(set))
+        res = IsSameType<TSetPrefixOnValue, typename Infix<TSetValue>::Type>::VALUE;
+    else
+        res = IsSameType<TSetPrefixOnValue, typename Prefix<TSetValue>::Type>::VALUE;
+
+    SEQAN_ASSERT(res);
+
+    TSetPrefixOnValue pref = prefix(set, TSetPosition(0, 3));
+
+    SEQAN_ASSERT(length(pref) == 3u);
+    SEQAN_ASSERT(pref == prefix(set[0], 3));
+}
+
+SEQAN_TYPED_TEST(StringSetTestCommon, InfixOnValue)
+{
+    CountingChar::clear();
+    typedef typename TestFixture::TStringSet TSet;
+
+    TSet strSet;
+    char raw1[] = "ACGT";
+    char raw2[] = "CGTA";
+    char raw3[] = "GTAC";
+    char raw4[] = "TACG";
+
+    appendValue(strSet, raw1);
+    appendValue(strSet, raw2);
+    appendValue(strSet, raw3);
+    appendValue(strSet, raw4);
+
+    TSet const constStrSet(strSet);
+
+    testStringSetInfixOnValue(strSet);
+    testStringSetInfixOnValue(constStrSet);
+}
+
+SEQAN_TYPED_TEST(StringSetTestCommon, PrefixOnValue)
+{
+    CountingChar::clear();
+
+    typename TestFixture::TStringSet strSet;
+    char raw1[] = "ACGT";
+    char raw2[] = "CGTA";
+    char raw3[] = "GTAC";
+    char raw4[] = "TACG";
+
+    appendValue(strSet, raw1);
+    appendValue(strSet, raw2);
+    appendValue(strSet, raw3);
+    appendValue(strSet, raw4);
+
+    testStringSetPrefixOnValue(strSet);
+
+    typename TestFixture::TStringSet const constStrSet(strSet);
+    testStringSetPrefixOnValue(constStrSet);
+}
+
+SEQAN_TYPED_TEST(StringSetTestCommon, SuffixOnValue)
+{
+    CountingChar::clear();
+
+    typename TestFixture::TStringSet strSet;
+    char raw1[] = "ACGT";
+    char raw2[] = "CGTA";
+    char raw3[] = "GTAC";
+    char raw4[] = "TACG";
+
+    appendValue(strSet, raw1);
+    appendValue(strSet, raw2);
+    appendValue(strSet, raw3);
+    appendValue(strSet, raw4);
+
+    testStringSetSuffixOnValue(strSet);
+
+    typename TestFixture::TStringSet const constStrSet(strSet);
+    testStringSetSuffixOnValue(constStrSet);
+}
+
 #endif // TESTS_SEQUENCE_TEST_STRINGSET_H_
diff --git a/tests/stream/test_stream_file_stream.h b/tests/stream/test_stream_file_stream.h
index ee0f899..b9bc574 100644
--- a/tests/stream/test_stream_file_stream.h
+++ b/tests/stream/test_stream_file_stream.h
@@ -60,7 +60,7 @@ public:
 // FileStream Specs
 // --------------------------------------------------------------------------
 
-#ifdef PLATFORM_WINDOWS
+#ifdef STDLIB_VS
 typedef TagList<Async<> > FileStreamSpecs;
 #else
 typedef
diff --git a/util/bin/auto_build.py b/util/bin/auto_build.py
index 8e6916a..75e883b 100755
--- a/util/bin/auto_build.py
+++ b/util/bin/auto_build.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """SeqAn Automatic Build System."""
 
 import os.path
diff --git a/util/bin/dddoc.py b/util/bin/dddoc.py
index 264d918..a90657b 100755
--- a/util/bin/dddoc.py
+++ b/util/bin/dddoc.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """SeqAn Documentation System DDDoc."""
 
 import os.path
diff --git a/util/bin/demo_checker.py b/util/bin/demo_checker.py
index ec4617a..fe21e11 100755
--- a/util/bin/demo_checker.py
+++ b/util/bin/demo_checker.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Demo checker script.
 
 Given a demo .cpp file PATH.cpp we can make it a small test if there is a file
@@ -12,19 +12,44 @@ if the exit code is 0 and the standard/error output is the same as in the
 a failure as well.
 """
 
-__author__ = 'Manuel Holtgrewe <manuel.holtgrewe at fu-berlin.de>'
+__author__ = """Manuel Holtgrewe <manuel.holtgrewe at fu-berlin.de>
+                Temesgen H. Dadi <temesgen.dadi at fu-berlin.de>
+            """
 
 
 import argparse
 import difflib
 import subprocess
 import sys
-
+import re
 
 def t(s):
     """Force Windows line endings to Unix line endings."""
     return s.replace("\r\n", "\n")
 
+def fuzzyEqual(pattern, text):
+    """checks if the expected output is eqal to the actualoutput using a reqex
+        use the literal [VAR] if the part of the output is not expected to be the same all the time.
+    """
+    if len(pattern) != len(text):
+        print >> sys.stderr, 'Number of lines differ. Expected output has %s lines whereas actual has %s lines.' % (len(pattern), len(text))
+        return False
+    for i in range(len(pattern)):
+        T = text[i]
+        P = pattern[i]
+        if T == P :
+            continue
+        else :
+            if '[VAR]' not in P:
+                print >> sys.stderr, 'Line %s is different between expected and actual outputs.' % (i)
+                return False
+            else:
+                P = (re.escape(P)).replace('\\[VAR\\]', "[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?")
+                r = re.compile(P)
+                if re.match(r, T) == None:
+                    print >> sys.stderr, 'Line %s is different (REGEX) between expected and actual outputs.' % (i)
+                    return False
+    return True
 
 def loadExpected(args):
     """Load the expected file contents."""
@@ -35,14 +60,14 @@ def loadExpected(args):
     if args.stderr_path:
         with open(args.stderr_path, 'rb') as f:
             err = f.read()
-    return t(out).split('\n'), t(err).split('\n')
+    return t(out.strip()).split('\n'), t(err.strip()).split('\n')
 
 
 def runDemo(args):
     cmd = [args.binary_path]
     p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
     stdoutbuff, stderrbuff = p.communicate()
-    return t(stdoutbuff).split('\n'), t(stderrbuff).split('\n'), p.returncode
+    return t(stdoutbuff.strip()).split('\n'), t(stderrbuff.strip()).split('\n'), p.returncode
 
 
 def main():
@@ -58,8 +83,6 @@ def main():
                         default=None)
     args = parser.parse_args()
 
-    print >>sys.stderr, 'Loading files "%s", "%s".' % (args.stdout_path, args.stderr_path)
-    expected_out, expected_err = loadExpected(args)
     print >>sys.stderr, 'Running %s.' % args.binary_path
     actual_out, actual_err, ret = runDemo(args)
 
@@ -69,7 +92,12 @@ def main():
     else:
         print >>sys.stderr, 'Return code was %s.' % ret
 
-    if expected_out != actual_out:
+    print >>sys.stderr, 'Loading files "%s", "%s".' % (args.stdout_path, args.stderr_path)
+    expected_out, expected_err = loadExpected(args)
+    is_stdout_as_expected = fuzzyEqual(expected_out, actual_out)
+    is_stderr_as_expected = fuzzyEqual(expected_err, actual_err)
+
+    if not is_stdout_as_expected:
         print >>sys.stderr, 'The standard output was not as expected!'
         l = difflib.context_diff(expected_out, actual_out,
                                  fromfile='expected', tofile='actual')
@@ -77,7 +105,7 @@ def main():
     else:
         print >>sys.stderr, 'Standard output was as expected.'
 
-    if expected_err != actual_err:
+    if not is_stderr_as_expected:
         print >>sys.stderr, 'The standard error was not as expected!'
         l = difflib.context_diff(expected_err, actual_err,
                                  fromfile='expected', tofile='actual')
@@ -85,7 +113,8 @@ def main():
     else:
         print >>sys.stderr, 'Standard error was as expected.'
 
-    return not (expected_out == expected_out and expected_err == actual_err)
+    # here we used not because we need return-code 0 (False) if test is successful 
+    return not (is_stdout_as_expected and is_stderr_as_expected)
 
 
 if __name__ == '__main__':
diff --git a/util/bin/dox.py b/util/bin/dox.py
index 662b57e..8766006 100755
--- a/util/bin/dox.py
+++ b/util/bin/dox.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """SeqAn doxygen-style documentation system."""
 
 import os.path
diff --git a/util/bin/fixgcov.py b/util/bin/fixgcov.py
index 52bcb79..efa1d42 100755
--- a/util/bin/fixgcov.py
+++ b/util/bin/fixgcov.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Fix gcov output.
 
 Fix gcov output with templates.  This is done by first parsing in the .cpp files
diff --git a/util/bin/profile2pdf.py b/util/bin/profile2pdf.py
index 6ee828f..06a11c0 100755
--- a/util/bin/profile2pdf.py
+++ b/util/bin/profile2pdf.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Convert SeqAn profiling information into PDF graphic.
 
 USAGE: profile2pdf.py <program.profile.txt> <out.pdf>
diff --git a/util/bin/pyclangcheck.py b/util/bin/pyclangcheck.py
index 87a296b..c26b48a 100755
--- a/util/bin/pyclangcheck.py
+++ b/util/bin/pyclangcheck.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """llvm-clang based style checker."""
 
 __author__ = 'Manuel Holtgrewe <manuel.holtgrewe at fu-berlin.de>'
diff --git a/util/bin/release_page.py b/util/bin/release_page.py
deleted file mode 100755
index f30354d..0000000
--- a/util/bin/release_page.py
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env python
-"""Build SeqAn Release Page."""
-
-import os.path
-import sys
-
-def main():
-    path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'py_lib'))
-    sys.path.insert(0, path)
-    import seqan.release_page
-    return seqan.release_page.main()
-
-if __name__ == '__main__':
-    sys.exit(main())
diff --git a/util/bin/skel.py b/util/bin/skel.py
index 5e357b4..dfdbfb2 100755
--- a/util/bin/skel.py
+++ b/util/bin/skel.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """SeqAn Skelleton Creation."""
 
 import os.path
diff --git a/util/cmake/FindSeqAn.cmake b/util/cmake/FindSeqAn.cmake
index 00a952a..078dad9 100644
--- a/util/cmake/FindSeqAn.cmake
+++ b/util/cmake/FindSeqAn.cmake
@@ -34,46 +34,29 @@
 #
 #   find_package(SeqAn [REQUIRED] ...)
 #
-# You can control the exact behaviour by setting the following variables.  The
-# defaults are given after the variable name.
-#
-#   SEQAN_FIND_DEPENDENCIES   -- DEFAULT
-#   SEQAN_FIND_ENABLE_TESTING -- TRUE if ${CMAKE_BUILD_TYPE} == "Debug", FALSE
-#                                otherwise.
-#
-# For example:
-#
-#   set (SEQAN_FIND_DEPENDENCIES ZLIB BZip2)
-#   find_package (SeqAn)
-#
-# The first variable is either "ALL", "DEFAULT" or a list of dependency names
-# and gives the names of the dependencies to search for.  The other two
-# variables can be used to forcibly enabling/disabling the debug and testing
-# mode.
-#
-# Valid dependencies are:
-#
-#   ALL     -- Forcibly enable all dependencies.
-#   DEFAULT -- Enable default dependencies (zlib, OpenMP if available)
-#   NONE    -- Disable all dependencies.
+# SeqAn has some optional dependencies that you must search for **before**
+# you search for SeqAn:
 #
 #   ZLIB    -- zlib compression library
 #   BZip2   -- libbz2 compression library
 #   OpenMP  -- OpenMP language extensions to C/C++
-#   CUDA    -- CUDA language extensions to C/C++
 #
+# E.g.
+#   find_package (ZLIB)
+#   find_package (BZip2)
+#   find_package (SeqAn [REQUIRED] ...)
 #
 # Once the search has been performed, the following variables will be set.
 #
 #  SEQAN_FOUND           -- Indicate whether SeqAn was found.
 #
-# These variables are flags that indicate whether the various dependencies
+# (the dependencies have their own *_FOUND  variables, but inside the code we
+# also define the following macros to indicate whether dependencies were found:
 # of the SeqAn library were found.
 #
 #  SEQAN_HAS_ZLIB
 #  SEQAN_HAS_BZIP2
 #  SEQAN_HAS_OPENMP
-#  SEQAN_HAS_CUDA
 #
 # These variables give lists that are to be passed to the
 # include_directories(), target_link_libraries(), and add_definitions()
@@ -83,14 +66,6 @@
 #  SEQAN_LIBRARIES
 #  SEQAN_DEFINITIONS
 #
-# Additionally, the following two variables are set.  The first contains
-# the include paths for SeqAn, the second for dependencies.  This allows to
-# include the dependency headers using include_directories (SYSTEM ...),
-# such that warnings from these headers do not appear in the nightly builds.
-#
-#  SEQAN_INCLUDE_DIRS_MAIN
-#  SEQAN_INCLUDE_DIRS_DEPS
-#
 # The C++ compiler flags to set.
 #
 #  SEQAN_CXX_FLAGS
@@ -114,7 +89,7 @@ include(CheckCXXSourceCompiles)
 # ----------------------------------------------------------------------------
 
 set(_SEQAN_DEFAULT_LIBRARIES ZLIB OpenMP)
-set(_SEQAN_ALL_LIBRARIES     ZLIB BZip2 OpenMP CUDA)
+set(_SEQAN_ALL_LIBRARIES     ZLIB BZip2 OpenMP)
 
 # ----------------------------------------------------------------------------
 # Set variables SEQAN_FIND_* to their default unless they have been set.
@@ -129,11 +104,6 @@ elseif (SEQAN_FIND_DEPENDENCIES STREQUAL "NONE")
   set(SEQAN_FIND_DEPENDENCIES)
 endif ()
 
-# SEQAN_FIND_ENABLE_TESTING
-if (NOT SEQAN_FIND_ENABLE_TESTING)
-  set(SEQAN_FIND_ENABLE_TESTING "FALSE")
-endif ()
-
 # SEQAN_FIND_DEPENDENCIES IS DEPRECATED, just use find_package!
 
 # ----------------------------------------------------------------------------
@@ -142,53 +112,55 @@ endif ()
 
 # Recognize Clang compiler.
 
-set (COMPILER_IS_CLANG FALSE)
+set (COMPILER_CLANG FALSE)
+set (COMPILER_GCC FALSE)
+set (COMPILER_LINTEL FALSE)
+set (COMPILER_WINTEL FALSE)
+set (COMPILER_MSVC FALSE)
+set (STDLIB_VS ${MSVC})
+
 if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
-  set (COMPILER_IS_CLANG TRUE)
-endif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
-
-set (CMAKE_COMPILER_IS_GNUCXX FALSE)
-if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
-  set (CMAKE_COMPILER_IS_GNUCXX TRUE)
-endif (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
-
-# Intel
-set (COMPILER_IS_INTEL FALSE)
-if (CMAKE_CXX_COMPILER_ID MATCHES "Intel")
-  set (COMPILER_IS_INTEL TRUE)
-endif (CMAKE_CXX_COMPILER_ID MATCHES "Intel")
-
-# Visual Studio
-set (COMPILER_IS_MSVC FALSE)
-if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
-  set (COMPILER_IS_MSVC TRUE)
-endif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
+  set (COMPILER_CLANG TRUE)
+elseif (CMAKE_CXX_COMPILER_ID MATCHES "Intel" AND STDLIB_VS)
+  set (COMPILER_WINTEL TRUE)
+elseif (CMAKE_CXX_COMPILER_ID MATCHES "Intel")
+  set (COMPILER_LINTEL TRUE)
+elseif (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+  set (COMPILER_GCC TRUE)
+elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
+  set (COMPILER_MSVC TRUE)
+endif ()
 
 # ----------------------------------------------------------------------------
 # Check required compiler versions.
 # ----------------------------------------------------------------------------
 
-if (CMAKE_COMPILER_IS_GNUCXX)
+if (COMPILER_GCC)
 
     # require at least gcc 4.9
     if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9)
         message(AUTHOR_WARNING "GCC version (${CMAKE_CXX_COMPILER_VERSION}) should be at least 4.9! Anything below is untested.")
     endif ()
 
-elseif (COMPILER_IS_CLANG)
+elseif (COMPILER_CLANG)
 
     # require at least clang 3.5
     if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.5)
         message(AUTHOR_WARNING "Clang version (${CMAKE_CXX_COMPILER_VERSION}) should be at least 3.5! Anything below is untested.")
     endif ()
 
-elseif (COMPILER_IS_MSVC)
+elseif (COMPILER_LINTEL OR COMPILER_WINTEL)
+
+    # require at least icpc 16.0.2
+    if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16.0.2)
+        message(AUTHOR_WARNING "Intel Compiler version (${CMAKE_CXX_COMPILER_VERSION}) should be at least 16.0.2! Anything below is untested.")
+    endif ()
+
+elseif (COMPILER_MSVC)
 
     # require at least MSVC 19.0
     if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.0")
         message(FATAL_ERROR "MSVC version (${CMAKE_CXX_COMPILER_VERSION}) must be at least 19.0 (Visual Studio 2015)!")
-    else ()
-        set (CXX11_FOUND TRUE CACHE INTERNAL "Availability of c++11") # always active
     endif ()
 
 else ()
@@ -196,36 +168,35 @@ else ()
 endif ()
 
 # ----------------------------------------------------------------------------
-# Require C++11
+# Require C++14
 # ----------------------------------------------------------------------------
 
-if (NOT CXX11_FOUND)
+# The visual studio compiler and intel compiler on windows defines __cplusplus
+# still as 199711L, thus the check below would fail.
+if (NOT (COMPILER_MSVC OR COMPILER_WINTEL))
     set(CXXSTD_TEST_SOURCE
-    "#if !defined(__cplusplus) || (__cplusplus < 201103L)
-    #error NOCXX11
+    "#if !defined(__cplusplus) || (__cplusplus < 201300L)
+    #error NOCXX14
     #endif
     int main() {}")
-    check_cxx_source_compiles("${CXXSTD_TEST_SOURCE}" CXX11_DETECTED)
-    set (CXX11_FOUND ${CXX11_DETECTED} CACHE INTERNAL "Availability of c++11")
-    if (NOT CXX11_FOUND)
-        message (FATAL_ERROR "SeqAn requires C++11 since v2.1.0, but your compiler does "
-                "not support it. Make sure that you specify -std=c++11 in your CMAKE_CXX_FLAGS. "
-                "If you absolutely know what you are doing, you can overwrite this check "
-                " by defining CXX11_FOUND.")
-        return ()
-    endif (NOT CXX11_FOUND)
-endif (NOT CXX11_FOUND)
+    check_cxx_source_compiles("${CXXSTD_TEST_SOURCE}" CXX14_BUILTIN)
+    if (NOT CXX14_BUILTIN)
+        set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
+        check_cxx_source_compiles("${CXXSTD_TEST_SOURCE}" CXX14_FLAG)
+        if (NOT CXX14_FLAG)
+            message (FATAL_ERROR "SeqAn requires C++14 since v2.2.0, but your compiler does not support it.")
+            return ()
+        endif ()
+    endif ()
+endif ()
 
 # ----------------------------------------------------------------------------
 # Compile-specific settings and workarounds around missing CMake features.
 # ----------------------------------------------------------------------------
 
-# GCC Setup
-
-if (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG OR COMPILER_IS_INTEL)
+# GCC/CLANG/ICC
+if (COMPILER_GCC OR COMPILER_CLANG OR COMPILER_LINTEL)
   # Tune warnings for GCC.
-  set (CMAKE_CXX_WARNING_LEVEL 4)
-  set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -W -Wall -Wno-long-long -fstrict-aliasing -Wstrict-aliasing")
   set (SEQAN_DEFINITIONS ${SEQAN_DEFINITIONS} -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64)
 
   # Determine GCC version.
@@ -240,16 +211,6 @@ if (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG OR COMPILER_IS_INTEL)
   STRING(REGEX REPLACE ".*([0-9])\\.([0-9]).*" "\\1\\20"
          _GCC_VERSION ${__GCC_VERSION})
 
-  # Add -Wno-longlong if the GCC version is < 4.0.0.  Add -pedantic flag but
-  # disable warnings for variadic macros with GCC >= 4.0.0.  Earlier versions
-  # warn because of anonymous variadic macros in pedantic mode but do not have
-  # a flag to disable these warnings.
-  if (400 GREATER _GCC_VERSION)
-    set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -Wno-long-long")
-  else (400 GREATER _GCC_VERSION)
-    set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -pedantic -Wno-variadic-macros")
-  endif (400 GREATER _GCC_VERSION)
-
   # Force GCC to keep the frame pointer when debugging is enabled.  This is
   # mainly important for 64 bit but does not get into the way on 32 bit either
   # at minimal performance impact.
@@ -258,43 +219,22 @@ if (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG OR COMPILER_IS_INTEL)
   elseif (CMAKE_BUILD_TYPE STREQUAL RelWithDebInfo)
     set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} ${SEQAN_CXX_FLAGS_RELEASE} -g -fno-omit-frame-pointer")
   endif ()
-
-  # disable some warnings on ICC
-  if (COMPILER_IS_INTEL)
-    set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -wd3373,2102")
-  endif (COMPILER_IS_INTEL)
 endif ()
 
 # Windows Setup
-
 if (WIN32)
   # Always set NOMINMAX such that <Windows.h> does not define min/max as
   # macros.
-  set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -DNOMINMAX")
+  set (SEQAN_DEFINITIONS ${SEQAN_DEFINITIONS} -DNOMINMAX)
 endif (WIN32)
 
 # Visual Studio Setup
-if (MSVC)
+if (COMPILER_MSVC OR COMPILER_WINTEL)
   # Enable intrinics (e.g. _interlockedIncrease)
-  set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} /EHsc /Oi")
-  # Warning level 3 for MSVC is disabled for now to see how much really bad warnings there are.
-  #set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} /W3)
-
-  # TODO(holtgrew): This rather belongs into the SeqAn build system and notso much into FindSeqAn.cmake.
-
-  # Force to always compile with W2.
-  # Use the /W2 warning level for visual studio.
-  SET(CMAKE_CXX_WARNING_LEVEL 2)
-  if (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
-    STRING (REGEX REPLACE "/W[0-4]"
-            "/W2" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
-  else (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
-    set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} /W2")
-  endif (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
-
-  # Disable warnings about unsecure (although standard) functions.
-  set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} /D_SCL_SECURE_NO_WARNINGS")
-endif (MSVC)
+  # /EHsc will be set automatically for COMPILER_MSVC and COMPILER_WINTEL, but
+  # COMPILER_CLANG (clang/c2 3.7) can not handle the /EHsc and /Oi flag
+  set (SEQAN_DEFINITIONS ${SEQAN_DEFINITIONS} /Oi)
+endif ()
 
 # ----------------------------------------------------------------------------
 # Search for directory seqan.
@@ -342,16 +282,6 @@ else (SEQAN_USE_SEQAN_BUILD_SYSTEM)
 endif (SEQAN_USE_SEQAN_BUILD_SYSTEM)
 
 # ----------------------------------------------------------------------------
-# Set defines for debug and testing.
-# ----------------------------------------------------------------------------
-
-if (SEQAN_FIND_ENABLE_TESTING)
-  set(SEQAN_DEFINITIONS ${SEQAN_DEFINITIONS} -DSEQAN_ENABLE_TESTING=1)
-else ()
-  set(SEQAN_DEFINITIONS ${SEQAN_DEFINITIONS} -DSEQAN_ENABLE_TESTING=0)
-endif ()
-
-# ----------------------------------------------------------------------------
 # Search for dependencies.
 # ----------------------------------------------------------------------------
 
@@ -359,7 +289,7 @@ endif ()
 
 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
   set (SEQAN_LIBRARIES ${SEQAN_LIBRARIES} rt pthread)
-elseif (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
+elseif ((${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") OR (${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD"))
   set (SEQAN_LIBRARIES ${SEQAN_LIBRARIES} pthread)
   set (SEQAN_DEFINITIONS ${SEQAN_DEFINITIONS} "-D_GLIBCXX_USE_C99=1")
 endif ()
@@ -370,9 +300,11 @@ check_include_file_cxx(execinfo.h _SEQAN_HAVE_EXECINFO)
 mark_as_advanced(_SEQAN_HAVE_EXECINFO)
 if (_SEQAN_HAVE_EXECINFO)
   set(SEQAN_DEFINITIONS ${SEQAN_DEFINITIONS} "-DSEQAN_HAS_EXECINFO=1")
-  if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
+  if ((${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") OR (${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD"))
     set (SEQAN_LIBRARIES ${SEQAN_LIBRARIES} execinfo elf)
-  endif (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
+  endif ()
+else (_SEQAN_HAVE_EXECINFO)
+  set(SEQAN_DEFINITIONS ${SEQAN_DEFINITIONS} "-DSEQAN_HAS_EXECINFO=0")
 endif (_SEQAN_HAVE_EXECINFO)
 
 # ZLIB
@@ -423,9 +355,14 @@ if (NOT _SEQAN_FIND_OPENMP EQUAL -1)
 endif ()
 
 if (OPENMP_FOUND)
-    if (COMPILER_IS_CLANG AND (_GCC_VERSION MATCHES "^37[0-9]$"))
+    if (COMPILER_CLANG AND (_GCC_VERSION MATCHES "^37[0-9]$"))
         message (STATUS "Because of a bug in clang-3.7.x OpenMP cannot be used (even if available). Please update your clang!")
         set (OPENMP_FOUND FALSE)
+    elseif (COMPILER_CLANG AND STDLIB_VS AND (_GCC_VERSION MATCHES "^38[0-9]$"))
+        # The compiler also issues a warning
+        # clang.exe : warning : '-fopenmp=libomp': OpenMP is not supported
+        message (STATUS "The clang/c2 compiler on windows (version 3.7 and 3.8) doesn't support OpenMP!")
+        set (OPENMP_FOUND FALSE)
     else ()
         set (SEQAN_HAS_OPENMP TRUE) # deprecated: use OPENMP_FOUND instead
         set (SEQAN_LIBRARIES         ${SEQAN_LIBRARIES}         ${OpenMP_LIBRARIES})
@@ -435,18 +372,18 @@ if (OPENMP_FOUND)
     endif ()
 endif ()
 
-# CUDA
-
-list(FIND SEQAN_FIND_DEPENDENCIES "CUDA" _SEQAN_FIND_CUDA)
-mark_as_advanced(_SEQAN_FIND_CUDA)
-
-set (SEQAN_HAS_CUDA FALSE)
-if (SEQAN_ENABLE_CUDA AND NOT _SEQAN_FIND_CUDA EQUAL -1)
-  find_package(CUDA QUIET)
-  if (CUDA_FOUND)
-    set (SEQAN_HAS_CUDA TRUE)
-  endif ()
-endif (SEQAN_ENABLE_CUDA AND NOT _SEQAN_FIND_CUDA EQUAL -1)
+if (Boost_FOUND)
+  # Example warning:
+  # C:\seqan-deps\boost_1_53_0\boost/mpl/if.hpp(131,1): error : pasting formed
+  # 'BOOST_PP_TUPLE_ELEM_E_2(', an invalid preprocessing token
+  if (COMPILER_CLANG AND STDLIB_VS)
+    message (STATUS "The boost library (at least until 1.53) doesn't support the clang/c2 compiler on windows (version 3.7 and 3.8), yet!")
+    set (Boost_FOUND FALSE)
+    unset(Boost_INCLUDE_DIRS)
+    unset(Boost_LIBRARY_DIRS)
+    unset(Boost_LIBRARIES)
+  endif()
+endif()
 
 # Build SEQAN_INCLUDE_DIRS from SEQAN_INCLUDE_DIRS_MAIN and SEQAN_INCLUDE_DIRS_DEPS
 
@@ -528,7 +465,6 @@ if (SEQAN_FIND_DEBUG)
   message("  SEQAN_HAS_ZLIB             ${SEQAN_HAS_ZLIB}")
   message("  SEQAN_HAS_BZIP2            ${SEQAN_HAS_BZIP2}")
   message("  SEQAN_HAS_OPENMP           ${SEQAN_HAS_OPENMP}")
-  message("  SEQAN_HAS_CUDA             ${SEQAN_HAS_CUDA}")
   message("")
   message("  SEQAN_INCLUDE_DIRS         ${SEQAN_INCLUDE_DIRS}")
   message("  SEQAN_INCLUDE_DIRS_DEPS    ${SEQAN_INCLUDE_DIRS_DEPS}")
diff --git a/util/cmake/SeqAnBuildSystem.cmake b/util/cmake/SeqAnBuildSystem.cmake
index 487f334..0b6d2f5 100644
--- a/util/cmake/SeqAnBuildSystem.cmake
+++ b/util/cmake/SeqAnBuildSystem.cmake
@@ -40,44 +40,67 @@
 # Valid values for SEQAN_BUILD_SYSTEM:
 #
 # DEVELOP
-# SEQAN_RELEASE
+# SEQAN_RELEASE_APPS
 # SEQAN_RELEASE_LIBRARY
 # APP:${app_name}
 
 include (SeqAnUsabilityAnalyzer)
 include (CheckCXXCompilerFlag)
 
+set (COMPILER_CLANG FALSE)
+set (COMPILER_GCC FALSE)
+set (COMPILER_LINTEL FALSE)
+set (COMPILER_WINTEL FALSE)
+set (COMPILER_MSVC FALSE)
+set (STDLIB_VS ${MSVC})
+
+if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+  set (COMPILER_CLANG TRUE)
+elseif (CMAKE_CXX_COMPILER_ID MATCHES "Intel" AND STDLIB_VS)
+  set (COMPILER_WINTEL TRUE)
+elseif (CMAKE_CXX_COMPILER_ID MATCHES "Intel")
+  set (COMPILER_LINTEL TRUE)
+elseif (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+  set (COMPILER_GCC TRUE)
+elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
+  set (COMPILER_MSVC TRUE)
+endif ()
+
 # ---------------------------------------------------------------------------
 # Enable /bigobj flag on Windows.
 # ---------------------------------------------------------------------------
 
 # We need the /bigobj switch on windows (for 64 bit builds only actually).
 # Set target system to be Windows Vista and later.
-if (MSVC)
-  add_definitions (/bigobj /D_WIN32_WINNT=0x0600 /DWINVER=0x0600)
-elseif (MINGW)
-  add_definitions (-D_WIN32_WINNT=0x0600 -DWINVER=0x0600)
-endif (MSVC)
+if (COMPILER_MSVC OR COMPILER_WINTEL)
+    # Set /bigobj for COMPILER_MSVC and COMPILER_WINTEL, but COMPILER_CLANG on
+    # windows (clang/c2 3.7) can not handle it.
+    add_definitions (/bigobj)
+endif()
+
+if (STDLIB_VS)
+    add_definitions (-D_WIN32_WINNT=0x0600 -DWINVER=0x0600)
+endif ()
 
 # ---------------------------------------------------------------------------
-# Set architecture for MinGW.
-#
-# If we do not set i586 as the architecture for MinGW then generating atomic
-# expressions will fail.
+# Is it a 32 bit platform?
 # ---------------------------------------------------------------------------
+if (CMAKE_SIZEOF_VOID_P EQUAL 4)
+    set(SEQAN_32BIT_TARGET_PLATFORM 1)
+    set(SEQAN_64BIT_TARGET_PLATFORM 0)
+else()
+    set(SEQAN_32BIT_TARGET_PLATFORM 0)
+    set(SEQAN_64BIT_TARGET_PLATFORM 1)
+endif()
 
-if (MINGW)
-	if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
-	    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=i586")
-	endif ("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
-endif (MINGW)
+# ---------------------------------------------------------------------------
 
 # ---------------------------------------------------------------------------
 # Disable false positive terminal detection in Xcode
 # ---------------------------------------------------------------------------
 
 if (CMAKE_GENERATOR STREQUAL Xcode)
-  add_definitions (-DSEQAN_NO_TERMINAL)
+    add_definitions (-DSEQAN_NO_TERMINAL)
 endif (CMAKE_GENERATOR STREQUAL Xcode)
 
 # ---------------------------------------------------------------------------
@@ -114,20 +137,15 @@ endfunction (add_executable)
 # ---------------------------------------------------------------------------
 
 macro (seqan_register_apps)
-    # Set SeqAn flags.
-    set (SEQAN_FIND_ENABLE_TESTING 0)
-    set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DSEQAN_ENABLE_DEBUG=0")
-    set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DSEQAN_ENABLE_DEBUG=0")
-    set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSEQAN_ENABLE_DEBUG=1")
 
     # enable static linkage for seqan apps
     if (SEQAN_STATIC_APPS AND (NOT CMAKE_SYSTEM_NAME MATCHES "Windows"))
         set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
         if (APPLE)
             # static build not supported on apple, but at least we can include gcc libs
-            if (CMAKE_COMPILER_IS_GNUCXX)
+            if (COMPILER_GCC)
                 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++")
-            endif (CMAKE_COMPILER_IS_GNUCXX)
+            endif (COMPILER_GCC)
         else (APPLE)
             set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
 
@@ -148,9 +166,6 @@ macro (seqan_register_apps)
         endif (APPLE)
     endif (SEQAN_STATIC_APPS AND (NOT CMAKE_SYSTEM_NAME MATCHES "Windows"))
 
-    # Enable global exception handler for all seqan apps.
-    set (SEQAN_DEFINITIONS "${SEQAN_DEFINITIONS} -DSEQAN_GLOBAL_EXCEPTION_HANDLER")
-
     # Get all direct entries of the current source directory into ENTRIES.
     file (GLOB ENTRIES
           RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
@@ -161,8 +176,7 @@ macro (seqan_register_apps)
     foreach (ENTRY ${ENTRIES})
         if (IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${ENTRY})
             if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${ENTRY}/CMakeLists.txt)
-                if (("${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE") OR
-                    ("${SEQAN_BUILD_SYSTEM}" STREQUAL "DEVELOP") OR
+                if (("${SEQAN_BUILD_SYSTEM}" STREQUAL "DEVELOP") OR
                     ("${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE_APPS") OR
                     ("${SEQAN_BUILD_SYSTEM}" STREQUAL "APP:${ENTRY}"))
                     add_subdirectory(${ENTRY})
@@ -182,55 +196,112 @@ macro (seqan_build_system_init)
     # Enable CTest and command add_test().
     enable_testing ()
 
+    # GENERAL SETUP
+    set (_CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/include")
+    set (CMAKE_INCLUDE_PATH ${_CMAKE_INCLUDE_PATH} CACHE STRING "")
+    set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSEQAN_ENABLE_DEBUG=1")
+#     set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSEQAN_ENABLE_DEBUG=1" PARENT_SCOPE)
+    # Enable global exception handler for all "official" stuff
+    set (SEQAN_DEFINITIONS "${SEQAN_DEFINITIONS} -DSEQAN_GLOBAL_EXCEPTION_HANDLER=1")
+    set (CMAKE_RUNTIME_OUTPUT_DIRECTORY
+         ${PROJECT_BINARY_DIR}/bin)
+
+    if (STDLIB_VS)
+        # Disable warnings about unsecure (although standard) functions
+        # @see https://msdn.microsoft.com/en-us/library/aa985974.aspx
+        set (SEQAN_DEFINITIONS ${SEQAN_DEFINITIONS} -D_SCL_SECURE_NO_WARNINGS)
+
+        # 'strcpy' is deprecated: This function or variable may be unsafe.
+        # Consider using strcpy_s instead. To disable deprecation, use
+        # @see https://msdn.microsoft.com/en-us/library/8ef0s5kh.aspx
+        set (SEQAN_DEFINITIONS ${SEQAN_DEFINITIONS} -D_CRT_SECURE_NO_WARNINGS)
+    endif()
+
+    # Set Warnings
+    # NOTE(marehr): COMPILER_CLANG on windows uses the same flags as on linux,
+    # whereas COMPILER_WINTEL uses on windows the same flags as COMPILER_MSVC.
+    if (COMPILER_MSVC)
+        # TODO(h-2): raise this to W4
+        set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} /W2")
+    elseif (COMPILER_WINTEL)
+        # TODO(h-2): raise this to W4
+        set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} /W3")
+    else()
+        set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -W -Wall -pedantic -fstrict-aliasing -Wstrict-aliasing")
+        set (SEQAN_DEFINITIONS ${SEQAN_DEFINITIONS} -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64)
+
+        # disable some warnings on ICC
+        if (COMPILER_LINTEL)
+            # warning #3373: nonstandard use of "auto" to both deduce the type
+            # from an initializer and to announce a trailing return type
+            set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -wd3373,2102")
+        endif ()
+    endif ()
+
     if (NOT SEQAN_BUILD_SYSTEM)
-        set (SEQAN_BUILD_SYSTEM "DEVELOP")
+        set (SEQAN_BUILD_SYSTEM "DEVELOP" CACHE STRING "Build/Release mode to select. One of DEVELOP SEQAN_RELEASE, APP:\${APP_NAME}. Defaults to DEVELOP.")
     endif (NOT SEQAN_BUILD_SYSTEM)
     set (SEQAN_APP_VERSION "0.0.0" CACHE STRING "Version of the application.")
     set (SEQAN_NIGHTLY_RELEASE FALSE CACHE BOOL "Set to TRUE to enable nightly app releases.")
 
-    if (("${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE") OR
-        ("${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE_LIBRARY"))
-        # Install SeqAn LICENSE, README.rst, CHANGELOG.rst files.
-        install (FILES LICENSE
-                       README.rst
-                       CHANGELOG.rst
-                 DESTINATION share/doc/seqan)
-        # Install pkg-config file, except on Windows.
-        if (NOT CMAKE_SYSTEM_NAME MATCHES Windows)
-            configure_file("util/pkgconfig/seqan.pc.in" "${CMAKE_BINARY_DIR}/util/pkgconfig/seqan-${SEQAN_VERSION_MAJOR}.pc" @ONLY)
-            install(FILES "${CMAKE_BINARY_DIR}/util/pkgconfig/seqan-${SEQAN_VERSION_MAJOR}.pc" DESTINATION share/pkgconfig)
-            # Install FindSeqAn TODO(h-2) rename FindSeqAn.cmake to FindSeqAn${SEQAN_VERSION_MAJOR}.cmake after 2.x cycle
-            install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/util/cmake/FindSeqAn.cmake" DESTINATION share/cmake/Modules)
-        endif (NOT CMAKE_SYSTEM_NAME MATCHES Windows)
+    ## options
+    if (NOT SEQAN_64BIT_TARGET_PLATFORM)
+        set (SEQAN_ARCH_SSE4 FALSE)
+        set (SEQAN_ARCH_AVX2 FALSE)
     endif ()
 
-    if (("${SEQAN_BUILD_SYSTEM}" MATCHES "SEQAN_RELEASE") OR
-        ("${SEQAN_BUILD_SYSTEM}" MATCHES "APP"))
-        set (SEQAN_STATIC_APPS TRUE CACHE INTERNAL "Create static app binaries")
+    if (COMPILER_MSVC)
+        set (SEQAN_STATIC_APPS FALSE)
+        set (SEQAN_ARCH_SSE4 FALSE)
+        set (SEQAN_ARCH_AVX2 FALSE)
+        set (SEQAN_ARCH_NATIVE FALSE)
     endif ()
 
-    set (SEQAN_BUILD_SYSTEM "DEVELOP" CACHE STRING "Build/Release mode to select. One of DEVELOP SEQAN_RELEASE, APP:\${APP_NAME}. Defaults to DEVELOP.")
-
-    set (_CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/include")
-    set (CMAKE_INCLUDE_PATH ${_CMAKE_INCLUDE_PATH} CACHE STRING "")
-
-    SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY
-         ${PROJECT_BINARY_DIR}/bin)
+    if (${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
+        set (SEQAN_STATIC_APPS FALSE)
+        if (SEQAN_ARCH_NATIVE)
+            set (SEQAN_ARCH_NATIVE FALSE)
+            set (SEQAN_ARCH_SSE4 TRUE)
+            message (STATUS "OpenBSD does not support native, but SSE4 was activated instead.")
+        endif ()
+    endif ()
 
-    if (NOT MSVC)
-        # find the highest c++ standard and select it
-        check_cxx_compiler_flag("-std=c++11" CXX11_DETECTED)
-        check_cxx_compiler_flag("-std=c++14" CXX14_DETECTED)
+    # Enable SSE4 if AVX2 is set.
+    if (SEQAN_ARCH_AVX2)
+        set (SEQAN_ARCH_SSE4 TRUE)
     endif ()
 
-    set (CXX11_FOUND ${CXX11_DETECTED} CACHE INTERNAL "Availability of c++11")
-    set (CXX14_FOUND ${CXX14_DETECTED} CACHE INTERNAL "Availability of c++14")
+    if (SEQAN_STATIC_APPS)
+        message (STATUS "Building static apps.")
+        # implementation in seqan_register_apps()
+    endif ()
 
-    if (CXX14_FOUND)
-        set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
-    elseif (CXX11_FOUND)
-        set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+    # machine specific optimizations
+    if (SEQAN_ARCH_NATIVE)
+        message (STATUS "Building binaries optimized for this specific CPU. They might not work elsewhere.")
+        set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -march=native")
+        if (COMPILER_LINTEL)
+            set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -ipo -no-prec-div -fp-model fast=2 -xHOST")
+        endif ()
+    else ()
+        if (SEQAN_ARCH_SSE4)
+            if (SEQAN_ARCH_AVX2)
+                message (STATUS "Building optimized binaries up to AVX2 and POPCNT.")
+                set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -mavx -mavx2")
+            else ()
+                message (STATUS "Building optimized binaries up to SSE4 and POPCNT.")
+            endif ()
+            set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -mmmx -msse -msse2 -msse3 -mssse3 -msse4")
+            if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
+                set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -mpopcnt")
+            endif ()
+            if (COMPILER_LINTEL)
+                set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -ipo -no-prec-div -fp-model fast=2")
+            endif ()
+        endif ()
     endif ()
+    # TODO(h-2): for icc on windows, replace the " -" in SEQAN_CXX_FLAGS with " /"
+    #            find out whether clang/c2 takes - or / options
 
 endmacro (seqan_build_system_init)
 
@@ -269,8 +340,22 @@ endmacro (seqan_add_app_test APP_NAME)
 macro (seqan_setup_library)
     # Only install the library if the virtual build packages "SEQAN_RELEASE"
     # or "SEQAN_LIBRARY_ONLY" are chosen.
-    if (("${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE") OR
-        ("${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE_LIBRARY"))
+    if (("${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE_LIBRARY"))
+
+        # Install SeqAn LICENSE, README.rst, CHANGELOG.rst files.
+        install (FILES LICENSE
+                       README.rst
+                       CHANGELOG.rst
+                 DESTINATION share/doc/seqan)
+        # Install pkg-config file, except on Windows.
+        if (NOT CMAKE_SYSTEM_NAME MATCHES Windows)
+            configure_file("util/pkgconfig/seqan.pc.in" "${CMAKE_BINARY_DIR}/util/pkgconfig/seqan-${SEQAN_VERSION_MAJOR}.pc" @ONLY)
+            install(FILES "${CMAKE_BINARY_DIR}/util/pkgconfig/seqan-${SEQAN_VERSION_MAJOR}.pc" DESTINATION share/pkgconfig)
+        endif (NOT CMAKE_SYSTEM_NAME MATCHES Windows)
+        # Install FindSeqAn TODO(h-2) rename FindSeqAn.cmake to FindSeqAn${SEQAN_VERSION_MAJOR}.cmake after 2.x cycle
+        install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/util/cmake/FindSeqAn.cmake" DESTINATION share/cmake/Modules)
+
+        # Install headers
         file (GLOB HEADERS
               RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
               include/seqan/[A-z]*/[A-z]/[A-z]*.h
@@ -341,6 +426,85 @@ macro (seqan_setup_install_vars APP_NAME)
 endmacro (seqan_setup_install_vars)
 
 # ---------------------------------------------------------------------------
+# Macro seqan_install_required_system_libraries ()
+#
+# When packaging apps copy needed dlls
+# ---------------------------------------------------------------------------
+
+macro(INTEL_FILES_FOR_VERSION version)
+  # version can be 2016
+  set(v "${version}")
+
+  # set intel architecture
+  if (CMAKE_MSVC_ARCH STREQUAL "x64")
+    set(CMAKE_INTEL_ARCH "intel64")
+  else ()
+    set(CMAKE_INTEL_ARCH "ia32")
+  endif()
+
+  # Find the runtime library redistribution directory.
+  set(programfilesx86 "ProgramFiles(x86)")
+  find_path(INTEL${v}_REDIST_DIR NAMES ${CMAKE_INTEL_ARCH}/compiler
+    PATHS
+      "$ENV{ProgramFiles}/IntelSWTools/compilers_and_libraries_${v}/windows/redist"
+      "$ENV{${programfilesx86}}/IntelSWTools/compilers_and_libraries_${v}/windows/redist"
+    )
+  mark_as_advanced(INTEL${v}_REDIST_DIR)
+  set(INTEL${v}_FILES_DIR "${INTEL${v}_REDIST_DIR}/${CMAKE_INTEL_ARCH}/compiler")
+
+  if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
+    set(__install__libs
+      "${INTEL${v}_FILES_DIR}/libmmd.dll"
+      )
+
+    if(CMAKE_INSTALL_OPENMP_LIBRARIES)
+      set(__install__libs ${__install__libs}
+        "${INTEL${v}_FILES_DIR}/libiomp5md.dll"
+        )
+    endif()
+  else()
+    set(__install__libs)
+  endif()
+
+  if(CMAKE_INSTALL_DEBUG_LIBRARIES)
+    set(__install__libs ${__install__libs}
+      "${INTEL${v}_FILES_DIR}/libmmdd.dll"
+      )
+  endif()
+
+  foreach(lib
+      ${__install__libs}
+      )
+    if(EXISTS ${lib})
+      set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS
+        ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} ${lib})
+    else()
+      if(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
+        message(WARNING "system runtime library file does not exist: '${lib}'")
+        # This warning indicates an incomplete Visual Studio installation
+        # or a bug somewhere above here in this file.
+        # If you would like to avoid this warning, fix the real problem, or
+        # set CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS before including
+        # this file.
+      endif()
+    endif()
+  endforeach()
+endmacro()
+
+macro (seqan_install_required_system_libraries)
+  set (CMAKE_INSTALL_OPENMP_LIBRARIES ${OPENMP_FOUND})
+
+  # include intel dll's
+  if(COMPILER_WINTEL)
+    INTEL_FILES_FOR_VERSION(2016)
+  endif()
+
+  # The following include automates the MS Redistributable installer.
+  set (CMAKE_INSTALL_UCRT_LIBRARIES TRUE)
+  include (InstallRequiredSystemLibraries)
+endmacro()
+
+# ---------------------------------------------------------------------------
 # Macro seqan_configure_cpack_app (APP_NAME APP_DIR)
 #
 # Setup variables for install, depending on build mode.
@@ -349,13 +513,20 @@ endmacro (seqan_setup_install_vars)
 # ---------------------------------------------------------------------------
 
 macro (seqan_configure_cpack_app APP_NAME APP_DIR)
-  # The following include automates the MS Redistributable installer.
-  include (InstallRequiredSystemLibraries)
+  seqan_install_required_system_libraries()
 
   if (CMAKE_SYSTEM_NAME MATCHES "Windows")
-    set (CPACK_GENERATOR "ZIP")
-  else ()
-    set (CPACK_GENERATOR "ZIP;TXZ")
+    set(CPACK_GENERATOR "ZIP;NSIS")
+  elseif (CMAKE_SYSTEM_NAME MATCHES "Darwin")
+    set(CPACK_GENERATOR "ZIP;DragNDrop")
+  elseif (CMAKE_VERSION VERSION_LESS "3.1") # TXZ support since 3.1
+    set(CPACK_GENERATOR "TBZ2")
+  else()
+    set(CPACK_GENERATOR "TXZ")
+  endif ()
+
+  if (CMAKE_SYSTEM_NAME MATCHES "Linux")
+    set(CPACK_GENERATOR "${CPACK_GENERATOR};DEB;RPM")
   endif ()
 
   # Set defaults for CPACK_PACKAGE_DESCRIPTION_FILE and CPACK_RESOURCE_FILE_LICENSE
@@ -412,65 +583,6 @@ endmacro (seqan_configure_cpack_app)
 
 
 # ---------------------------------------------------------------------------
-# Macro seqan_setup_cuda_vars ([DISABLE_WARNINGS] [DEBUG_DEVICE]
-#                              [ARCH sm_xx] [FLAGS flags ...])
-#
-# Setup CUDA variables.
-# ---------------------------------------------------------------------------
-
-macro (seqan_setup_cuda_vars)
-  cmake_parse_arguments(_SEQAN_CUDA
-                        "DISABLE_WARNINGS;DEBUG_DEVICE"
-                        "ARCH"
-                        "FLAGS"
-                        ${ARGN})
-  if (SEQAN_HAS_CUDA)
-    # Wrap nvcc to make cudafe output gcc-like.
-    find_program (COLOR_NVCC colornvcc PATHS ${CMAKE_SOURCE_DIR}/util NO_DEFAULT_PATH)
-    set (CUDA_NVCC_EXECUTABLE ${COLOR_NVCC})
-
-    # Build CUDA targets from the given architecture upwards.
-    set (CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -arch ${_SEQAN_CUDA_ARCH} ${_SEQAN_CUDA_FLAGS}")
-
-    # Add debug symbols to device code.
-    if (_SEQAN_CUDA_DISABLE_WARNINGS)
-      set (CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -G")
-    endif ()
-
-    # Add flags for the CUDA compiler.
-    list (APPEND CUDA_NVCC_FLAGS_RELEASE "-O3")
-    list (APPEND CUDA_NVCC_FLAGS_MINSIZEREL "-O3")
-    list (APPEND CUDA_NVCC_FLAGS_RELWITHDEBINFO "-O3 -g -lineinfo")
-    list (APPEND CUDA_NVCC_FLAGS_DEBUG "-O0 -g -lineinfo")
-
-    if (_SEQAN_CUDA_DISABLE_WARNINGS)
-      # Disable all CUDA warnings.
-      set (CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} --disable-warnings")
-    else ()
-      # Disable only Thrust warnings.
-      string (REGEX REPLACE "-Wall" ""
-              SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS}")
-      string (REGEX REPLACE "-pedantic" ""
-              SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS}")
-      if (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG)
-        set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -Wno-unused-parameter")
-      endif (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG)
-    endif ()
-
-    # Fix CUDA on OSX.
-    if (APPLE AND COMPILER_IS_CLANG)
-      # (weese:) I had to deactivate the C compiler override to make it compile again
-      # NVCC mistakes /usr/bin/cc as gcc.
-      #list (APPEND CUDA_NVCC_FLAGS "-ccbin /usr/bin/clang")
-      # NVCC does not support libc++.
-#(h-2): deactivated the following line because it affects non-cude, too; also this should work with modern nvcc
-#       set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libstdc++")
-    endif ()
-  endif ()
-endmacro (seqan_setup_cuda_vars)
-
-
-# ---------------------------------------------------------------------------
 # Function seqan_get_version()
 #
 # Sets the variables SEQAN_VERSION, SEQAN_VERSION_MAJOR, SEQAN_VERSION_MINOR,
@@ -595,33 +707,7 @@ endmacro (_seqan_setup_demo_test CPP_FILE)
 # them.
 # ---------------------------------------------------------------------------
 
-# NOTE that we look with default SeqAn dependencies and also build if some are not found. The demos themselves must contain the appropriate #if preprocessor statements.
-
-# Install all demo source files.
-macro (seqan_install_demos_release)
-    # Set flags for SeqAn. Use PARENT_SCOPE since it is called from within a function.
-    set (SEQAN_FIND_ENABLE_TESTING 0 PARENT_SCOPE)
-    set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DSEQAN_ENABLE_DEBUG=0" PARENT_SCOPE)
-    set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DSEQAN_ENABLE_DEBUG=0" PARENT_SCOPE)
-    set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSEQAN_ENABLE_DEBUG=1" PARENT_SCOPE)
-
-    # Get a list of all .cpp and .cu files in the current directory.
-    file (GLOB_RECURSE ENTRIES
-          RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
-          ${CMAKE_CURRENT_SOURCE_DIR}/[!.]*.cpp
-          ${CMAKE_CURRENT_SOURCE_DIR}/[!.]*.cu)
-
-    # Set global definitions set for demos.
-    add_definitions (${SEQAN_DEFINITIONS})
-
-    # Get path to current source directory, relative from root.  Will be used to install demos in.
-    file (RELATIVE_PATH INSTALL_DIR "${SEQAN_ROOT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}")
-
-    # Install all demo files into "share/doc/seqan/demos" (demos comes from INSTALL_DIR).
-    install (FILES ${ENTRIES} DESTINATION "share/doc/seqan/${INSTALL_DIR}")
-endmacro (seqan_install_demos_release)
-
-macro (seqan_build_demos_develop PREFIX)
+function (seqan_register_demos PREFIX)
     # Get a list of all .cpp and .cu files in the current directory.
     file (GLOB_RECURSE ENTRIES
           RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
@@ -634,70 +720,47 @@ macro (seqan_build_demos_develop PREFIX)
     find_package (BZip2)
     find_package (SeqAn REQUIRED)
 
-    if (OPENMP_FOUND AND CMAKE_COMPILER_IS_GNUCXX)
-        set(SEQAN_LIBRARIES ${SEQAN_LIBRARIES} -lgomp)
-    endif()
-    # Setup include directories and definitions for SeqAn; flags follow below.
-    include_directories (${SEQAN_INCLUDE_DIRS})
-    add_definitions (${SEQAN_DEFINITIONS})
-
     # Supress unused parameter warnings for demos.
-    if (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG)
+    if (COMPILER_GCC OR COMPILER_CLANG)
         set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -Wno-unused-parameter")
-    endif (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG)
-
-    # Setup flags for CUDA demos.
-    seqan_setup_cuda_vars(ARCH sm_20 DEBUG_DEVICE DISABLE_WARNINGS)
+    endif (COMPILER_GCC OR COMPILER_CLANG)
 
     # Add SeqAn flags to CXX and NVCC flags.
     # Set to PARENT_SCOPE since this macro is executed from within a function which declares it's own scope.
-    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SEQAN_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" PARENT_SCOPE)
+    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SEQAN_CXX_FLAGS}" PARENT_SCOPE)
+    # Setup include directories and definitions for SeqAn; flags follow below.
+    include_directories (${SEQAN_INCLUDE_DIRS})
+    add_definitions (${SEQAN_DEFINITIONS})
 
     # Add all demos with found flags in SeqAn.
     foreach (ENTRY ${ENTRIES})
-        string (REPLACE "/" "_" BIN_NAME "${ENTRY}")
-        string (REPLACE "\\" "_" BIN_NAME "${BIN_NAME}")
-        get_filename_component (BIN_NAME "${BIN_NAME}" NAME_WE)
-
-        get_filename_component (FILE_NAME "${ENTRY}" NAME)
-        if ("${FILE_NAME}" MATCHES "\\.cu$")
-            if (SEQAN_HAS_CUDA)
-                cuda_add_executable(${PREFIX}${BIN_NAME} ${ENTRY})
-                target_link_libraries (${PREFIX}${BIN_NAME} ${SEQAN_LIBRARIES})
-                if (APPLE AND COMPILER_IS_CLANG)
-                    set_target_properties (${PREFIX}${BIN_NAME} PROPERTIES LINK_FLAGS -stdlib=libstdc++)
-                endif ()
-                _seqan_setup_demo_test (${ENTRY} ${PREFIX}${BIN_NAME})
-            endif ()
-        else ()
-            if ("${FILE_NAME}" MATCHES "queue_example.cpp" AND COMPILER_IS_MSVC)
-                message(STATUS "Not building demo ${FILE_NAME} under visual studio." )
-                continue()
-            endif ()
+        set (SKIP FALSE)
+        # workaround a bug in llvm35 on FreeBSD
+        if ((ENTRY MATCHES "zip") AND
+            (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") AND
+            (COMPILER_CLANG) AND
+            (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.5.0) AND
+            (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.6.0))
+            set (SKIP TRUE)
+        # bug in visual studio
+        elseif ((ENTRY MATCHES "queue_example.cpp") AND
+                COMPILER_MSVC)
+            set (SKIP TRUE)
+        endif ()
+
+        if (SKIP)
+            message(STATUS "${ENTRY} skipped on this platform." )
+        else (SKIP)
+            string (REPLACE "/" "_" BIN_NAME "${ENTRY}")
+            string (REPLACE "\\" "_" BIN_NAME "${BIN_NAME}")
+            get_filename_component (BIN_NAME "${BIN_NAME}" NAME_WE)
+
+            get_filename_component (FILE_NAME "${ENTRY}" NAME)
             add_executable(${PREFIX}${BIN_NAME} ${ENTRY})
             target_link_libraries (${PREFIX}${BIN_NAME} ${SEQAN_LIBRARIES})
             _seqan_setup_demo_test (${ENTRY} ${PREFIX}${BIN_NAME})
-        endif ()
+        endif (SKIP)
     endforeach (ENTRY ${ENTRIES})
-endmacro (seqan_build_demos_develop)
-
-function (seqan_register_demos)
-    # Set optional parameter with index 0 into variable PREFIX.
-    if (${ARGC} GREATER 0)
-        set (PREFIX ${ARGV0})
-    else (${ARGC} GREATER 0)
-        set (PREFIX "")
-    endif (${ARGC} GREATER 0)
-
-    # Enable global exception handler for demos.
-    set (SEQAN_DEFINITIONS "${SEQAN_DEFINITIONS} -DSEQAN_GLOBAL_EXCEPTION_HANDLER")
-
-    # Install demo source files when releasing and build demos when developing.
-    if ("${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE")
-        seqan_install_demos_release ()
-    elseif ("${SEQAN_BUILD_SYSTEM}" STREQUAL "DEVELOP")
-        seqan_build_demos_develop ("${PREFIX}")
-    endif ()
 endfunction (seqan_register_demos)
 
 # ---------------------------------------------------------------------------
@@ -717,9 +780,7 @@ endfunction (seqan_register_demos)
 
 macro (seqan_register_tests)
     # Setup flags for tests.
-    set (SEQAN_FIND_ENABLE_DEBUG TRUE)
-    set (SEQAN_FIND_ENABLE_TESTING TRUE)
-    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+    set (SEQAN_DEFINITIONS ${SEQAN_DEFINITIONS} -DSEQAN_ENABLE_TESTING=1)
 
     # Remove NDEBUG definition for tests.
     string (REGEX REPLACE "-DNDEBUG" ""
@@ -727,21 +788,18 @@ macro (seqan_register_tests)
     string (REGEX REPLACE "-DNDEBUG" ""
             CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
 
-    # Add global exception handler
-    set (SEQAN_DEFINITIONS "${SEQAN_DEFINITIONS} -DSEQAN_GLOBAL_EXCEPTION_HANDLER")
-
     # Conditionally enable coverage mode by setting the appropriate flags.
     if (MODEL STREQUAL "NightlyCoverage")
-        if (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG)
+        if (COMPILER_GCC OR COMPILER_CLANG)
             set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
             set (LDFLAGS "${LDFLAGS} -fprofile-arcs -ftest-coverage")
-        endif (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG)
+        endif (COMPILER_GCC OR COMPILER_CLANG)
     endif (MODEL STREQUAL "NightlyCoverage")
     if (MODEL STREQUAL "ExperimentalCoverage")
-        if (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG)
+        if (COMPILER_GCC OR COMPILER_CLANG)
             set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
             set (LDFLAGS "${LDFLAGS} -fprofile-arcs -ftest-coverage")
-        endif (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG)
+        endif (COMPILER_GCC OR COMPILER_CLANG)
     endif (MODEL STREQUAL "ExperimentalCoverage")
 
     # Add all subdirectories that have a CMakeLists.txt inside them.
@@ -756,4 +814,3 @@ macro (seqan_register_tests)
         endif (IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${ENTRY})
     endforeach (ENTRY ${ENTRIES})
 endmacro (seqan_register_tests)
-
diff --git a/util/cmake/SeqAnCtdSetup.cmake b/util/cmake/SeqAnCtdSetup.cmake
index 09b0871..c19a798 100755
--- a/util/cmake/SeqAnCtdSetup.cmake
+++ b/util/cmake/SeqAnCtdSetup.cmake
@@ -221,6 +221,8 @@ add_custom_command (OUTPUT ${WORKFLOW_PLUGIN_DIR}/plugin.properties
                                              "-DWORKFLOW_PLUGIN_DIR=${WORKFLOW_PLUGIN_DIR}"
                                              "-DSEQAN_VERSION_STRING=${SEQAN_VERSION_STRING}"
                                              "-DSEQAN_DATE=${SEQAN_DATE}"
+                                             "-DCTD_PLUGIN_PACKAGE=${CTD_PLUGIN_PACKAGE}"
+                                             "-DCTD_PLUGIN_NAME=${CTD_PLUGIN_NAME}"
                                              -P "${CMAKE_SOURCE_DIR}/util/cmake/ctd/configure_profile_properties.cmake"
                     DEPENDS ${WORKFLOW_PLUGIN_DIR}
                             ${CMAKE_SOURCE_DIR}/util/cmake/ctd/plugin.properties.in)
diff --git a/util/cmake/SetCPackSystemName.cmake b/util/cmake/SetCPackSystemName.cmake
index 9b06ff9..5acc7ce 100644
--- a/util/cmake/SetCPackSystemName.cmake
+++ b/util/cmake/SetCPackSystemName.cmake
@@ -39,6 +39,19 @@ if (SEQAN_SYSTEM_PROCESSOR)
   set(CMAKE_SYSTEM_PROCESSOR "${SEQAN_SYSTEM_PROCESSOR}")
 endif ()
 
+# some platforms (e.g. FreeBSD) use different names here
+if (CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64")
+  set(CMAKE_SYSTEM_PROCESSOR "x86_64")
+endif ()
+
+if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" AND (SEQAN_ARCH_SSE4))
+  if (SEQAN_ARCH_AVX2)
+    set (CMAKE_SYSTEM_PROCESSOR "x86_64_avx2") 
+  else ()
+    set (CMAKE_SYSTEM_PROCESSOR "x86_64_sse4") 
+  endif ()
+endif()
+
 if (NOT DEFINED CPACK_SYSTEM_NAME)
   set(CPACK_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
 endif (NOT DEFINED CPACK_SYSTEM_NAME)
diff --git a/util/cmake/ctd/configure_profile_properties.cmake b/util/cmake/ctd/configure_profile_properties.cmake
index 495c901..7c5abe1 100644
--- a/util/cmake/ctd/configure_profile_properties.cmake
+++ b/util/cmake/ctd/configure_profile_properties.cmake
@@ -9,5 +9,13 @@ else ()
   set (CF_SEQAN_VERSION "${SEQAN_VERSION_STRING}")
 endif ()
 
+if (NOT CTD_PLUGIN_PACKAGE)
+  set (CTD_PLUGIN_PACKAGE "de.seqan")
+endif ()
+
+if (NOT CTD_PLUGIN_NAME)
+  set (CTD_PLUGIN_NAME  "SeqAn")
+endif ()
+
 # Actually configure the file.
 configure_file (${SEQAN_SOURCE_DIR}/util/cmake/ctd/plugin.properties.in ${WORKFLOW_PLUGIN_DIR}/plugin.properties)
diff --git a/util/cmake/ctd/mime.types b/util/cmake/ctd/mime.types
index 0479a9c..6321d7e 100644
--- a/util/cmake/ctd/mime.types
+++ b/util/cmake/ctd/mime.types
@@ -1,5 +1,5 @@
-application/x-fasta fasta fa
-application/x-fastq fastq fq
+application/x-fasta fa fa.bgzf fa.gz fa.bz2 fasta fasta.bgzf fasta.gz fasta.bz2 faa faa.bgzf faa.gz faa.bz2 ffn ffn.bgzf ffn.gz ffn.bz2 fna fna.bgzf fna.gz fna.bz2 frn frn.bgzf frn.gz frn.bz2 embl embl.bgzf embl.gz embl.bz2 gbk gbk.bgzf gbk.gz gbk.bz2 raw raw.bgzf raw.gz raw.bz2
+application/x-fastq fq fq.bgzf fq.gz fq.bz2 fastq fastq.bgzf fastq.gz fastq.bz2 
 application/x-masic masic mas
 application/x-gsi gsi
 application/x-z-gsi gsi.gz
@@ -7,33 +7,19 @@ application/x-gff gff
 application/x-gtf gtf
 application/x-razers razers
 application/x-eland eland
-application/x-masai raw
-application/x-sam sam
+application/x-sam sam sam.bgzf sam.gz sam.bz2
 application/x-bam bam
 application/x-afg afg
 application/x-dist dist
 application/x-dot dot
 application/x-newick newick
 application/x-alftsv alf.tsv
-application/x-txt txt
-application/x-fasta fasta fa
-application/x-fastq fastq fq
-application/x-masic masic mas
-application/x-gsi gsi
-application/x-z-gsi gsi.gz
-application/x-razers razers
-application/x-eland eland
-application/x-masai raw
-application/x-sam sam
-application/x-bam bam
-application/x-afg afg
-application/x-dist dist
-application/x-dot dot
-application/x-newick newick
-application/x-alftsv alf.tsv
-application/x-txt txt
+application/x-txt txt csv tsv tab log
 application/x-bam-coverage-tsv bam_coverage_tsv
 application/x-fq-stats-tsv fq_stats_tsv
 application/x-rabema-report-tsv rabema_report_tsv
 application/x-index lf.drp lf.drs lf.drv lf.pst sa.ind sa.len sa.val txt.concat txt.limits txt.size
 application/x-yara rid.concat rid.limits
+application/x-vcf vcf
+application/x-bed bed bigbed bedgraph
+application/x-misc R
diff --git a/util/cmake/ctd/plugin.properties.in b/util/cmake/ctd/plugin.properties.in
index d3b87ff..68ae271 100644
--- a/util/cmake/ctd/plugin.properties.in
+++ b/util/cmake/ctd/plugin.properties.in
@@ -1,8 +1,8 @@
 # the package of the plugin
-pluginPackage=de.seqan
+pluginPackage=@CTD_PLUGIN_PACKAGE@
 
 # the name of the plugin
-pluginName=SeqAn
+pluginName=@CTD_PLUGIN_NAME@
 
 # the version of the plugin
 pluginVersion=@CF_SEQAN_VERSION@
diff --git a/util/cmake/package.cmake b/util/cmake/package.cmake
index 73de2e8..ebfac7d 100644
--- a/util/cmake/package.cmake
+++ b/util/cmake/package.cmake
@@ -46,19 +46,23 @@ if (("${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE") OR
     ("${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE_APPS"))
     include (SetCPackSystemName)
 
-    # NOTE that you have to run "make dox" before running cpack.  The reason
-    # is that we cannot add dependencies to the install target at the moment.
-    # See: http://public.kitware.com/Bug/view.php?id=8438
-
     # ===========================================================================
-    # Archive Packages (.tar & .tar.bz2)
+    # Archive Packages
     # ===========================================================================
+    if (CMAKE_SYSTEM_NAME MATCHES "Windows")
+      set(CPACK_GENERATOR "ZIP;NSIS")
+    elseif (CMAKE_SYSTEM_NAME MATCHES "Darwin")
+      set(CPACK_GENERATOR "ZIP;DragNDrop")
+    elseif (CMAKE_VERSION VERSION_LESS "3.1") # TXZ support since 3.1
+      set(CPACK_GENERATOR "TBZ2")
+    else()
+      set(CPACK_GENERATOR "TXZ")
+    endif ()
 
-    if (WIN32)
-        SET (CPACK_GENERATOR "ZIP")
-    else ()
-        SET (CPACK_GENERATOR "ZIP;TBZ2")
+    if (CMAKE_SYSTEM_NAME MATCHES "Linux")
+      set(CPACK_GENERATOR "${CPACK_GENERATOR};DEB;RPM")
     endif ()
+
     if ("${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE")
       SET(CPACK_PACKAGE_NAME "seqan")
     elseif ("${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE_LIBRARY")
@@ -77,7 +81,7 @@ if (("${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE") OR
       set (CPACK_PACKAGE_VERSION "${CURRENT_YEAR}${CURRENT_MONTH}${CURRENT_DAY}")
       set (CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}")
     else ()
-      set (CPACK_PACKAGE_VERSION "${SEQAN_VERSION_MAJOR}.${SEQAN_VERSION_MINOR}.${SEQAN_VERSION_PATCH}")
+      set (SEQAN_VERSION "${SEQAN_VERSION_MAJOR}.${SEQAN_VERSION_MINOR}.${SEQAN_VERSION_PATCH}")
       set (CPACK_PACKAGE_VERSION "${SEQAN_VERSION}")
     endif (SEQAN_NIGHTLY_RELEASE)
     SET(CPACK_PACKAGE_VERSION_MAJOR "${SEQAN_VERSION_MAJOR}")
diff --git a/util/colornvcc b/util/colornvcc
deleted file mode 100755
index 83b91be..0000000
--- a/util/colornvcc
+++ /dev/null
@@ -1,259 +0,0 @@
-#! /usr/bin/perl -w
-
-#
-# colornvcc
-#
-# Version: 1.0.0
-#
-# A wrapper to colorize the output from Nvidia's cuda
-# compiler "nvcc".  This wrapper also outputs messages
-# in gcc format instead of nvcc's format so that tools
-# which parse gcc errors can find filenames and line 
-# numbers (e.g. eclipse).
-#
-# This colornvcc wrapper is based on the colorgcc wrapper:
-# colorgcc Version: 1.3.2 by Jamie Moyers
-#
-# Requires the ANSIColor module from CPAN.
-#
-# Usage:
-#
-# In a directory that occurs in your PATH _before_ the directory
-# where the compiler lives, create a softlink to colornvcc for
-# each compiler you want to colorize:
-#
-#    nvcc -> colornvcc
-#
-# That's it. When "nvcc" is invoked, colornvcc is run instead.
-# colornvcc looks at the program name to figure out which compiler to run.
-#
-# The default settings can be overridden with ~/.colornvccrc.
-# See the comments in the sample .colornvccrc for more information.
-#
-# Note:
-#
-# colornvcc will only emit color codes if:
-# 
-#    (1) Its STDOUT is a tty and
-#    (2) the value of $TERM is not listed in the "nocolor" option.
-#
-# If colornvcc colorizes the output, the compiler's STDERR will be
-# combined with STDOUT. Otherwise, colornvcc just passes the output from
-# the compiler through without modification.
-# 
-# Author: Kristi Tsukida <kristi.tsukida at gmail.com>
-# Started: April 23, 2009
-# Licence: GNU Public License
-#
-# Credits:
-#
-#    I got the idea for this from "colorgcc" by Jamie Moyers
-#       who was inspired by a script called "color_cvs":
-#       color_cvs .03   Adrian Likins <adrian at gimp.org> <adrian at redhat.com>
-#
-# Changes:
-#
-# 1.0.0 Initial Version
-
-use Term::ANSIColor;
-use IPC::Open3;
-
-sub initDefaults
-{
-   $compilerPaths{"nvcc"} = "/usr/local/cuda/bin/nvcc";
-
-   $nocolor{"dumb"} = "true";
-
-   $colors{"srcColor"} = color("cyan");
-   $colors{"introColor"} = color("blue");
-
-   $colors{"warningFileNameColor"} = color("yellow");
-   $colors{"warningNumberColor"}   = color("yellow");
-   $colors{"warningMessageColor"}  = color("yellow");
-
-   $colors{"errorFileNameColor"} = color("bold red");
-   $colors{"errorNumberColor"}   = color("bold red");
-   $colors{"errorMessageColor"}  = color("bold red");
-}
-
-sub loadPreferences
-{
-# Usage: loadPreferences("filename");
-
-   my($filename) = @_;
-
-   open(PREFS, "<$filename") || return;
-
-   my $nvccVersion;
-   my $overrideCompilerPaths = 0;
-
-   while(<PREFS>)
-   {
-      next if (m/^\#.*/);          # It's a comment.
-      next if (!m/(.*):\s*(.*)/);  # It's not of the form "foo: bar".
-
-      $option = $1;
-      $value = $2;
-
-      if ($option =~ m/\A(nvcc)\Z/)
-      {
-                  $compilerPaths{$option} = $value;
-                  $overrideCompilerPaths  = 1;
-      }
-          elsif ($option eq "nvccVersion")
-          {
-                  $nvccVersion = $value;
-          }
-      elsif ($option eq "nocolor")
-      {
-         # The nocolor option lists terminal types, separated by
-         # spaces, not to do color on.
-         foreach $termtype (split(/\s+/, $value))
-         {
-            $nocolor{$termtype} = "true";
-         }
-      }
-      else
-      {
-         $colors{$option} = color($value);
-      }
-   }
-   close(PREFS);
-
-   # Append "-<nvccVersion>" to user-defined compilerPaths
-   if ($overrideCompilerPaths && $nvccVersion) {
-           $compilerPaths{$_} .= "-$nvccVersion" foreach (keys %compilerPaths);
-   }
-}
-
-sub srcscan
-{
-# Usage: srcscan($text, $normalColor)
-#    $text -- the text to colorize
-#    $normalColor -- The escape sequence to use for non-source text.
-
-# Looks for text between ` and ', and colors it srcColor.
-
-   my($line, $normalColor) = @_;
-
-   my($srcon) = color("reset") . $colors{"srcColor"};
-   my($srcoff) = color("reset") . $normalColor;
-
-   $line = $normalColor . $line;
-
-   # This substitute replaces `foo' with `AfooB' where A is the escape
-   # sequence that turns on the the desired source color, and B is the
-   # escape sequence that returns to $normalColor.
-   $line =~ s/\`(.*?)\'/\`$srcon$1$srcoff\'/g;
-
-   print($line, color("reset"));
-}
-
-#
-# Main program
-#
-
-# Set up default values for colors and compilers.
-initDefaults();
-
-# Read the configuration file, if there is one.
-$configFile = $ENV{"HOME"} . "/.colornvccrc";
-$default_configFile = "/etc/colornvccrc";
-if (-f $configFile)
-{
-   loadPreferences($configFile);
-} elsif (-f $default_configFile ) {
-        loadPreferences($default_configFile)
-        }
-
-# Figure out which compiler to invoke based on our program name.
-$0 =~ m%.*/(.*)$%;
-$progName = $1 || $0;
-
-$compiler = $compilerPaths{$progName} || $compilerPaths{"nvcc"};
-
-# Check that we don't reference self
-die "$compiler is self-referencing"
-        if ( -l $compiler and (stat $compiler)[1] == (stat $0)[1] );
-
-# Get the terminal type. 
-$terminal = $ENV{"TERM"} || "dumb";
-
-# If it's in the list of terminal types not to color, or if
-# we're writing to something that's not a tty, don't do color.
-$noColor = "false";
-if (! -t STDOUT || $nocolor{$terminal})
-{
-   $noColor = "true"; 
-   #exec $compiler, @ARGV
-   #   or die("Couldn't exec");
-}
-
-# Keep the pid of the compiler process so we can get its return
-# code and use that as our return code.
-$compiler_pid = open3('<&STDIN', \*NVCCOUT, \*NVCCOUT, $compiler, @ARGV);
-
-$line = "";
-
-# Colorize the output from the compiler.
-while(<NVCCOUT>)
-{
-   if (m/^(.*?)\(([0-9]+)\):(.*)$/) # filename(lineno):message
-   {
-      $field1 = $1 || "";
-      $field2 = $2 || "";
-      $field3 = $3 || "";
-	  if ($field3 =~ m/\s+(H|h)ere.*/)
-	  {
-         #print("$lineInstantiated from $1")
-	     print("$field1:$field2   instantiated from $line");
-	  }
-      elsif ($noColor eq "true")
-      {
-         print("$field1:$field2:$field3");
-      }
-      elsif ($field3 =~ m/\s+(W|w)arn(u|i)ng:.*/)
-      {
-         # Warning
-         print($colors{"warningFileNameColor"}, "$field1:", color("reset"));
-         print($colors{"warningNumberColor"}, "$field2:", color("reset"));
-         srcscan($field3, $colors{"warningMessageColor"});
-      }
-      else 
-      {
-         # Error
-         print($colors{"errorFileNameColor"}, "$field1:", color("reset"));
-         print($colors{"errorNumberColor"}, "$field2:", color("reset"));
-         srcscan($field3, $colors{"errorMessageColor"});
-      }
-      print("\n");
-   }
-   elsif (m/^$/) # empty line
-   {
-   }
-   elsif ($noColor eq "true")
-   {
-      print($_);
-   }
-   elsif (m/^(.*?):(.+):$/) # filename:message:
-   {
-      # No line number, treat as an "introductory" line of text.
-      srcscan($_, $colors{"introColor"});
-   }
-   elsif (m/^\s+detected during:$/)
-   {
-   }
-   elsif (m/^\s+(detected during )?instantiation of (.*)$/)
-   {
-      $line = $2 || "";
-   }
-   else # Anything else.        
-   {
-      # Doesn't seem to be a warning or an error. Print normally.
-      print(color("reset"), $_);
-   }
-}
-
-# Get the return code of the compiler and exit with that.
-waitpid($compiler_pid, 0);
-exit ($? >> 8);
diff --git a/util/ctd2galaxy.py b/util/ctd2galaxy.py
index e39173a..db06a48 100644
--- a/util/ctd2galaxy.py
+++ b/util/ctd2galaxy.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 
 import argparse
 import sys
diff --git a/util/makefile_project/Makefile.rules b/util/makefile_project/Makefile.rules
index 0b4c6ce..4466b14 100644
--- a/util/makefile_project/Makefile.rules
+++ b/util/makefile_project/Makefile.rules
@@ -1,6 +1,5 @@
 SRC=../src
-CXXFLAGS+=-I../../../include
-CXXFLAGS+=-I../../../include
+CXXFLAGS+=-I../include -std=c++14
 
 default: all
 all: main
diff --git a/util/makefile_project/debug/Makefile b/util/makefile_project/debug/Makefile
index 44d8dd6..79ce591 100644
--- a/util/makefile_project/debug/Makefile
+++ b/util/makefile_project/debug/Makefile
@@ -1,3 +1,3 @@
 include ../Makefile.rules
 
-CXXFLAGS+=-g -O0 -DSEQAN_ENABLE_TESTING=0 -DSEQAN_ENABLE_DEBUG=1
+CXXFLAGS+=-g -O0 -DSEQAN_ENABLE_DEBUG=1
diff --git a/util/makefile_project/release/Makefile b/util/makefile_project/release/Makefile
index 0533793..b0740be 100644
--- a/util/makefile_project/release/Makefile
+++ b/util/makefile_project/release/Makefile
@@ -1,3 +1,3 @@
 include ../Makefile.rules
 
-CXXFLAGS+=-O3 -DNDEBUG -DSEQAN_ENABLE_TESTING=0 -DSEQAN_ENABLE_DEBUG=0
+CXXFLAGS+=-O3 -DNDEBUG
diff --git a/util/py_lib/pyratemp.py b/util/py_lib/pyratemp.py
index d93d7e2..39528c2 100644
--- a/util/py_lib/pyratemp.py
+++ b/util/py_lib/pyratemp.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 # -*- coding: utf-8 -*-
 """
 Small, simple and powerful template-engine for python.
diff --git a/util/py_lib/seqan/app_tests.py b/util/py_lib/seqan/app_tests.py
index eae93c2..2cc71bc 100644
--- a/util/py_lib/seqan/app_tests.py
+++ b/util/py_lib/seqan/app_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Helper code for app tests.
 
 This module contains helper functions and classes for making app tests easy.
diff --git a/util/py_lib/seqan/auto_build.py b/util/py_lib/seqan/auto_build.py
index fb9b10f..9ae7e27 100755
--- a/util/py_lib/seqan/auto_build.py
+++ b/util/py_lib/seqan/auto_build.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """
 Automatic building of SeqAn apps and releases.
 """
diff --git a/util/py_lib/seqan/dddoc/__init__.py b/util/py_lib/seqan/dddoc/__init__.py
index 191de6a..a576e73 100644
--- a/util/py_lib/seqan/dddoc/__init__.py
+++ b/util/py_lib/seqan/dddoc/__init__.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 
 import main as m
 import sys
diff --git a/util/py_lib/seqan/dddoc/core.py b/util/py_lib/seqan/dddoc/core.py
index acbd0be..a168a16 100644
--- a/util/py_lib/seqan/dddoc/core.py
+++ b/util/py_lib/seqan/dddoc/core.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 
 import copy
 import operator
diff --git a/util/py_lib/seqan/dddoc/dddoc.py b/util/py_lib/seqan/dddoc/dddoc.py
index cbd5f35..829407e 100644
--- a/util/py_lib/seqan/dddoc/dddoc.py
+++ b/util/py_lib/seqan/dddoc/dddoc.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 
 import os
 import os.path
diff --git a/util/py_lib/seqan/dddoc/html.py b/util/py_lib/seqan/dddoc/html.py
index 557dc36..c08fe33 100644
--- a/util/py_lib/seqan/dddoc/html.py
+++ b/util/py_lib/seqan/dddoc/html.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 
 import sys
 import os
diff --git a/util/py_lib/seqan/dddoc/main.py b/util/py_lib/seqan/dddoc/main.py
index fcd5294..aa3a9ea 100755
--- a/util/py_lib/seqan/dddoc/main.py
+++ b/util/py_lib/seqan/dddoc/main.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 
 import datetime
 import optparse
diff --git a/util/py_lib/seqan/dox/dot_diagrams.py b/util/py_lib/seqan/dox/dot_diagrams.py
index 782de00..0659a85 100644
--- a/util/py_lib/seqan/dox/dot_diagrams.py
+++ b/util/py_lib/seqan/dox/dot_diagrams.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Representation of inheritance diagrams for using with dot/graphviz."""
 
 
diff --git a/util/py_lib/seqan/dox/dox_parser.py b/util/py_lib/seqan/dox/dox_parser.py
index da93712..55999dd 100644
--- a/util/py_lib/seqan/dox/dox_parser.py
+++ b/util/py_lib/seqan/dox/dox_parser.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Parser for SeqAn Doxygen dialect.
 
 The Doxygen documentation has a regular grammar and thus can be parsed quite
diff --git a/util/py_lib/seqan/dox/dox_tokens.py b/util/py_lib/seqan/dox/dox_tokens.py
index 335c030..5d0e04e 100644
--- a/util/py_lib/seqan/dox/dox_tokens.py
+++ b/util/py_lib/seqan/dox/dox_tokens.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Tokens for Doxygen-like tokens.
 """
 
diff --git a/util/py_lib/seqan/dox/file_mgr.py b/util/py_lib/seqan/dox/file_mgr.py
index e23c1d4..f62c46a 100644
--- a/util/py_lib/seqan/dox/file_mgr.py
+++ b/util/py_lib/seqan/dox/file_mgr.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """
 Code for parsing comments from C++ files.
 """
diff --git a/util/py_lib/seqan/dox/inc_mgr.py b/util/py_lib/seqan/dox/inc_mgr.py
index b52187f..4baec6b 100644
--- a/util/py_lib/seqan/dox/inc_mgr.py
+++ b/util/py_lib/seqan/dox/inc_mgr.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Management for including file and snippets.
 """
 
diff --git a/util/py_lib/seqan/dox/lexer.py b/util/py_lib/seqan/dox/lexer.py
index c657126..84d535b 100644
--- a/util/py_lib/seqan/dox/lexer.py
+++ b/util/py_lib/seqan/dox/lexer.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Simple regex-based lexer.
 
 Taken from Eli Bendersky [1].
diff --git a/util/py_lib/seqan/dox/migration.py b/util/py_lib/seqan/dox/migration.py
index 3db3383..d1e1cb0 100644
--- a/util/py_lib/seqan/dox/migration.py
+++ b/util/py_lib/seqan/dox/migration.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python2
 """Code for translating a DDDoc tree and its node into raw_doc objects.
 """
 
diff --git a/util/py_lib/seqan/dox/proc_doc.py b/util/py_lib/seqan/dox/proc_doc.py
index 1635541..bd73a59 100644
--- a/util/py_lib/seqan/dox/proc_doc.py
+++ b/util/py_lib/seqan/dox/proc_doc.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Processed version of the documentation.
 
 The documentation from the objects of raw_doc is further processed into
@@ -71,6 +71,8 @@ class ProcDoc(object):
         self.second_level_entries = {}
         self.entries = {}
         self.local_name_counter = {}
+        self.top_level_entries_filename = {}
+        self.second_level_entries_filename = {}
 
     def addTopLevelEntry(self, x):
         """Add a top-level-entry."""
@@ -120,6 +122,7 @@ class ProcDoc(object):
         
     def registerEntry(self, x):
         """Register an entry."""
+
         name = x.name
         if name == '':
             msg = 'Entry must not have an empty name.'
@@ -1585,9 +1588,13 @@ class DocProcessor(object):
             }
         self.msg_printer = msg_printer or dox_parser.MessagePrinter()
         self.validators = [x(self.msg_printer) for x in validation.VALIDATORS]
+        self.entry_filenames = []
+        self.topLevelEntry_filenames = {} 
+        self.secondLevelEntry_filenames = {} 
 
     def run(self, doc):
         res = ProcDoc(self)
+        self.entry_filenames = doc.filenames
         self.log('Processing Documentation...')
         self.convertTopLevelEntries(doc, res)
         self.convertSecondLevelEntries(doc, res)
@@ -1605,7 +1612,7 @@ class DocProcessor(object):
         """
         self.log('  1) Converting Top-Level Entries.')
         #print 'doc.entries', [e.name.text for e in doc.entries]
-        for raw_entry in doc.entries:
+        for index,raw_entry in enumerate(doc.entries):
             # Get fitting converter or warn if there is none.
             kind = raw_entry.getType()
             if not kind in ['concept', 'class', 'global_function',
@@ -1621,10 +1628,11 @@ class DocProcessor(object):
             # Store object in ProcDoc.
             #self.log('    * %s (%s)' % (proc_entry.name, proc_entry))
             res.addTopLevelEntry(proc_entry)
+            self.topLevelEntry_filenames[proc_entry] = self.entry_filenames[index]
 
     def convertSecondLevelEntries(self, doc, res):
         self.log('  2) Converting Second-Level Entries.')
-        for raw_entry in doc.entries:
+        for index,raw_entry in enumerate(doc.entries):
             # Get fitting converter or warn if there is none.
             kind = raw_entry.getType()
             if not kind in ['member_function', 'interface_function',
@@ -1641,6 +1649,7 @@ class DocProcessor(object):
             # Store object in ProcDoc.
             #self.log('    * %s' % proc_entry.name)
             res.addSecondLevelEntry(proc_entry)
+            self.secondLevelEntry_filenames[proc_entry] = self.entry_filenames[index]
 
     def convertVariables(self, doc, res):
         self.log('  3) Converting variable and enum value entries.')
diff --git a/util/py_lib/seqan/dox/pure.py b/util/py_lib/seqan/dox/pure.py
index 8d9972f..9ae6b76 100755
--- a/util/py_lib/seqan/dox/pure.py
+++ b/util/py_lib/seqan/dox/pure.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python2
 """Implementation of the SeqAn Doxygen dialect.
 """
 
@@ -151,8 +151,7 @@ def doMain(args):
                 parser.parse(lex)
             except dox_parser.ParserError, e:
                 msg_printer.printParserError(e)
-                return 1
-            master_doc.merge(parser.documentation)
+            master_doc.merge(parser.documentation, filename)
     # Generate documentation.
     logging.basicConfig(format='%(message)s', level=logging.DEBUG)
     logger = logging.getLogger()
@@ -199,6 +198,7 @@ def main():
     parser.add_argument('--development', help='Use if you are changing/extending the '
                         'dox system itself or its templates.', default=False,
                         action='store_true', dest='development')
+    parser.add_argument('--out-dir', dest='out_dir', help='output directory', default=os.path.abspath('html'), nargs='?')
     args = parser.parse_args()
 
     # defer actual work to doMain()
diff --git a/util/py_lib/seqan/dox/raw_doc.py b/util/py_lib/seqan/dox/raw_doc.py
index 5d5a1ec..68324c6 100644
--- a/util/py_lib/seqan/dox/raw_doc.py
+++ b/util/py_lib/seqan/dox/raw_doc.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """SeqAn documentation raw object representation.
 
 This is the direct representation as it can be determined from the embedded
@@ -90,10 +90,12 @@ class RawDoc(object):
 
     def __init__(self):
         self.entries = []
+        self.filenames = []
 
-    def merge(self, other_doc):
+    def merge(self, other_doc, filename=''):
         for e in other_doc.entries:
             self.addEntry(e)
+            self.filenames.append(filename)
 
     def addEntry(self, entry):
         self.entries.append(entry)
diff --git a/util/py_lib/seqan/dox/sig_parser.py b/util/py_lib/seqan/dox/sig_parser.py
index 3406c62..8ba8745 100644
--- a/util/py_lib/seqan/dox/sig_parser.py
+++ b/util/py_lib/seqan/dox/sig_parser.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Parser for the signature supported by the SeqAn Doxygen-style documentation.
 """
 
diff --git a/util/py_lib/seqan/dox/test/test_dox_parser.py b/util/py_lib/seqan/dox/test/test_dox_parser.py
index 830d538..eaf6432 100644
--- a/util/py_lib/seqan/dox/test/test_dox_parser.py
+++ b/util/py_lib/seqan/dox/test/test_dox_parser.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Tests for the dox_parser module.
 
 The parser results are very complex.  We rely on parsing Doxygen-style
diff --git a/util/py_lib/seqan/dox/test/test_file_mgr.py b/util/py_lib/seqan/dox/test/test_file_mgr.py
index 0ffa916..b5ed93f 100644
--- a/util/py_lib/seqan/dox/test/test_file_mgr.py
+++ b/util/py_lib/seqan/dox/test/test_file_mgr.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Tests for the path manager."""
 
 __author__ = 'Manuel Holtgrewe <manuel.holtgrewe at fu-berlin.de>'
diff --git a/util/py_lib/seqan/dox/test/test_inc_mgr.py b/util/py_lib/seqan/dox/test/test_inc_mgr.py
index 5ab9623..66fe83a 100644
--- a/util/py_lib/seqan/dox/test/test_inc_mgr.py
+++ b/util/py_lib/seqan/dox/test/test_inc_mgr.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Tests for the include manager."""
 
 __author__ = 'Manuel Holtgrewe <manuel.holtgrewe at fu-berlin.de>'
diff --git a/util/py_lib/seqan/dox/test/test_lexer.py b/util/py_lib/seqan/dox/test/test_lexer.py
index e67f125..2de7816 100644
--- a/util/py_lib/seqan/dox/test/test_lexer.py
+++ b/util/py_lib/seqan/dox/test/test_lexer.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Tests for the lexer module.
 
 We got the lexer itself from an external source so we do not write tests for
diff --git a/util/py_lib/seqan/dox/test/test_proc_doc.py b/util/py_lib/seqan/dox/test/test_proc_doc.py
index 4b8b490..7d4d91e 100644
--- a/util/py_lib/seqan/dox/test/test_proc_doc.py
+++ b/util/py_lib/seqan/dox/test/test_proc_doc.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Tests for the proc_doc module."""
 
 import sys
@@ -85,6 +85,8 @@ class TestConverterBase(unittest.TestCase):
         """
         parser = dox_parser.Parser()
         parser.parse(self.createLexer(text))
+        for e in parser.documentation.entries:
+            parser.documentation.filenames.append('dummy' + e.name.text)
         return parser.documentation
 
 
diff --git a/util/py_lib/seqan/dox/test/test_raw_doc.py b/util/py_lib/seqan/dox/test/test_raw_doc.py
index 4ea2226..058e8a8 100644
--- a/util/py_lib/seqan/dox/test/test_raw_doc.py
+++ b/util/py_lib/seqan/dox/test/test_raw_doc.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Tests for the raw_doc module."""
 
 __author__ = 'Manuel Holtgrewe <manuel.holtgrewe at fu-berlin.de>'
diff --git a/util/py_lib/seqan/dox/test/test_sig_parser.py b/util/py_lib/seqan/dox/test/test_sig_parser.py
index f1147b5..d391478 100644
--- a/util/py_lib/seqan/dox/test/test_sig_parser.py
+++ b/util/py_lib/seqan/dox/test/test_sig_parser.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 
 import sys
 import unittest
diff --git a/util/py_lib/seqan/dox/tpl/css/full_list.css b/util/py_lib/seqan/dox/tpl/css/full_list.css
index 8eeeffa..0154271 100644
--- a/util/py_lib/seqan/dox/tpl/css/full_list.css
+++ b/util/py_lib/seqan/dox/tpl/css/full_list.css
@@ -1,11 +1,20 @@
+html {
+    height: 100%;
+}
+
 body {
   margin: 0;
   font-family: "Open Sans", "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif;
   font-size: 13px;
-  height: 101%;
+  height: 100%;
   overflow-x: hidden;
 }
 
+#content {
+    height: calc(100% - 40px);
+    overflow: auto;
+}
+
 h1 { padding: 12px 10px; padding-bottom: 0; margin: 0; font-size: 1.4em; }
 .clear { clear: both; }
 #noresults { padding: 7px 12px; }
@@ -19,4 +28,4 @@ h1 { padding: 12px 10px; padding-bottom: 0; margin: 0; font-size: 1.4em; }
 .frames li small:before { content: ""; }
 .frames li small:after { content: ""; }
 .frames li small.search_info { display: none; }
-.frames #nav { display: block; }
\ No newline at end of file
+.frames #nav { display: block; }
diff --git a/util/py_lib/seqan/dox/tpl/lib/bootstrap-treeview/css/bootstrap-treeview.css b/util/py_lib/seqan/dox/tpl/lib/bootstrap-treeview/css/bootstrap-treeview.css
new file mode 100644
index 0000000..312071a
--- /dev/null
+++ b/util/py_lib/seqan/dox/tpl/lib/bootstrap-treeview/css/bootstrap-treeview.css
@@ -0,0 +1,60 @@
+/* =========================================================
+ * bootstrap-treeview.css v1.2.0
+ * =========================================================
+ * Copyright 2013 Jonathan Miles 
+ * Project URL : http://www.jondmiles.com/bootstrap-treeview
+ *	
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================= */
+
+.treeview {
+    font-size: 12px;
+}
+
+.treeview .badge {
+    font-size: 12px;
+}
+
+.treeview .list-group {
+	margin-left: 10px;
+	margin-right: 10px;
+}
+
+.treeview .list-group-item {
+	cursor: pointer;
+    line-height: 10px;
+}
+
+.treeview li {
+    line-style: none;
+    margin: 0px;
+}
+
+.treeview li:before { 
+    content: ""; 
+}
+
+.treeview span.indent {
+	margin-left: 10px;
+	margin-right: 10px;
+}
+
+.treeview span.icon {
+	width: 5px;
+	margin-right: 5px;
+}
+
+.treeview .node-disabled {
+	color: silver;
+	cursor: not-allowed;
+}
diff --git a/util/py_lib/seqan/dox/tpl/lib/bootstrap-treeview/js/bootstrap-treeview.js b/util/py_lib/seqan/dox/tpl/lib/bootstrap-treeview/js/bootstrap-treeview.js
new file mode 100644
index 0000000..97720e6
--- /dev/null
+++ b/util/py_lib/seqan/dox/tpl/lib/bootstrap-treeview/js/bootstrap-treeview.js
@@ -0,0 +1,1248 @@
+/* =========================================================
+ * bootstrap-treeview.js v1.2.0
+ * =========================================================
+ * Copyright 2013 Jonathan Miles
+ * Project URL : http://www.jondmiles.com/bootstrap-treeview
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================= */
+
+;(function ($, window, document, undefined) {
+
+	/*global jQuery, console*/
+
+	'use strict';
+
+	var pluginName = 'treeview';
+
+	var _default = {};
+
+	_default.settings = {
+
+		injectStyle: true,
+
+		levels: 2,
+
+		expandIcon: 'glyphicon glyphicon-chevron-right',
+		collapseIcon: 'glyphicon glyphicon-chevron-down',
+		emptyIcon: 'glyphicon',
+		nodeIcon: '',
+		selectedIcon: '',
+		checkedIcon: 'glyphicon glyphicon-check',
+		uncheckedIcon: 'glyphicon glyphicon-unchecked',
+
+		color: '#000000', // '#000000',
+		backColor: undefined, // '#FFFFFF',
+		borderColor: undefined, // '#dddddd',
+		onhoverColor: '#F5F5F5',
+		selectedColor: '#FFFFFF',
+		selectedBackColor: '#428bca',
+		searchResultColor: '#D9534F',
+		searchResultBackColor: undefined, //'#FFFFFF',
+
+		enableLinks: false,
+		highlightSelected: true,
+		highlightSearchResults: true,
+		showBorder: true,
+		showIcon: true,
+		showCheckbox: false,
+		showTags: false,
+		multiSelect: false,
+
+		// Event handlers
+		onNodeChecked: undefined,
+		onNodeCollapsed: undefined,
+		onNodeDisabled: undefined,
+		onNodeEnabled: undefined,
+		onNodeExpanded: undefined,
+		onNodeSelected: undefined,
+		onNodeUnchecked: undefined,
+		onNodeUnselected: undefined,
+		onSearchComplete: undefined,
+		onSearchCleared: undefined
+	};
+
+	_default.options = {
+		silent: false,
+		ignoreChildren: false
+	};
+
+	_default.searchOptions = {
+		ignoreCase: true,
+		exactMatch: false,
+		revealResults: true
+	};
+
+	var Tree = function (element, options) {
+
+		this.$element = $(element);
+		this.elementId = element.id;
+		this.styleId = this.elementId + '-style';
+
+		this.init(options);
+
+		return {
+
+			// Options (public access)
+			options: this.options,
+
+			// Initialize / destroy methods
+			init: $.proxy(this.init, this),
+			remove: $.proxy(this.remove, this),
+
+			// Get methods
+			getNode: $.proxy(this.getNode, this),
+			getParent: $.proxy(this.getParent, this),
+			getSiblings: $.proxy(this.getSiblings, this),
+			getSelected: $.proxy(this.getSelected, this),
+			getUnselected: $.proxy(this.getUnselected, this),
+			getExpanded: $.proxy(this.getExpanded, this),
+			getCollapsed: $.proxy(this.getCollapsed, this),
+			getChecked: $.proxy(this.getChecked, this),
+			getUnchecked: $.proxy(this.getUnchecked, this),
+			getDisabled: $.proxy(this.getDisabled, this),
+			getEnabled: $.proxy(this.getEnabled, this),
+
+			// Select methods
+			selectNode: $.proxy(this.selectNode, this),
+			unselectNode: $.proxy(this.unselectNode, this),
+			toggleNodeSelected: $.proxy(this.toggleNodeSelected, this),
+
+			// Expand / collapse methods
+			collapseAll: $.proxy(this.collapseAll, this),
+			collapseNode: $.proxy(this.collapseNode, this),
+			expandAll: $.proxy(this.expandAll, this),
+			expandNode: $.proxy(this.expandNode, this),
+			toggleNodeExpanded: $.proxy(this.toggleNodeExpanded, this),
+			revealNode: $.proxy(this.revealNode, this),
+
+			// Expand / collapse methods
+			checkAll: $.proxy(this.checkAll, this),
+			checkNode: $.proxy(this.checkNode, this),
+			uncheckAll: $.proxy(this.uncheckAll, this),
+			uncheckNode: $.proxy(this.uncheckNode, this),
+			toggleNodeChecked: $.proxy(this.toggleNodeChecked, this),
+
+			// Disable / enable methods
+			disableAll: $.proxy(this.disableAll, this),
+			disableNode: $.proxy(this.disableNode, this),
+			enableAll: $.proxy(this.enableAll, this),
+			enableNode: $.proxy(this.enableNode, this),
+			toggleNodeDisabled: $.proxy(this.toggleNodeDisabled, this),
+
+			// Search methods
+			search: $.proxy(this.search, this),
+			clearSearch: $.proxy(this.clearSearch, this)
+		};
+	};
+
+	Tree.prototype.init = function (options) {
+
+		this.tree = [];
+		this.nodes = [];
+
+		if (options.data) {
+			if (typeof options.data === 'string') {
+				options.data = $.parseJSON(options.data);
+			}
+			this.tree = $.extend(true, [], options.data);
+			delete options.data;
+		}
+		this.options = $.extend({}, _default.settings, options);
+
+		this.destroy();
+		this.subscribeEvents();
+		this.setInitialStates({ nodes: this.tree }, 0);
+		this.render();
+	};
+
+	Tree.prototype.remove = function () {
+		this.destroy();
+		$.removeData(this, pluginName);
+		$('#' + this.styleId).remove();
+	};
+
+	Tree.prototype.destroy = function () {
+
+		if (!this.initialized) return;
+
+		this.$wrapper.remove();
+		this.$wrapper = null;
+
+		// Switch off events
+		this.unsubscribeEvents();
+
+		// Reset this.initialized flag
+		this.initialized = false;
+	};
+
+	Tree.prototype.unsubscribeEvents = function () {
+
+		this.$element.off('click');
+		this.$element.off('nodeChecked');
+		this.$element.off('nodeCollapsed');
+		this.$element.off('nodeDisabled');
+		this.$element.off('nodeEnabled');
+		this.$element.off('nodeExpanded');
+		this.$element.off('nodeSelected');
+		this.$element.off('nodeUnchecked');
+		this.$element.off('nodeUnselected');
+		this.$element.off('searchComplete');
+		this.$element.off('searchCleared');
+	};
+
+	Tree.prototype.subscribeEvents = function () {
+
+		this.unsubscribeEvents();
+
+		this.$element.on('click', $.proxy(this.clickHandler, this));
+
+		if (typeof (this.options.onNodeChecked) === 'function') {
+			this.$element.on('nodeChecked', this.options.onNodeChecked);
+		}
+
+		if (typeof (this.options.onNodeCollapsed) === 'function') {
+			this.$element.on('nodeCollapsed', this.options.onNodeCollapsed);
+		}
+
+		if (typeof (this.options.onNodeDisabled) === 'function') {
+			this.$element.on('nodeDisabled', this.options.onNodeDisabled);
+		}
+
+		if (typeof (this.options.onNodeEnabled) === 'function') {
+			this.$element.on('nodeEnabled', this.options.onNodeEnabled);
+		}
+
+		if (typeof (this.options.onNodeExpanded) === 'function') {
+			this.$element.on('nodeExpanded', this.options.onNodeExpanded);
+		}
+
+		if (typeof (this.options.onNodeSelected) === 'function') {
+			this.$element.on('nodeSelected', this.options.onNodeSelected);
+		}
+
+		if (typeof (this.options.onNodeUnchecked) === 'function') {
+			this.$element.on('nodeUnchecked', this.options.onNodeUnchecked);
+		}
+
+		if (typeof (this.options.onNodeUnselected) === 'function') {
+			this.$element.on('nodeUnselected', this.options.onNodeUnselected);
+		}
+
+		if (typeof (this.options.onSearchComplete) === 'function') {
+			this.$element.on('searchComplete', this.options.onSearchComplete);
+		}
+
+		if (typeof (this.options.onSearchCleared) === 'function') {
+			this.$element.on('searchCleared', this.options.onSearchCleared);
+		}
+	};
+
+	/*
+		Recurse the tree structure and ensure all nodes have
+		valid initial states.  User defined states will be preserved.
+		For performance we also take this opportunity to
+		index nodes in a flattened structure
+	*/
+	Tree.prototype.setInitialStates = function (node, level) {
+
+		if (!node.nodes) return;
+		level += 1;
+
+		var parent = node;
+		var _this = this;
+		$.each(node.nodes, function checkStates(index, node) {
+
+			// nodeId : unique, incremental identifier
+			node.nodeId = _this.nodes.length;
+
+			// parentId : transversing up the tree
+			node.parentId = parent.nodeId;
+
+			// if not provided set selectable default value
+			if (!node.hasOwnProperty('selectable')) {
+				node.selectable = true;
+			}
+
+			// where provided we should preserve states
+			node.state = node.state || {};
+
+			// set checked state; unless set always false
+			if (!node.state.hasOwnProperty('checked')) {
+				node.state.checked = false;
+			}
+
+			// set enabled state; unless set always false
+			if (!node.state.hasOwnProperty('disabled')) {
+				node.state.disabled = false;
+			}
+
+			// set expanded state; if not provided based on levels
+			if (!node.state.hasOwnProperty('expanded')) {
+				if (!node.state.disabled &&
+						(level < _this.options.levels) &&
+						(node.nodes && node.nodes.length > 0)) {
+					node.state.expanded = true;
+				}
+				else {
+					node.state.expanded = false;
+				}
+			}
+
+			// set selected state; unless set always false
+			if (!node.state.hasOwnProperty('selected')) {
+				node.state.selected = false;
+			}
+
+			// index nodes in a flattened structure for use later
+			_this.nodes.push(node);
+
+			// recurse child nodes and transverse the tree
+			if (node.nodes) {
+				_this.setInitialStates(node, level);
+			}
+		});
+	};
+
+	Tree.prototype.clickHandler = function (event) {
+
+		if (!this.options.enableLinks) event.preventDefault();
+
+		var target = $(event.target);
+		var node = this.findNode(target);
+		if (!node || node.state.disabled) return;
+		
+		var classList = target.attr('class') ? target.attr('class').split(' ') : [];
+		if ((classList.indexOf('expand-icon') !== -1)) {
+
+			this.toggleExpandedState(node, _default.options);
+			this.render();
+		}
+		else if ((classList.indexOf('check-icon') !== -1)) {
+			
+			this.toggleCheckedState(node, _default.options);
+			this.render();
+		}
+		else {
+			
+			if (node.selectable) {
+				this.toggleSelectedState(node, _default.options);
+			} else {
+				this.toggleExpandedState(node, _default.options);
+			}
+
+			this.render();
+		}
+	};
+
+	// Looks up the DOM for the closest parent list item to retrieve the
+	// data attribute nodeid, which is used to lookup the node in the flattened structure.
+	Tree.prototype.findNode = function (target) {
+
+		var nodeId = target.closest('li.list-group-item').attr('data-nodeid');
+		var node = this.nodes[nodeId];
+
+		if (!node) {
+			console.log('Error: node does not exist');
+		}
+		return node;
+	};
+
+	Tree.prototype.toggleExpandedState = function (node, options) {
+		if (!node) return;
+		this.setExpandedState(node, !node.state.expanded, options);
+	};
+
+	Tree.prototype.setExpandedState = function (node, state, options) {
+
+		if (state === node.state.expanded) return;
+
+		if (state && node.nodes) {
+
+			// Expand a node
+			node.state.expanded = true;
+			if (!options.silent) {
+				this.$element.trigger('nodeExpanded', $.extend(true, {}, node));
+			}
+		}
+		else if (!state) {
+
+			// Collapse a node
+			node.state.expanded = false;
+			if (!options.silent) {
+				this.$element.trigger('nodeCollapsed', $.extend(true, {}, node));
+			}
+
+			// Collapse child nodes
+			if (node.nodes && !options.ignoreChildren) {
+				$.each(node.nodes, $.proxy(function (index, node) {
+					this.setExpandedState(node, false, options);
+				}, this));
+			}
+		}
+	};
+
+	Tree.prototype.toggleSelectedState = function (node, options) {
+		if (!node) return;
+		this.setSelectedState(node, !node.state.selected, options);
+	};
+
+	Tree.prototype.setSelectedState = function (node, state, options) {
+
+		if (state === node.state.selected) return;
+
+		if (state) {
+
+			// If multiSelect false, unselect previously selected
+			if (!this.options.multiSelect) {
+				$.each(this.findNodes('true', 'g', 'state.selected'), $.proxy(function (index, node) {
+					this.setSelectedState(node, false, options);
+				}, this));
+			}
+
+			// Continue selecting node
+			node.state.selected = true;
+			if (!options.silent) {
+				this.$element.trigger('nodeSelected', $.extend(true, {}, node));
+			}
+		}
+		else {
+
+			// Unselect node
+			node.state.selected = false;
+			if (!options.silent) {
+				this.$element.trigger('nodeUnselected', $.extend(true, {}, node));
+			}
+		}
+	};
+
+	Tree.prototype.toggleCheckedState = function (node, options) {
+		if (!node) return;
+		this.setCheckedState(node, !node.state.checked, options);
+	};
+
+	Tree.prototype.setCheckedState = function (node, state, options) {
+
+		if (state === node.state.checked) return;
+
+		if (state) {
+
+			// Check node
+			node.state.checked = true;
+
+			if (!options.silent) {
+				this.$element.trigger('nodeChecked', $.extend(true, {}, node));
+			}
+		}
+		else {
+
+			// Uncheck node
+			node.state.checked = false;
+			if (!options.silent) {
+				this.$element.trigger('nodeUnchecked', $.extend(true, {}, node));
+			}
+		}
+	};
+
+	Tree.prototype.setDisabledState = function (node, state, options) {
+
+		if (state === node.state.disabled) return;
+
+		if (state) {
+
+			// Disable node
+			node.state.disabled = true;
+
+			// Disable all other states
+			this.setExpandedState(node, false, options);
+			this.setSelectedState(node, false, options);
+			this.setCheckedState(node, false, options);
+
+			if (!options.silent) {
+				this.$element.trigger('nodeDisabled', $.extend(true, {}, node));
+			}
+		}
+		else {
+
+			// Enabled node
+			node.state.disabled = false;
+			if (!options.silent) {
+				this.$element.trigger('nodeEnabled', $.extend(true, {}, node));
+			}
+		}
+	};
+
+	Tree.prototype.render = function () {
+
+		if (!this.initialized) {
+
+			// Setup first time only components
+			this.$element.addClass(pluginName);
+			this.$wrapper = $(this.template.list);
+
+			this.injectStyle();
+
+			this.initialized = true;
+		}
+
+		this.$element.empty().append(this.$wrapper.empty());
+
+		// Build tree
+		this.buildTree(this.tree, 0);
+	};
+
+	// Starting from the root node, and recursing down the
+	// structure we build the tree one node at a time
+	Tree.prototype.buildTree = function (nodes, level) {
+
+		if (!nodes) return;
+		level += 1;
+
+		var _this = this;
+		$.each(nodes, function addNodes(id, node) {
+
+			var treeItem = $(_this.template.item)
+				.addClass('node-' + _this.elementId)
+				.addClass(node.state.checked ? 'node-checked' : '')
+				.addClass(node.state.disabled ? 'node-disabled': '')
+				.addClass(node.state.selected ? 'node-selected' : '')
+				.addClass(node.searchResult ? 'search-result' : '') 
+				.attr('data-nodeid', node.nodeId)
+				.attr('style', _this.buildStyleOverride(node));
+
+			// Add indent/spacer to mimic tree structure
+			for (var i = 0; i < (level - 1); i++) {
+				treeItem.append(_this.template.indent);
+			}
+
+			// Add tags as badges
+			if (_this.options.showTags && node.tags) {
+				$.each(node.tags, function addTag(id, tag) {
+					treeItem
+						.append($(_this.template.badge)
+							.append(tag)
+						);
+				});
+			}
+
+			// Add expand, collapse or empty spacer icons
+			var classList = [];
+			if (node.nodes) {
+				classList.push('expand-icon');
+				if (node.state.expanded) {
+					classList.push(_this.options.collapseIcon);
+				}
+				else {
+					classList.push(_this.options.expandIcon);
+				}
+			}
+			else {
+				classList.push(_this.options.emptyIcon);
+			}
+
+			treeItem
+				.append($(_this.template.icon)
+					.addClass(classList.join(' '))
+				);
+
+			// Add node icon
+			if (_this.options.showIcon) {
+				
+				var classList = ['node-icon'];
+
+				classList.push(node.icon || _this.options.nodeIcon);
+				if (node.state.selected) {
+					classList.pop();
+					classList.push(node.selectedIcon || _this.options.selectedIcon || 
+									node.icon || _this.options.nodeIcon);
+				}
+
+				treeItem
+					.append($(_this.template.icon)
+						.addClass(classList.join(' '))
+					);
+			}
+
+			// Add check / unchecked icon
+			if (_this.options.showCheckbox) {
+
+				var classList = ['check-icon'];
+				if (node.state.checked) {
+					classList.push(_this.options.checkedIcon); 
+				}
+				else {
+					classList.push(_this.options.uncheckedIcon);
+				}
+
+				treeItem
+					.append($(_this.template.icon)
+						.addClass(classList.join(' '))
+					);
+			}
+
+			// Add text
+			if (_this.options.enableLinks) {
+				// Add hyperlink
+				treeItem
+					.append($(_this.template.link)
+						.attr('href', node.href)
+						.append(node.text)
+					);
+			}
+			else {
+				// otherwise just text
+				treeItem
+					.append(node.text);
+			}
+
+			// Add item to the tree
+			_this.$wrapper.append(treeItem);
+
+			// Recursively add child ndoes
+			if (node.nodes && node.state.expanded && !node.state.disabled) {
+				return _this.buildTree(node.nodes, level);
+			}
+		});
+	};
+
+	// Define any node level style override for
+	// 1. selectedNode
+	// 2. node|data assigned color overrides
+	Tree.prototype.buildStyleOverride = function (node) {
+
+		if (node.state.disabled) return '';
+
+		var color = node.color;
+		var backColor = node.backColor;
+
+		if (this.options.highlightSelected && node.state.selected) {
+			if (this.options.selectedColor) {
+				color = this.options.selectedColor;
+			}
+			if (this.options.selectedBackColor) {
+				backColor = this.options.selectedBackColor;
+			}
+		}
+
+		if (this.options.highlightSearchResults && node.searchResult && !node.state.disabled) {
+			if (this.options.searchResultColor) {
+				color = this.options.searchResultColor;
+			}
+			if (this.options.searchResultBackColor) {
+				backColor = this.options.searchResultBackColor;
+			}
+		}
+
+		return 'color:' + color +
+			';background-color:' + backColor + ';';
+	};
+
+	// Add inline style into head
+	Tree.prototype.injectStyle = function () {
+
+		if (this.options.injectStyle && !document.getElementById(this.styleId)) {
+			$('<style type="text/css" id="' + this.styleId + '"> ' + this.buildStyle() + ' </style>').appendTo('head');
+		}
+	};
+
+	// Construct trees style based on user options
+	Tree.prototype.buildStyle = function () {
+
+		var style = '.node-' + this.elementId + '{';
+
+		if (this.options.color) {
+			style += 'color:' + this.options.color + ';';
+		}
+
+		if (this.options.backColor) {
+			style += 'background-color:' + this.options.backColor + ';';
+		}
+
+		if (!this.options.showBorder) {
+			style += 'border:none;';
+		}
+		else if (this.options.borderColor) {
+			style += 'border:1px solid ' + this.options.borderColor + ';';
+		}
+		style += '}';
+
+		if (this.options.onhoverColor) {
+			style += '.node-' + this.elementId + ':not(.node-disabled):hover{' +
+				'background-color:' + this.options.onhoverColor + ';' +
+			'}';
+		}
+
+		return this.css + style;
+	};
+
+	Tree.prototype.template = {
+		list: '<ul class="list-group"></ul>',
+		item: '<li class="list-group-item"></li>',
+		indent: '<span class="indent"></span>',
+		icon: '<span class="icon"></span>',
+		link: '<a href="#" style="color:inherit;"></a>',
+		badge: '<span class="badge"></span>'
+	};
+
+	Tree.prototype.css = '.treeview .list-group-item{cursor:pointer}.treeview span.indent{margin-left:10px;margin-right:10px}.treeview span.icon{width:12px;margin-right:5px}.treeview .node-disabled{color:silver;cursor:not-allowed}'
+
+
+	/**
+		Returns a single node object that matches the given node id.
+		@param {Number} nodeId - A node's unique identifier
+		@return {Object} node - Matching node
+	*/
+	Tree.prototype.getNode = function (nodeId) {
+		return this.nodes[nodeId];
+	};
+
+	/**
+		Returns the parent node of a given node, if valid otherwise returns undefined.
+		@param {Object|Number} identifier - A valid node or node id
+		@returns {Object} node - The parent node
+	*/
+	Tree.prototype.getParent = function (identifier) {
+		var node = this.identifyNode(identifier);
+		return this.nodes[node.parentId];
+	};
+
+	/**
+		Returns an array of sibling nodes for a given node, if valid otherwise returns undefined.
+		@param {Object|Number} identifier - A valid node or node id
+		@returns {Array} nodes - Sibling nodes
+	*/
+	Tree.prototype.getSiblings = function (identifier) {
+		var node = this.identifyNode(identifier);
+		var parent = this.getParent(node);
+		var nodes = parent ? parent.nodes : this.tree;
+		return nodes.filter(function (obj) {
+				return obj.nodeId !== node.nodeId;
+			});
+	};
+
+	/**
+		Returns an array of selected nodes.
+		@returns {Array} nodes - Selected nodes
+	*/
+	Tree.prototype.getSelected = function () {
+		return this.findNodes('true', 'g', 'state.selected');
+	};
+
+	/**
+		Returns an array of unselected nodes.
+		@returns {Array} nodes - Unselected nodes
+	*/
+	Tree.prototype.getUnselected = function () {
+		return this.findNodes('false', 'g', 'state.selected');
+	};
+
+	/**
+		Returns an array of expanded nodes.
+		@returns {Array} nodes - Expanded nodes
+	*/
+	Tree.prototype.getExpanded = function () {
+		return this.findNodes('true', 'g', 'state.expanded');
+	};
+
+	/**
+		Returns an array of collapsed nodes.
+		@returns {Array} nodes - Collapsed nodes
+	*/
+	Tree.prototype.getCollapsed = function () {
+		return this.findNodes('false', 'g', 'state.expanded');
+	};
+
+	/**
+		Returns an array of checked nodes.
+		@returns {Array} nodes - Checked nodes
+	*/
+	Tree.prototype.getChecked = function () {
+		return this.findNodes('true', 'g', 'state.checked');
+	};
+
+	/**
+		Returns an array of unchecked nodes.
+		@returns {Array} nodes - Unchecked nodes
+	*/
+	Tree.prototype.getUnchecked = function () {
+		return this.findNodes('false', 'g', 'state.checked');
+	};
+
+	/**
+		Returns an array of disabled nodes.
+		@returns {Array} nodes - Disabled nodes
+	*/
+	Tree.prototype.getDisabled = function () {
+		return this.findNodes('true', 'g', 'state.disabled');
+	};
+
+	/**
+		Returns an array of enabled nodes.
+		@returns {Array} nodes - Enabled nodes
+	*/
+	Tree.prototype.getEnabled = function () {
+		return this.findNodes('false', 'g', 'state.disabled');
+	};
+
+
+	/**
+		Set a node state to selected
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.selectNode = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setSelectedState(node, true, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Set a node state to unselected
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.unselectNode = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setSelectedState(node, false, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Toggles a node selected state; selecting if unselected, unselecting if selected.
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.toggleNodeSelected = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.toggleSelectedState(node, options);
+		}, this));
+
+		this.render();
+	};
+
+
+	/**
+		Collapse all tree nodes
+		@param {optional Object} options
+	*/
+	Tree.prototype.collapseAll = function (options) {
+		var identifiers = this.findNodes('true', 'g', 'state.expanded');
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setExpandedState(node, false, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Collapse a given tree node
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.collapseNode = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setExpandedState(node, false, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Expand all tree nodes
+		@param {optional Object} options
+	*/
+	Tree.prototype.expandAll = function (options) {
+		options = $.extend({}, _default.options, options);
+
+		if (options && options.levels) {
+			this.expandLevels(this.tree, options.levels, options);
+		}
+		else {
+			var identifiers = this.findNodes('false', 'g', 'state.expanded');
+			this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+				this.setExpandedState(node, true, options);
+			}, this));
+		}
+
+		this.render();
+	};
+
+	/**
+		Expand a given tree node
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.expandNode = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setExpandedState(node, true, options);
+			if (node.nodes && (options && options.levels)) {
+				this.expandLevels(node.nodes, options.levels-1, options);
+			}
+		}, this));
+
+		this.render();
+	};
+
+	Tree.prototype.expandLevels = function (nodes, level, options) {
+		options = $.extend({}, _default.options, options);
+
+		$.each(nodes, $.proxy(function (index, node) {
+			this.setExpandedState(node, (level > 0) ? true : false, options);
+			if (node.nodes) {
+				this.expandLevels(node.nodes, level-1, options);
+			}
+		}, this));
+	};
+
+	/**
+		Reveals a given tree node, expanding the tree from node to root.
+		@param {Object|Number|Array} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.revealNode = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			var parentNode = this.getParent(node);
+			while (parentNode) {
+				this.setExpandedState(parentNode, true, options);
+				parentNode = this.getParent(parentNode);
+			};
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Toggles a nodes expanded state; collapsing if expanded, expanding if collapsed.
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.toggleNodeExpanded = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.toggleExpandedState(node, options);
+		}, this));
+		
+		this.render();
+	};
+
+
+	/**
+		Check all tree nodes
+		@param {optional Object} options
+	*/
+	Tree.prototype.checkAll = function (options) {
+		var identifiers = this.findNodes('false', 'g', 'state.checked');
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setCheckedState(node, true, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Check a given tree node
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.checkNode = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setCheckedState(node, true, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Uncheck all tree nodes
+		@param {optional Object} options
+	*/
+	Tree.prototype.uncheckAll = function (options) {
+		var identifiers = this.findNodes('true', 'g', 'state.checked');
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setCheckedState(node, false, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Uncheck a given tree node
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.uncheckNode = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setCheckedState(node, false, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Toggles a nodes checked state; checking if unchecked, unchecking if checked.
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.toggleNodeChecked = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.toggleCheckedState(node, options);
+		}, this));
+
+		this.render();
+	};
+
+
+	/**
+		Disable all tree nodes
+		@param {optional Object} options
+	*/
+	Tree.prototype.disableAll = function (options) {
+		var identifiers = this.findNodes('false', 'g', 'state.disabled');
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setDisabledState(node, true, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Disable a given tree node
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.disableNode = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setDisabledState(node, true, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Enable all tree nodes
+		@param {optional Object} options
+	*/
+	Tree.prototype.enableAll = function (options) {
+		var identifiers = this.findNodes('true', 'g', 'state.disabled');
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setDisabledState(node, false, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Enable a given tree node
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.enableNode = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setDisabledState(node, false, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Toggles a nodes disabled state; disabling is enabled, enabling if disabled.
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.toggleNodeDisabled = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setDisabledState(node, !node.state.disabled, options);
+		}, this));
+
+		this.render();
+	};
+
+
+	/**
+		Common code for processing multiple identifiers
+	*/
+	Tree.prototype.forEachIdentifier = function (identifiers, options, callback) {
+
+		options = $.extend({}, _default.options, options);
+
+		if (!(identifiers instanceof Array)) {
+			identifiers = [identifiers];
+		}
+
+		$.each(identifiers, $.proxy(function (index, identifier) {
+			callback(this.identifyNode(identifier), options);
+		}, this));	
+	};
+
+	/*
+		Identifies a node from either a node id or object
+	*/
+	Tree.prototype.identifyNode = function (identifier) {
+		return ((typeof identifier) === 'number') ?
+						this.nodes[identifier] :
+						identifier;
+	};
+
+	/**
+		Searches the tree for nodes (text) that match given criteria
+		@param {String} pattern - A given string to match against
+		@param {optional Object} options - Search criteria options
+		@return {Array} nodes - Matching nodes
+	*/
+	Tree.prototype.search = function (pattern, options) {
+		options = $.extend({}, _default.searchOptions, options);
+
+		this.clearSearch({ render: false });
+
+		var results = [];
+		if (pattern && pattern.length > 0) {
+
+			if (options.exactMatch) {
+				pattern = '^' + pattern + '$';
+			}
+
+			var modifier = 'g';
+			if (options.ignoreCase) {
+				modifier += 'i';
+			}
+
+			results = this.findNodes(pattern, modifier);
+
+			// Add searchResult property to all matching nodes
+			// This will be used to apply custom styles
+			// and when identifying result to be cleared
+			$.each(results, function (index, node) {
+				node.searchResult = true;
+			})
+		}
+
+		// If revealResults, then render is triggered from revealNode
+		// otherwise we just call render.
+		if (options.revealResults) {
+			this.revealNode(results);
+		}
+		else {
+			this.render();
+		}
+
+		this.$element.trigger('searchComplete', $.extend(true, {}, results));
+
+		return results;
+	};
+
+	/**
+		Clears previous search results
+	*/
+	Tree.prototype.clearSearch = function (options) {
+
+		options = $.extend({}, { render: true }, options);
+
+		var results = $.each(this.findNodes('true', 'g', 'searchResult'), function (index, node) {
+			node.searchResult = false;
+		});
+
+		if (options.render) {
+			this.render();	
+		}
+		
+		this.$element.trigger('searchCleared', $.extend(true, {}, results));
+	};
+
+	/**
+		Find nodes that match a given criteria
+		@param {String} pattern - A given string to match against
+		@param {optional String} modifier - Valid RegEx modifiers
+		@param {optional String} attribute - Attribute to compare pattern against
+		@return {Array} nodes - Nodes that match your criteria
+	*/
+	Tree.prototype.findNodes = function (pattern, modifier, attribute) {
+
+		modifier = modifier || 'g';
+		attribute = attribute || 'text';
+
+		var _this = this;
+		return $.grep(this.nodes, function (node) {
+			var val = _this.getNodeValue(node, attribute);
+			if (typeof val === 'string') {
+				return val.match(new RegExp(pattern, modifier));
+			}
+		});
+	};
+
+	/**
+		Recursive find for retrieving nested attributes values
+		All values are return as strings, unless invalid
+		@param {Object} obj - Typically a node, could be any object
+		@param {String} attr - Identifies an object property using dot notation
+		@return {String} value - Matching attributes string representation
+	*/
+	Tree.prototype.getNodeValue = function (obj, attr) {
+		var index = attr.indexOf('.');
+		if (index > 0) {
+			var _obj = obj[attr.substring(0, index)];
+			var _attr = attr.substring(index + 1, attr.length);
+			return this.getNodeValue(_obj, _attr);
+		}
+		else {
+			if (obj.hasOwnProperty(attr)) {
+				return obj[attr].toString();
+			}
+			else {
+				return undefined;
+			}
+		}
+	};
+
+	var logError = function (message) {
+		if (window.console) {
+			window.console.error(message);
+		}
+	};
+
+	// Prevent against multiple instantiations,
+	// handle updates and method calls
+	$.fn[pluginName] = function (options, args) {
+
+		var result;
+
+		this.each(function () {
+			var _this = $.data(this, pluginName);
+			if (typeof options === 'string') {
+				if (!_this) {
+					logError('Not initialized, can not call method : ' + options);
+				}
+				else if (!$.isFunction(_this[options]) || options.charAt(0) === '_') {
+					logError('No such method : ' + options);
+				}
+				else {
+					if (!(args instanceof Array)) {
+						args = [ args ];
+					}
+					result = _this[options].apply(_this, args);
+				}
+			}
+			else if (typeof options === 'boolean') {
+				result = _this;
+			}
+			else {
+				$.data(this, pluginName, new Tree(this, $.extend(true, {}, options)));
+			}
+		});
+
+		return result || this;
+	};
+
+})(jQuery, window, document);
diff --git a/util/py_lib/seqan/dox/tpl/list.html b/util/py_lib/seqan/dox/tpl/list.html
index 2a9d52d..154b73b 100644
--- a/util/py_lib/seqan/dox/tpl/list.html
+++ b/util/py_lib/seqan/dox/tpl/list.html
@@ -4,21 +4,9 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
-      {% if development %}
-      <script type="text/javascript" charset="utf-8" src="../../util/py_lib/seqan/dox/tpl/js/jquery.js"></script>
+      
 
-      <link rel="stylesheet" href="../../util/py_lib/seqan/dox/tpl/lib/bootstrap/css/bootstrap.min.css" type="text/css" media="screen" charset="utf-8" />
-      <script type="text/javascript" charset="utf-8" src="../../util/py_lib/seqan/dox/tpl/lib/bootstrap/js/bootstrap.min.js"></script>
-
-      <link rel="stylesheet" href="../../util/py_lib/seqan/dox/tpl/lib/bootstrap-multiselect/css/bootstrap-multiselect.css" type="text/css" media="screen" charset="utf-8" />
-      <script type="text/javascript" charset="utf-8" src="../../util/py_lib/seqan/dox/tpl/lib/bootstrap-multiselect/js/bootstrap-multiselect.js"></script>
-
-      <link rel="stylesheet" href="../../util/py_lib/seqan/dox/tpl/css/full_list.css" type="text/css" media="screen" charset="utf-8" />
-      <link rel="stylesheet/less" href="../../util/py_lib/seqan/dox/tpl/css/common.less" type="text/css" media="screen" charset="utf-8" />
-      <script type="text/javascript" charset="utf-8" src="../../util/py_lib/seqan/dox/tpl/js/less.min.js"></script>
-      {% endif %}
-
-      {% if not development %}
+      
       <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
 
       <link rel="stylesheet" href="lib/bootstrap/css/bootstrap.css" type="text/css" media="screen" charset="utf-8" />
@@ -27,31 +15,26 @@
       <link rel="stylesheet" href="lib/bootstrap-multiselect/css/bootstrap-multiselect.css" type="text/css" media="screen" charset="utf-8" />
       <script type="text/javascript" charset="utf-8" src="lib/bootstrap-multiselect/js/bootstrap-multiselect.js"></script>
 
+      <link rel="stylesheet" href="lib/bootstrap-treeview/css/bootstrap-treeview.css" type="text/css" media="screen" charset="utf-8" />
+      <script type="text/javascript" charset="utf-8" src="lib/bootstrap-treeview/js/bootstrap-treeview.js"></script>
+
       <link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" charset="utf-8" />
       <link rel="stylesheet" href="css/common.less.css" type="text/css" media="screen" charset="utf-8" />
       <script type="text/javascript" charset="utf-8" src="js/less.min.js"></script>
-      {% endif %}
+      
 
-      {% if development %}
-      <script type="text/javascript" charset="utf-8" src="../../util/py_lib/seqan/dox/tpl/lib/jquery-bbq/jquery.ba-bbq.min.js"></script>
-      <script type="text/javascript" charset="utf-8" src="../../util/py_lib/seqan/dox/tpl/js/jquery.smooth-scroll.js"></script>
-
-      <script type="text/javascript" charset="utf-8" src="js/link.data.js"></script><!-- dynamically created and thus only existent in output dir -->
-      <script type="text/javascript" charset="utf-8" src="js/lang_entities.js"></script><!-- dynamically created and thus only existent in output dir -->
-      <script type="text/javascript" charset="utf-8" src="../../util/py_lib/seqan/dox/tpl/js/search.data.js"></script>
-      <script type="text/javascript" charset="utf-8" src="../../util/py_lib/seqan/dox/tpl/js/search.engine.js"></script>
-      <script type="text/javascript" charset="utf-8" src="../../util/py_lib/seqan/dox/tpl/js/common.js"></script>
-      {% endif %}
-      {% if not development %}
+      
+      
       <script type="text/javascript" charset="utf-8" src="lib/jquery-bbq/jquery.ba-bbq.min.js"></script>
       <script type="text/javascript" charset="utf-8" src="js/jquery.smooth-scroll.js"></script>
 
       <script type="text/javascript" charset="utf-8" src="js/link.data.js"></script>
       <script type="text/javascript" charset="utf-8" src="js/lang_entities.js"></script>
       <script type="text/javascript" charset="utf-8" src="js/search.data.js"></script>
+      <script type="text/javascript" charset="utf-8" src="js/search.data.module.js"></script>
       <script type="text/javascript" charset="utf-8" src="js/search.engine.js"></script>
       <script type="text/javascript" charset="utf-8" src="js/common.js"></script>
-      {% endif %}
+      
 
       <base id="base_target" target="_parent" />
   </head>
@@ -91,42 +74,14671 @@
             </select>
 	        <!--button class="btn btn-primary">Select All</button-->
           </span>
-          <input type="search" class="form-control" placeholder="Search the API ..." tabindex="0">
+          <input type="search" class="form-control" id="search_input" placeholder="Search the API ..." tabindex="0">
           </div>
         </form>
 
         <div id="results">
           <ol class="results">
-            {# TODO: Sort by entry.kind and put all entries the inner ol.nav #}
-            {% for name, entry in doc.top_level_entries|dictsort %}
-            {% if entry.kind != 'page' %}
-            <li data-lang-entity-container="{{ entry.kind }}" data-pimped="true">
-              <span data-lang-entity="{{ entry.kind }}"><a href="page_LanguageEntities.html#{{ entry.kind }}">{{ config.lang_entities[entry.kind].ideogram }}</a><span>{{ config.lang_entities[entry.kind].ideogram }}</span></span>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
               <ol class="nav">
                 <li class="result">
-                  <h2 data-lang-entity="{{ entry.kind }}" data-pimped="true">
-                    <a href="page_LanguageEntities.html#{{ entry.kind }}">{{ config.lang_entities[entry.kind].ideogram }}</a>
-                    <a href="{{entry.name|name_to_path}}" target="main">{{name}}</a>
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_AbndmAlgoPattern.html" target="main">AbndmAlgoPattern</a>
                   </h2>
                   <div>
                     <div class="text"></div>
-                    <div class="location"><a href="{{entry.name|name_to_path}}" target="main">{{entry.name|name_to_path}}</a></div>
+                    <div class="location"><a href="specialization_AbndmAlgoPattern.html" target="main">specialization_AbndmAlgoPattern.html</a></div>
                   </div>
                 </li>
-                {# put other entries of same kind here #}
+                
               </ol>
             </li>
-            {% endif %}
-            {% endfor %}
-          </ol>
-        </div>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Accumulator.html" target="main">Accumulator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Accumulator.html" target="main">class_Accumulator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_AdaptorIterator.html" target="main">AdaptorIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_AdaptorIterator.html" target="main">specialization_AdaptorIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_addToProfile.html" target="main">addToProfile</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_addToProfile.html" target="main">global_function_addToProfile.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_AdjacencyIterator.html" target="main">AdjacencyIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_AdjacencyIterator.html" target="main">specialization_AdjacencyIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_AFScore.html" target="main">AFScore</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_AFScore.html" target="main">class_AFScore.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_AggregateConcept.html" target="main">AggregateConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_AggregateConcept.html" target="main">concept_AggregateConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_AggregateTags.html" target="main">AggregateTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_AggregateTags.html" target="main">group_AggregateTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_AhoCorasickPattern.html" target="main">AhoCorasickPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_AhoCorasickPattern.html" target="main">specialization_AhoCorasickPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Align.html" target="main">Align</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Align.html" target="main">class_Align.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_AlignColIterator.html" target="main">AlignColIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_AlignColIterator.html" target="main">specialization_AlignColIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_AlignCols.html" target="main">AlignCols</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_AlignCols.html" target="main">class_AlignCols.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_AlignConfig.html" target="main">AlignConfig</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_AlignConfig.html" target="main">class_AlignConfig.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_AlignedReadLayout.html" target="main">AlignedReadLayout</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_AlignedReadLayout.html" target="main">class_AlignedReadLayout.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_AlignedReadStoreElement.html" target="main">AlignedReadStoreElement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_AlignedReadStoreElement.html" target="main">class_AlignedReadStoreElement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_AlignmentAlgorithmTags.html" target="main">AlignmentAlgorithmTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_AlignmentAlgorithmTags.html" target="main">group_AlignmentAlgorithmTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_alignmentEvaluation.html" target="main">alignmentEvaluation</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_alignmentEvaluation.html" target="main">global_function_alignmentEvaluation.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_alignmentFreeComparison.html" target="main">alignmentFreeComparison</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_alignmentFreeComparison.html" target="main">global_function_alignmentFreeComparison.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_AlignmentGraph.html" target="main">AlignmentGraph</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_AlignmentGraph.html" target="main">specialization_AlignmentGraph.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_AlignmentGraphCombinationTags.html" target="main">AlignmentGraphCombinationTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_AlignmentGraphCombinationTags.html" target="main">group_AlignmentGraphCombinationTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_AlignmentGraphFormatTags.html" target="main">AlignmentGraphFormatTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_AlignmentGraphFormatTags.html" target="main">group_AlignmentGraphFormatTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_AlignmentStats.html" target="main">AlignmentStats</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_AlignmentStats.html" target="main">class_AlignmentStats.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_AlignQualityStoreElement.html" target="main">AlignQualityStoreElement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_AlignQualityStoreElement.html" target="main">class_AlignQualityStoreElement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_AlignTraceback.html" target="main">AlignTraceback</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_AlignTraceback.html" target="main">class_AlignTraceback.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Allocator.html" target="main">Allocator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Allocator.html" target="main">class_Allocator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_AllocatorUsageTags.html" target="main">AllocatorUsageTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_AllocatorUsageTags.html" target="main">group_AllocatorUsageTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_AllocString.html" target="main">AllocString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_AllocString.html" target="main">specialization_AllocString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_AllowsFastRandomAccess.html" target="main">AllowsFastRandomAccess</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_AllowsFastRandomAccess.html" target="main">global_metafunction_AllowsFastRandomAccess.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_allPairsShortestPath.html" target="main">allPairsShortestPath</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_allPairsShortestPath.html" target="main">global_function_allPairsShortestPath.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_AlphabetConcept.html" target="main">AlphabetConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_AlphabetConcept.html" target="main">concept_AlphabetConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_AlphabetExpansion.html" target="main">AlphabetExpansion</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_AlphabetExpansion.html" target="main">class_AlphabetExpansion.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_AlphabetWithGapsConcept.html" target="main">AlphabetWithGapsConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_AlphabetWithGapsConcept.html" target="main">concept_AlphabetWithGapsConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_AlphabetWithQualitiesConcept.html" target="main">AlphabetWithQualitiesConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_AlphabetWithQualitiesConcept.html" target="main">concept_AlphabetWithQualitiesConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_AlphabetWithUnknownValueConcept.html" target="main">AlphabetWithUnknownValueConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_AlphabetWithUnknownValueConcept.html" target="main">concept_AlphabetWithUnknownValueConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_AminoAcid.html" target="main">AminoAcid</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_AminoAcid.html" target="main">specialization_AminoAcid.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="enum" data-pimped="true">
+              <span data-lang-entity="enum"><a href="page_LanguageEntities.html#enum">enum</a><span>enum</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="enum" data-pimped="true">
+                    <a href="page_LanguageEntities.html#enum">enum</a>
+                    <a href="enum_AminoAcidScoreMatrixID.html" target="main">AminoAcidScoreMatrixID</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="enum_AminoAcidScoreMatrixID.html" target="main">enum_AminoAcidScoreMatrixID.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_AnchorGaps.html" target="main">AnchorGaps</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_AnchorGaps.html" target="main">specialization_AnchorGaps.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_AnnotationStoreElement.html" target="main">AnnotationStoreElement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_AnnotationStoreElement.html" target="main">class_AnnotationStoreElement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_AnnotationTreeIterator.html" target="main">AnnotationTreeIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_AnnotationTreeIterator.html" target="main">specialization_AnnotationTreeIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_ApproximateFinderSearchTypeTags.html" target="main">ApproximateFinderSearchTypeTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_ApproximateFinderSearchTypeTags.html" target="main">group_ApproximateFinderSearchTypeTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ArgParseArgument.html" target="main">ArgParseArgument</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ArgParseArgument.html" target="main">class_ArgParseArgument.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="enum" data-pimped="true">
+              <span data-lang-entity="enum"><a href="page_LanguageEntities.html#enum">enum</a><span>enum</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="enum" data-pimped="true">
+                    <a href="page_LanguageEntities.html#enum">enum</a>
+                    <a href="enum_ArgParseArgument_58_58ArgumentType.html" target="main">ArgParseArgument::ArgumentType</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="enum_ArgParseArgument_58_58ArgumentType.html" target="main">enum_ArgParseArgument_58_58ArgumentType.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ArgParseOption.html" target="main">ArgParseOption</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ArgParseOption.html" target="main">specialization_ArgParseOption.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ArgumentParser.html" target="main">ArgumentParser</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ArgumentParser.html" target="main">class_ArgumentParser.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="enum" data-pimped="true">
+              <span data-lang-entity="enum"><a href="page_LanguageEntities.html#enum">enum</a><span>enum</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="enum" data-pimped="true">
+                    <a href="page_LanguageEntities.html#enum">enum</a>
+                    <a href="enum_ArgumentParser_58_58ParseResult.html" target="main">ArgumentParser::ParseResult</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="enum_ArgumentParser_58_58ParseResult.html" target="main">enum_ArgumentParser_58_58ParseResult.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_arrayClearSpace.html" target="main">arrayClearSpace</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_arrayClearSpace.html" target="main">global_function_arrayClearSpace.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_arrayConstruct.html" target="main">arrayConstruct</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_arrayConstruct.html" target="main">global_function_arrayConstruct.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_arrayConstructCopy.html" target="main">arrayConstructCopy</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_arrayConstructCopy.html" target="main">global_function_arrayConstructCopy.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_arrayConstructMove.html" target="main">arrayConstructMove</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_arrayConstructMove.html" target="main">global_function_arrayConstructMove.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_arrayCopy.html" target="main">arrayCopy</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_arrayCopy.html" target="main">global_function_arrayCopy.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_arrayCopyBackward.html" target="main">arrayCopyBackward</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_arrayCopyBackward.html" target="main">global_function_arrayCopyBackward.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_arrayCopyForward.html" target="main">arrayCopyForward</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_arrayCopyForward.html" target="main">global_function_arrayCopyForward.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_arrayDestruct.html" target="main">arrayDestruct</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_arrayDestruct.html" target="main">global_function_arrayDestruct.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_arrayFill.html" target="main">arrayFill</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_arrayFill.html" target="main">global_function_arrayFill.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ArrayGaps.html" target="main">ArrayGaps</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ArrayGaps.html" target="main">specialization_ArrayGaps.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_arrayMove.html" target="main">arrayMove</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_arrayMove.html" target="main">global_function_arrayMove.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_arrayMoveBackward.html" target="main">arrayMoveBackward</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_arrayMoveBackward.html" target="main">global_function_arrayMoveBackward.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_arrayMoveForward.html" target="main">arrayMoveForward</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_arrayMoveForward.html" target="main">global_function_arrayMoveForward.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ArrayString.html" target="main">ArrayString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ArrayString.html" target="main">specialization_ArrayString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_AssertMacros.html" target="main">AssertMacros</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_AssertMacros.html" target="main">group_AssertMacros.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_AssignableConcept.html" target="main">AssignableConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_AssignableConcept.html" target="main">concept_AssignableConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_assignQualities.html" target="main">assignQualities</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_assignQualities.html" target="main">global_function_assignQualities.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_assignTagsBamToSam.html" target="main">assignTagsBamToSam</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_assignTagsBamToSam.html" target="main">global_function_assignTagsBamToSam.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_assignTagsSamToBam.html" target="main">assignTagsSamToBam</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_assignTagsSamToBam.html" target="main">global_function_assignTagsSamToBam.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_AsyncFile.html" target="main">AsyncFile</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_AsyncFile.html" target="main">specialization_AsyncFile.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_AsyncRequest.html" target="main">AsyncRequest</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_AsyncRequest.html" target="main">class_AsyncRequest.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_atomicMax.html" target="main">atomicMax</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_atomicMax.html" target="main">global_function_atomicMax.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_atomicMin.html" target="main">atomicMin</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_atomicMin.html" target="main">global_function_atomicMin.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_AtomicPrimitives.html" target="main">AtomicPrimitives</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_AtomicPrimitives.html" target="main">group_AtomicPrimitives.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Automaton.html" target="main">Automaton</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Automaton.html" target="main">specialization_Automaton.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_AutoSeqFormat.html" target="main">AutoSeqFormat</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_AutoSeqFormat.html" target="main">specialization_AutoSeqFormat.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_AverageAccumulator.html" target="main">AverageAccumulator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_AverageAccumulator.html" target="main">specialization_AverageAccumulator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BadAlloc.html" target="main">BadAlloc</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BadAlloc.html" target="main">class_BadAlloc.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BadCast.html" target="main">BadCast</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BadCast.html" target="main">class_BadCast.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_BadLexicalCast.html" target="main">BadLexicalCast</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_BadLexicalCast.html" target="main">specialization_BadLexicalCast.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_BaiBamIndex.html" target="main">BaiBamIndex</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_BaiBamIndex.html" target="main">specialization_BaiBamIndex.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="variable" data-pimped="true">
+              <span data-lang-entity="variable"><a href="page_LanguageEntities.html#variable">var</a><span>var</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="variable" data-pimped="true">
+                    <a href="page_LanguageEntities.html#variable">var</a>
+                    <a href="variable_BAM_95FLAG_95SUPPLEMENTARY_32_61_320x0800.html" target="main">BAM_FLAG_SUPPLEMENTARY = 0x0800</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="variable_BAM_95FLAG_95SUPPLEMENTARY_32_61_320x0800.html" target="main">variable_BAM_95FLAG_95SUPPLEMENTARY_32_61_320x0800.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BamAlignmentRecord.html" target="main">BamAlignmentRecord</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BamAlignmentRecord.html" target="main">class_BamAlignmentRecord.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_BamFileIn.html" target="main">BamFileIn</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_BamFileIn.html" target="main">specialization_BamFileIn.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_BamFileOut.html" target="main">BamFileOut</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_BamFileOut.html" target="main">specialization_BamFileOut.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="enum" data-pimped="true">
+              <span data-lang-entity="enum"><a href="page_LanguageEntities.html#enum">enum</a><span>enum</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="enum" data-pimped="true">
+                    <a href="page_LanguageEntities.html#enum">enum</a>
+                    <a href="enum_BamFlags.html" target="main">BamFlags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="enum_BamFlags.html" target="main">enum_BamFlags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BamHeader.html" target="main">BamHeader</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BamHeader.html" target="main">class_BamHeader.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BamHeaderRecord.html" target="main">BamHeaderRecord</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BamHeaderRecord.html" target="main">class_BamHeaderRecord.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="enum" data-pimped="true">
+              <span data-lang-entity="enum"><a href="page_LanguageEntities.html#enum">enum</a><span>enum</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="enum" data-pimped="true">
+                    <a href="page_LanguageEntities.html#enum">enum</a>
+                    <a href="enum_BamHeaderRecordType.html" target="main">BamHeaderRecordType</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="enum_BamHeaderRecordType.html" target="main">enum_BamHeaderRecordType.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BamIndex.html" target="main">BamIndex</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BamIndex.html" target="main">class_BamIndex.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BamIOContext.html" target="main">BamIOContext</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BamIOContext.html" target="main">class_BamIOContext.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_BamIOContextMemberTag.html" target="main">BamIOContextMemberTag</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_BamIOContextMemberTag.html" target="main">group_BamIOContextMemberTag.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="enum" data-pimped="true">
+              <span data-lang-entity="enum"><a href="page_LanguageEntities.html#enum">enum</a><span>enum</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="enum" data-pimped="true">
+                    <a href="page_LanguageEntities.html#enum">enum</a>
+                    <a href="enum_BamSortOrder.html" target="main">BamSortOrder</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="enum_BamSortOrder.html" target="main">enum_BamSortOrder.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BamTagsDict.html" target="main">BamTagsDict</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BamTagsDict.html" target="main">class_BamTagsDict.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_bandedChainAlignment.html" target="main">bandedChainAlignment</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_bandedChainAlignment.html" target="main">global_function_bandedChainAlignment.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_BandedLocalAlignmentEnumerator.html" target="main">BandedLocalAlignmentEnumerator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_BandedLocalAlignmentEnumerator.html" target="main">specialization_BandedLocalAlignmentEnumerator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_BasicStream.html" target="main">BasicStream</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_BasicStream.html" target="main">global_metafunction_BasicStream.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Bed12Record.html" target="main">Bed12Record</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Bed12Record.html" target="main">specialization_Bed12Record.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Bed3Record.html" target="main">Bed3Record</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Bed3Record.html" target="main">specialization_Bed3Record.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Bed4Record.html" target="main">Bed4Record</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Bed4Record.html" target="main">specialization_Bed4Record.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Bed5Record.html" target="main">Bed5Record</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Bed5Record.html" target="main">specialization_Bed5Record.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Bed6Record.html" target="main">Bed6Record</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Bed6Record.html" target="main">specialization_Bed6Record.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_BedFileIn.html" target="main">BedFileIn</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_BedFileIn.html" target="main">specialization_BedFileIn.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_BedFileOut.html" target="main">BedFileOut</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_BedFileOut.html" target="main">specialization_BedFileOut.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BedRecord.html" target="main">BedRecord</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BedRecord.html" target="main">class_BedRecord.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BedRgb.html" target="main">BedRgb</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BedRgb.html" target="main">class_BedRgb.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_bellmanFordAlgorithm.html" target="main">bellmanFordAlgorithm</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_bellmanFordAlgorithm.html" target="main">global_function_bellmanFordAlgorithm.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BetaDistribution.html" target="main">BetaDistribution</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BetaDistribution.html" target="main">class_BetaDistribution.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_BfamPattern.html" target="main">BfamPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_BfamPattern.html" target="main">specialization_BfamPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_BfsIterator.html" target="main">BfsIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_BfsIterator.html" target="main">specialization_BfsIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BidirectionalIndex.html" target="main">BidirectionalIndex</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BidirectionalIndex.html" target="main">class_BidirectionalIndex.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_BidirectionalIteratorConcept.html" target="main">BidirectionalIteratorConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_BidirectionalIteratorConcept.html" target="main">concept_BidirectionalIteratorConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_BidirectionalStreamConcept.html" target="main">BidirectionalStreamConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_BidirectionalStreamConcept.html" target="main">concept_BidirectionalStreamConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_BitPackedPair.html" target="main">BitPackedPair</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_BitPackedPair.html" target="main">specialization_BitPackedPair.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_BitPackedTuple.html" target="main">BitPackedTuple</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_BitPackedTuple.html" target="main">specialization_BitPackedTuple.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_bitScanForward.html" target="main">bitScanForward</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_bitScanForward.html" target="main">global_function_bitScanForward.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_bitScanReverse.html" target="main">bitScanReverse</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_bitScanReverse.html" target="main">global_function_bitScanReverse.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BlastIOContext.html" target="main">BlastIOContext</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BlastIOContext.html" target="main">class_BlastIOContext.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BlastMatch.html" target="main">BlastMatch</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BlastMatch.html" target="main">class_BlastMatch.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BlastMatchField.html" target="main">BlastMatchField</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BlastMatchField.html" target="main">class_BlastMatchField.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="enum" data-pimped="true">
+              <span data-lang-entity="enum"><a href="page_LanguageEntities.html#enum">enum</a><span>enum</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="enum" data-pimped="true">
+                    <a href="page_LanguageEntities.html#enum">enum</a>
+                    <a href="enum_BlastMatchField_58_58Enum.html" target="main">BlastMatchField::Enum</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="enum_BlastMatchField_58_58Enum.html" target="main">enum_BlastMatchField_58_58Enum.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="enum" data-pimped="true">
+              <span data-lang-entity="enum"><a href="page_LanguageEntities.html#enum">enum</a><span>enum</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="enum" data-pimped="true">
+                    <a href="page_LanguageEntities.html#enum">enum</a>
+                    <a href="enum_BlastProgram.html" target="main">BlastProgram</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="enum_BlastProgram.html" target="main">enum_BlastProgram.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BlastProgramSelector.html" target="main">BlastProgramSelector</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BlastProgramSelector.html" target="main">class_BlastProgramSelector.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BlastRecord.html" target="main">BlastRecord</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BlastRecord.html" target="main">class_BlastRecord.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BlastReport.html" target="main">BlastReport</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BlastReport.html" target="main">class_BlastReport.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_BlastReportFileOut.html" target="main">BlastReportFileOut</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_BlastReportFileOut.html" target="main">specialization_BlastReportFileOut.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BlastScoringScheme.html" target="main">BlastScoringScheme</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BlastScoringScheme.html" target="main">class_BlastScoringScheme.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BlastTabular.html" target="main">BlastTabular</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BlastTabular.html" target="main">class_BlastTabular.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_BlastTabularFileIn.html" target="main">BlastTabularFileIn</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_BlastTabularFileIn.html" target="main">specialization_BlastTabularFileIn.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_BlastTabularFileOut.html" target="main">BlastTabularFileOut</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_BlastTabularFileOut.html" target="main">specialization_BlastTabularFileOut.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BlastTabularLL.html" target="main">BlastTabularLL</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BlastTabularLL.html" target="main">class_BlastTabularLL.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="enum" data-pimped="true">
+              <span data-lang-entity="enum"><a href="page_LanguageEntities.html#enum">enum</a><span>enum</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="enum" data-pimped="true">
+                    <a href="page_LanguageEntities.html#enum">enum</a>
+                    <a href="enum_BlastTabularSpec.html" target="main">BlastTabularSpec</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="enum_BlastTabularSpec.html" target="main">enum_BlastTabularSpec.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BlastTabularSpecSelector.html" target="main">BlastTabularSpecSelector</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BlastTabularSpecSelector.html" target="main">class_BlastTabularSpecSelector.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_BlockString.html" target="main">BlockString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_BlockString.html" target="main">specialization_BlockString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Blosum30.html" target="main">Blosum30</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Blosum30.html" target="main">global_typedef_Blosum30.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Blosum45.html" target="main">Blosum45</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Blosum45.html" target="main">global_typedef_Blosum45.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Blosum62.html" target="main">Blosum62</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Blosum62.html" target="main">global_typedef_Blosum62.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Blosum80.html" target="main">Blosum80</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Blosum80.html" target="main">global_typedef_Blosum80.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_BndmAlgoPattern.html" target="main">BndmAlgoPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_BndmAlgoPattern.html" target="main">specialization_BndmAlgoPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_BottomUp.html" target="main">BottomUp</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_BottomUp.html" target="main">group_BottomUp.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_BottomUpIterator.html" target="main">BottomUpIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_BottomUpIterator.html" target="main">specialization_BottomUpIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_breadthFirstSearch.html" target="main">breadthFirstSearch</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_breadthFirstSearch.html" target="main">global_function_breadthFirstSearch.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_BufferedStream.html" target="main">BufferedStream</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_BufferedStream.html" target="main">class_BufferedStream.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_buildAlignmentGraph.html" target="main">buildAlignmentGraph</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_buildAlignmentGraph.html" target="main">global_function_buildAlignmentGraph.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_bundle2.html" target="main">bundle2</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_bundle2.html" target="main">global_function_bundle2.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Bundle2.html" target="main">Bundle2</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Bundle2.html" target="main">class_Bundle2.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_bundle3.html" target="main">bundle3</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_bundle3.html" target="main">global_function_bundle3.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Bundle3.html" target="main">Bundle3</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Bundle3.html" target="main">class_Bundle3.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_bundle5.html" target="main">bundle5</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_bundle5.html" target="main">global_function_bundle5.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Bundle5.html" target="main">Bundle5</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Bundle5.html" target="main">class_Bundle5.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_BytesPerValue.html" target="main">BytesPerValue</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_BytesPerValue.html" target="main">global_metafunction_BytesPerValue.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_calcBetaDistParam.html" target="main">calcBetaDistParam</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_calcBetaDistParam.html" target="main">global_function_calcBetaDistParam.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_calcLogNormalDistParam.html" target="main">calcLogNormalDistParam</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_calcLogNormalDistParam.html" target="main">global_function_calcLogNormalDistParam.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_calculateCovariance.html" target="main">calculateCovariance</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_calculateCovariance.html" target="main">global_function_calculateCovariance.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_calculateOverlapIndicator.html" target="main">calculateOverlapIndicator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_calculateOverlapIndicator.html" target="main">global_function_calculateOverlapIndicator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_calculatePeriodicity.html" target="main">calculatePeriodicity</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_calculatePeriodicity.html" target="main">global_function_calculatePeriodicity.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_calculateProbability.html" target="main">calculateProbability</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_calculateProbability.html" target="main">global_function_calculateProbability.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_calculateVariance.html" target="main">calculateVariance</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_calculateVariance.html" target="main">global_function_calculateVariance.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_Cargo.html" target="main">Cargo</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_Cargo.html" target="main">global_metafunction_Cargo.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Caster.html" target="main">Caster</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Caster.html" target="main">specialization_Caster.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ChainedSeed.html" target="main">ChainedSeed</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ChainedSeed.html" target="main">specialization_ChainedSeed.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_chainSeedsGlobally.html" target="main">chainSeedsGlobally</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_chainSeedsGlobally.html" target="main">global_function_chainSeedsGlobally.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_CharIterator.html" target="main">CharIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_CharIterator.html" target="main">global_typedef_CharIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_CharString.html" target="main">CharString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_CharString.html" target="main">global_typedef_CharString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_Chunk.html" target="main">Chunk</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_Chunk.html" target="main">global_metafunction_Chunk.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_CigarElement.html" target="main">CigarElement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_CigarElement.html" target="main">class_CigarElement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_clearAllBits.html" target="main">clearAllBits</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_clearAllBits.html" target="main">global_function_clearAllBits.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_clearBit.html" target="main">clearBit</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_clearBit.html" target="main">global_function_clearBit.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_ComparableConcept.html" target="main">ComparableConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_ComparableConcept.html" target="main">concept_ComparableConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_Comparator.html" target="main">Comparator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_Comparator.html" target="main">global_metafunction_Comparator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_CompareType.html" target="main">CompareType</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_CompareType.html" target="main">global_metafunction_CompareType.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_CompareTypeImpl.html" target="main">CompareTypeImpl</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_CompareTypeImpl.html" target="main">global_metafunction_CompareTypeImpl.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_complement.html" target="main">complement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_complement.html" target="main">global_function_complement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_CompressedSA.html" target="main">CompressedSA</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_CompressedSA.html" target="main">class_CompressedSA.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_CompressedSAFibres.html" target="main">CompressedSAFibres</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_CompressedSAFibres.html" target="main">group_CompressedSAFibres.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_computeAlignmentStats.html" target="main">computeAlignmentStats</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_computeAlignmentStats.html" target="main">global_function_computeAlignmentStats.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_computeSplitters.html" target="main">computeSplitters</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_computeSplitters.html" target="main">global_function_computeSplitters.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ConcatDirectStringSet.html" target="main">ConcatDirectStringSet</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ConcatDirectStringSet.html" target="main">specialization_ConcatDirectStringSet.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ConcatenatorManyToOne.html" target="main">ConcatenatorManyToOne</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ConcatenatorManyToOne.html" target="main">class_ConcatenatorManyToOne.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ConcatVirtualIterator.html" target="main">ConcatVirtualIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ConcatVirtualIterator.html" target="main">specialization_ConcatVirtualIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_ConceptChecking.html" target="main">ConceptChecking</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_ConceptChecking.html" target="main">group_ConceptChecking.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ConcurrentQueue.html" target="main">ConcurrentQueue</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ConcurrentQueue.html" target="main">class_ConcurrentQueue.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ConcurrentSuspendableQueue.html" target="main">ConcurrentSuspendableQueue</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ConcurrentSuspendableQueue.html" target="main">specialization_ConcurrentSuspendableQueue.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_connectedComponents.html" target="main">connectedComponents</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_connectedComponents.html" target="main">global_function_connectedComponents.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ConsensusAlignerIllegalArgumentException.html" target="main">ConsensusAlignerIllegalArgumentException</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ConsensusAlignerIllegalArgumentException.html" target="main">class_ConsensusAlignerIllegalArgumentException.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_consensusAlignment.html" target="main">consensusAlignment</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_consensusAlignment.html" target="main">global_function_consensusAlignment.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ConsensusAlignmentOptions.html" target="main">ConsensusAlignmentOptions</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ConsensusAlignmentOptions.html" target="main">class_ConsensusAlignmentOptions.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ConsensusScoreSequenceEntry.html" target="main">ConsensusScoreSequenceEntry</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ConsensusScoreSequenceEntry.html" target="main">class_ConsensusScoreSequenceEntry.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_ContainerConcept.html" target="main">ContainerConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_ContainerConcept.html" target="main">concept_ContainerConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_ContainerIteratorTags.html" target="main">ContainerIteratorTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_ContainerIteratorTags.html" target="main">group_ContainerIteratorTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ContainerView.html" target="main">ContainerView</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ContainerView.html" target="main">class_ContainerView.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ContigFile.html" target="main">ContigFile</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ContigFile.html" target="main">class_ContigFile.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ContigStoreElement.html" target="main">ContigStoreElement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ContigStoreElement.html" target="main">class_ContigStoreElement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_convert.html" target="main">convert</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_convert.html" target="main">global_function_convert.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_Convert.html" target="main">Convert</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_Convert.html" target="main">global_metafunction_Convert.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_ConvertibleConcept.html" target="main">ConvertibleConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_ConvertibleConcept.html" target="main">concept_ConvertibleConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_convertImpl.html" target="main">convertImpl</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_convertImpl.html" target="main">global_function_convertImpl.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_convertQuality.html" target="main">convertQuality</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_convertQuality.html" target="main">global_function_convertQuality.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_CopyConstructibleConcept.html" target="main">CopyConstructibleConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_CopyConstructibleConcept.html" target="main">concept_CopyConstructibleConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Counter.html" target="main">Counter</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Counter.html" target="main">specialization_Counter.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_CountingIdManager.html" target="main">CountingIdManager</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_CountingIdManager.html" target="main">specialization_CountingIdManager.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_countKmers.html" target="main">countKmers</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_countKmers.html" target="main">global_function_countKmers.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_cpuTime.html" target="main">cpuTime</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_cpuTime.html" target="main">global_function_cpuTime.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_createBWTable.html" target="main">createBWTable</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_createBWTable.html" target="main">global_function_createBWTable.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_createInvSuffixArray.html" target="main">createInvSuffixArray</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_createInvSuffixArray.html" target="main">global_function_createInvSuffixArray.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_createLcpTable.html" target="main">createLcpTable</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_createLcpTable.html" target="main">global_function_createLcpTable.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_createSuffixArray.html" target="main">createSuffixArray</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_createSuffixArray.html" target="main">global_function_createSuffixArray.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_CStyleString.html" target="main">CStyleString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_CStyleString.html" target="main">specialization_CStyleString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_cutNs.html" target="main">cutNs</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_cutNs.html" target="main">global_function_cutNs.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_CyclicShape.html" target="main">CyclicShape</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_CyclicShape.html" target="main">class_CyclicShape.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_D2AFScore.html" target="main">D2AFScore</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_D2AFScore.html" target="main">specialization_D2AFScore.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_D2StarAFScore.html" target="main">D2StarAFScore</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_D2StarAFScore.html" target="main">specialization_D2StarAFScore.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_D2zAFScore.html" target="main">D2zAFScore</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_D2zAFScore.html" target="main">specialization_D2zAFScore.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_dagShortestPath.html" target="main">dagShortestPath</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_dagShortestPath.html" target="main">global_function_dagShortestPath.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_DeepestSpec.html" target="main">DeepestSpec</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_DeepestSpec.html" target="main">global_metafunction_DeepestSpec.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="tag" data-pimped="true">
+              <span data-lang-entity="tag"><a href="page_LanguageEntities.html#tag">Tag</a><span>Tag</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="tag" data-pimped="true">
+                    <a href="page_LanguageEntities.html#tag">Tag</a>
+                    <a href="tag_Default.html" target="main">Default</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="tag_Default.html" target="main">tag_Default.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_DefaultConstructibleConcept.html" target="main">DefaultConstructibleConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_DefaultConstructibleConcept.html" target="main">concept_DefaultConstructibleConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_DefaultFindBeginPatternSpec.html" target="main">DefaultFindBeginPatternSpec</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_DefaultFindBeginPatternSpec.html" target="main">global_metafunction_DefaultFindBeginPatternSpec.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_DefaultFinder.html" target="main">DefaultFinder</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_DefaultFinder.html" target="main">global_metafunction_DefaultFinder.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_DefaultJstConfig.html" target="main">DefaultJstConfig</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_DefaultJstConfig.html" target="main">class_DefaultJstConfig.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_DefaultOverflowExplicit.html" target="main">DefaultOverflowExplicit</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_DefaultOverflowExplicit.html" target="main">global_metafunction_DefaultOverflowExplicit.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_DefaultOverflowImplicit.html" target="main">DefaultOverflowImplicit</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_DefaultOverflowImplicit.html" target="main">global_metafunction_DefaultOverflowImplicit.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_DefaultPattern.html" target="main">DefaultPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_DefaultPattern.html" target="main">global_metafunction_DefaultPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_DefaultPrefixOrder.html" target="main">DefaultPrefixOrder</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_DefaultPrefixOrder.html" target="main">global_metafunction_DefaultPrefixOrder.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_defaultRng.html" target="main">defaultRng</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_defaultRng.html" target="main">global_function_defaultRng.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_DefaultSeedConfig.html" target="main">DefaultSeedConfig</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_DefaultSeedConfig.html" target="main">class_DefaultSeedConfig.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_DeltaMap.html" target="main">DeltaMap</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_DeltaMap.html" target="main">class_DeltaMap.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_DeltaMapIterator.html" target="main">DeltaMapIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_DeltaMapIterator.html" target="main">specialization_DeltaMapIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="enum" data-pimped="true">
+              <span data-lang-entity="enum"><a href="page_LanguageEntities.html#enum">enum</a><span>enum</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="enum" data-pimped="true">
+                    <a href="page_LanguageEntities.html#enum">enum</a>
+                    <a href="enum_DeltaType.html" target="main">DeltaType</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="enum_DeltaType.html" target="main">enum_DeltaType.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_DeltaTypeTags.html" target="main">DeltaTypeTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_DeltaTypeTags.html" target="main">group_DeltaTypeTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            
+            
+            
+            
+            
+            
+            
+            
+            
+            
+            
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_DependentStringSet.html" target="main">DependentStringSet</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_DependentStringSet.html" target="main">specialization_DependentStringSet.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_depthFirstSearch.html" target="main">depthFirstSearch</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_depthFirstSearch.html" target="main">global_function_depthFirstSearch.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Deque.html" target="main">Deque</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Deque.html" target="main">class_Deque.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_DestructibleConcept.html" target="main">DestructibleConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_DestructibleConcept.html" target="main">concept_DestructibleConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_Device.html" target="main">Device</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_Device.html" target="main">global_metafunction_Device.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_DfiIndexFibres.html" target="main">DfiIndexFibres</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_DfiIndexFibres.html" target="main">group_DfiIndexFibres.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_DfsOrder.html" target="main">DfsOrder</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_DfsOrder.html" target="main">group_DfsOrder.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_DfsPreorderIterator.html" target="main">DfsPreorderIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_DfsPreorderIterator.html" target="main">specialization_DfsPreorderIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_Difference.html" target="main">Difference</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_Difference.html" target="main">global_metafunction_Difference.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_dijkstra.html" target="main">dijkstra</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_dijkstra.html" target="main">global_function_dijkstra.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_DirectedGraph.html" target="main">DirectedGraph</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_DirectedGraph.html" target="main">specialization_DirectedGraph.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_DirectionTags.html" target="main">DirectionTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_DirectionTags.html" target="main">group_DirectionTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_DistanceCalculationTags.html" target="main">DistanceCalculationTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_DistanceCalculationTags.html" target="main">group_DistanceCalculationTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Dna.html" target="main">Dna</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Dna.html" target="main">specialization_Dna.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Dna5.html" target="main">Dna5</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Dna5.html" target="main">specialization_Dna5.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Dna5Iterator.html" target="main">Dna5Iterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Dna5Iterator.html" target="main">global_typedef_Dna5Iterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Dna5Q.html" target="main">Dna5Q</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Dna5Q.html" target="main">specialization_Dna5Q.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Dna5QString.html" target="main">Dna5QString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Dna5QString.html" target="main">global_typedef_Dna5QString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Dna5String.html" target="main">Dna5String</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Dna5String.html" target="main">global_typedef_Dna5String.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Dna5StringComplement.html" target="main">Dna5StringComplement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Dna5StringComplement.html" target="main">global_typedef_Dna5StringComplement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Dna5StringReverse.html" target="main">Dna5StringReverse</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Dna5StringReverse.html" target="main">global_typedef_Dna5StringReverse.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Dna5StringReverseComplement.html" target="main">Dna5StringReverseComplement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Dna5StringReverseComplement.html" target="main">global_typedef_Dna5StringReverseComplement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_DnaIterator.html" target="main">DnaIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_DnaIterator.html" target="main">global_typedef_DnaIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_DnaQ.html" target="main">DnaQ</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_DnaQ.html" target="main">specialization_DnaQ.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_DnaQString.html" target="main">DnaQString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_DnaQString.html" target="main">global_typedef_DnaQString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_DnaString.html" target="main">DnaString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_DnaString.html" target="main">global_typedef_DnaString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_DnaStringComplement.html" target="main">DnaStringComplement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_DnaStringComplement.html" target="main">global_typedef_DnaStringComplement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_DnaStringReverse.html" target="main">DnaStringReverse</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_DnaStringReverse.html" target="main">global_typedef_DnaStringReverse.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_DnaStringReverseComplement.html" target="main">DnaStringReverseComplement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_DnaStringReverseComplement.html" target="main">global_typedef_DnaStringReverseComplement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="tag" data-pimped="true">
+              <span data-lang-entity="tag"><a href="page_LanguageEntities.html#tag">Tag</a><span>Tag</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="tag" data-pimped="true">
+                    <a href="page_LanguageEntities.html#tag">Tag</a>
+                    <a href="tag_DotDrawing.html" target="main">DotDrawing</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="tag_DotDrawing.html" target="main">tag_DotDrawing.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_DPBand.html" target="main">DPBand</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_DPBand.html" target="main">global_typedef_DPBand.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_DPBandConfig.html" target="main">DPBandConfig</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_DPBandConfig.html" target="main">class_DPBandConfig.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_DPBandSwitch.html" target="main">DPBandSwitch</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_DPBandSwitch.html" target="main">group_DPBandSwitch.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_DPSearchPattern.html" target="main">DPSearchPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_DPSearchPattern.html" target="main">specialization_DPSearchPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Echoer.html" target="main">Echoer</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Echoer.html" target="main">specialization_Echoer.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_EdgeIterator.html" target="main">EdgeIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_EdgeIterator.html" target="main">specialization_EdgeIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_EdgeStump.html" target="main">EdgeStump</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_EdgeStump.html" target="main">class_EdgeStump.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="tag" data-pimped="true">
+              <span data-lang-entity="tag"><a href="page_LanguageEntities.html#tag">Tag</a><span>Tag</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="tag" data-pimped="true">
+                    <a href="page_LanguageEntities.html#tag">Tag</a>
+                    <a href="tag_EditDistance.html" target="main">EditDistance</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="tag_EditDistance.html" target="main">tag_EditDistance.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_EditDistanceScore.html" target="main">EditDistanceScore</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_EditDistanceScore.html" target="main">specialization_EditDistanceScore.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_EditDistanceScoreTypedef.html" target="main">EditDistanceScoreTypedef</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_EditDistanceScoreTypedef.html" target="main">global_typedef_EditDistanceScoreTypedef.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_EditEnvironment.html" target="main">EditEnvironment</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_EditEnvironment.html" target="main">specialization_EditEnvironment.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_EmptyFieldError.html" target="main">EmptyFieldError</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_EmptyFieldError.html" target="main">specialization_EmptyFieldError.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_EnableIfFunctionality.html" target="main">EnableIfFunctionality</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_EnableIfFunctionality.html" target="main">group_EnableIfFunctionality.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_endsWith.html" target="main">endsWith</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_endsWith.html" target="main">global_function_endsWith.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_EqualityComparableConcept.html" target="main">EqualityComparableConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_EqualityComparableConcept.html" target="main">concept_EqualityComparableConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Equidistant.html" target="main">Equidistant</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Equidistant.html" target="main">specialization_Equidistant.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ExactFragment.html" target="main">ExactFragment</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ExactFragment.html" target="main">specialization_ExactFragment.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ExactReversableFragment.html" target="main">ExactReversableFragment</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ExactReversableFragment.html" target="main">specialization_ExactReversableFragment.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Exception.html" target="main">Exception</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Exception.html" target="main">class_Exception.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_ExceptionHandling.html" target="main">ExceptionHandling</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_ExceptionHandling.html" target="main">group_ExceptionHandling.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_expectation.html" target="main">expectation</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_expectation.html" target="main">global_function_expectation.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_extendAlignment.html" target="main">extendAlignment</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_extendAlignment.html" target="main">global_function_extendAlignment.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="enum" data-pimped="true">
+              <span data-lang-entity="enum"><a href="page_LanguageEntities.html#enum">enum</a><span>enum</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="enum" data-pimped="true">
+                    <a href="page_LanguageEntities.html#enum">enum</a>
+                    <a href="enum_ExtensionDirection.html" target="main">ExtensionDirection</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="enum_ExtensionDirection.html" target="main">enum_ExtensionDirection.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ExternalConfig.html" target="main">ExternalConfig</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ExternalConfig.html" target="main">class_ExternalConfig.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ExternalConfigLarge.html" target="main">ExternalConfigLarge</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ExternalConfigLarge.html" target="main">class_ExternalConfigLarge.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ExternalConfigSize.html" target="main">ExternalConfigSize</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ExternalConfigSize.html" target="main">class_ExternalConfigSize.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ExternalString.html" target="main">ExternalString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ExternalString.html" target="main">specialization_ExternalString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_FaiIndex.html" target="main">FaiIndex</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_FaiIndex.html" target="main">class_FaiIndex.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_Fibre.html" target="main">Fibre</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_Fibre.html" target="main">global_metafunction_Fibre.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_File.html" target="main">File</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_File.html" target="main">class_File.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_FileCompressionTags.html" target="main">FileCompressionTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_FileCompressionTags.html" target="main">group_FileCompressionTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_FileExtensions.html" target="main">FileExtensions</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_FileExtensions.html" target="main">global_metafunction_FileExtensions.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_FileFormats.html" target="main">FileFormats</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_FileFormats.html" target="main">group_FileFormats.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_FileMapping.html" target="main">FileMapping</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_FileMapping.html" target="main">class_FileMapping.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="enum" data-pimped="true">
+              <span data-lang-entity="enum"><a href="page_LanguageEntities.html#enum">enum</a><span>enum</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="enum" data-pimped="true">
+                    <a href="page_LanguageEntities.html#enum">enum</a>
+                    <a href="enum_FileMappingAdvise.html" target="main">FileMappingAdvise</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="enum_FileMappingAdvise.html" target="main">enum_FileMappingAdvise.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="enum" data-pimped="true">
+              <span data-lang-entity="enum"><a href="page_LanguageEntities.html#enum">enum</a><span>enum</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="enum" data-pimped="true">
+                    <a href="page_LanguageEntities.html#enum">enum</a>
+                    <a href="enum_FileMappingMode.html" target="main">FileMappingMode</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="enum_FileMappingMode.html" target="main">enum_FileMappingMode.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="enum" data-pimped="true">
+              <span data-lang-entity="enum"><a href="page_LanguageEntities.html#enum">enum</a><span>enum</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="enum" data-pimped="true">
+                    <a href="page_LanguageEntities.html#enum">enum</a>
+                    <a href="enum_FileOpenMode.html" target="main">FileOpenMode</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="enum_FileOpenMode.html" target="main">enum_FileOpenMode.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Filter.html" target="main">Filter</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Filter.html" target="main">specialization_Filter.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_Find.html" target="main">Find</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_Find.html" target="main">global_metafunction_Find.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Finder.html" target="main">Finder</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Finder.html" target="main">class_Finder.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_findRepeats.html" target="main">findRepeats</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_findRepeats.html" target="main">global_function_findRepeats.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Finite.html" target="main">Finite</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Finite.html" target="main">specialization_Finite.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_FiniteOrderedAlphabetConcept.html" target="main">FiniteOrderedAlphabetConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_FiniteOrderedAlphabetConcept.html" target="main">concept_FiniteOrderedAlphabetConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_FixedCyclicShape.html" target="main">FixedCyclicShape</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_FixedCyclicShape.html" target="main">specialization_FixedCyclicShape.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_floydWarshallAlgorithm.html" target="main">floydWarshallAlgorithm</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_floydWarshallAlgorithm.html" target="main">global_function_floydWarshallAlgorithm.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_FMIndex.html" target="main">FMIndex</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_FMIndex.html" target="main">specialization_FMIndex.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_FMIndexCompressionSpec.html" target="main">FMIndexCompressionSpec</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_FMIndexCompressionSpec.html" target="main">group_FMIndexCompressionSpec.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_FMIndexConfig.html" target="main">FMIndexConfig</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_FMIndexConfig.html" target="main">class_FMIndexConfig.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_FMIndexFibres.html" target="main">FMIndexFibres</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_FMIndexFibres.html" target="main">group_FMIndexFibres.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_FMIndexRankDictionarySpec.html" target="main">FMIndexRankDictionarySpec</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_FMIndexRankDictionarySpec.html" target="main">group_FMIndexRankDictionarySpec.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_fordFulkersonAlgorithm.html" target="main">fordFulkersonAlgorithm</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_fordFulkersonAlgorithm.html" target="main">global_function_fordFulkersonAlgorithm.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_FormattedFile.html" target="main">FormattedFile</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_FormattedFile.html" target="main">class_FormattedFile.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_FormattedFileHeaderConcept.html" target="main">FormattedFileHeaderConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_FormattedFileHeaderConcept.html" target="main">concept_FormattedFileHeaderConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_FormattedFileIn.html" target="main">FormattedFileIn</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_FormattedFileIn.html" target="main">specialization_FormattedFileIn.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_FormattedFileOut.html" target="main">FormattedFileOut</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_FormattedFileOut.html" target="main">specialization_FormattedFileOut.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_FormattedFileRecordConcept.html" target="main">FormattedFileRecordConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_FormattedFileRecordConcept.html" target="main">concept_FormattedFileRecordConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_FormattedNumber.html" target="main">FormattedNumber</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_FormattedNumber.html" target="main">class_FormattedNumber.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_ForwardContainerConcept.html" target="main">ForwardContainerConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_ForwardContainerConcept.html" target="main">concept_ForwardContainerConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_ForwardIteratorConcept.html" target="main">ForwardIteratorConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_ForwardIteratorConcept.html" target="main">concept_ForwardIteratorConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Fragment.html" target="main">Fragment</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Fragment.html" target="main">class_Fragment.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_FragmentStore.html" target="main">FragmentStore</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_FragmentStore.html" target="main">class_FragmentStore.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="enum" data-pimped="true">
+              <span data-lang-entity="enum"><a href="page_LanguageEntities.html#enum">enum</a><span>enum</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="enum" data-pimped="true">
+                    <a href="page_LanguageEntities.html#enum">enum</a>
+                    <a href="enum_FragmentStore_58_58PredefinedAnnotationTypes.html" target="main">FragmentStore::PredefinedAnnotationTypes</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="enum_FragmentStore_58_58PredefinedAnnotationTypes.html" target="main">enum_FragmentStore_58_58PredefinedAnnotationTypes.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_FunctorComplement.html" target="main">FunctorComplement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_FunctorComplement.html" target="main">class_FunctorComplement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_FunctorConvert.html" target="main">FunctorConvert</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_FunctorConvert.html" target="main">class_FunctorConvert.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_FunctorLowcase.html" target="main">FunctorLowcase</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_FunctorLowcase.html" target="main">class_FunctorLowcase.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_FunctorUpcase.html" target="main">FunctorUpcase</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_FunctorUpcase.html" target="main">class_FunctorUpcase.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_GapAnchor.html" target="main">GapAnchor</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_GapAnchor.html" target="main">class_GapAnchor.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_GapDirectionTags.html" target="main">GapDirectionTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_GapDirectionTags.html" target="main">group_GapDirectionTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_GappedShape.html" target="main">GappedShape</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_GappedShape.html" target="main">specialization_GappedShape.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_GappedValueType.html" target="main">GappedValueType</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_GappedValueType.html" target="main">global_metafunction_GappedValueType.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Gaps.html" target="main">Gaps</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Gaps.html" target="main">class_Gaps.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_GapsIterator.html" target="main">GapsIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_GapsIterator.html" target="main">class_GapsIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_GapsSpecTag.html" target="main">GapsSpecTag</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_GapsSpecTag.html" target="main">group_GapsSpecTag.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_GenericCyclicShape.html" target="main">GenericCyclicShape</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_GenericCyclicShape.html" target="main">specialization_GenericCyclicShape.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_GenericShape.html" target="main">GenericShape</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_GenericShape.html" target="main">specialization_GenericShape.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_GenerousDependentStringSet.html" target="main">GenerousDependentStringSet</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_GenerousDependentStringSet.html" target="main">specialization_GenerousDependentStringSet.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="tag" data-pimped="true">
+              <span data-lang-entity="tag"><a href="page_LanguageEntities.html#tag">Tag</a><span>Tag</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="tag" data-pimped="true">
+                    <a href="page_LanguageEntities.html#tag">Tag</a>
+                    <a href="tag_GeneticCode.html" target="main">GeneticCode</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="tag_GeneticCode.html" target="main">tag_GeneticCode.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="enum" data-pimped="true">
+              <span data-lang-entity="enum"><a href="page_LanguageEntities.html#enum">enum</a><span>enum</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="enum" data-pimped="true">
+                    <a href="page_LanguageEntities.html#enum">enum</a>
+                    <a href="enum_GeneticCodeSpec.html" target="main">GeneticCodeSpec</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="enum_GeneticCodeSpec.html" target="main">enum_GeneticCodeSpec.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_GenomicRegion.html" target="main">GenomicRegion</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_GenomicRegion.html" target="main">class_GenomicRegion.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_getAbsolutePath.html" target="main">getAbsolutePath</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_getAbsolutePath.html" target="main">global_function_getAbsolutePath.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_getBamTypeChar.html" target="main">getBamTypeChar</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_getBamTypeChar.html" target="main">global_function_getBamTypeChar.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_getBamTypeSize.html" target="main">getBamTypeSize</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_getBamTypeSize.html" target="main">global_function_getBamTypeSize.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_GetDefaultRng.html" target="main">GetDefaultRng</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_GetDefaultRng.html" target="main">global_metafunction_GetDefaultRng.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_getTerminalSize.html" target="main">getTerminalSize</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_getTerminalSize.html" target="main">global_function_getTerminalSize.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_GetValue.html" target="main">GetValue</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_GetValue.html" target="main">global_metafunction_GetValue.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_GffFileIn.html" target="main">GffFileIn</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_GffFileIn.html" target="main">specialization_GffFileIn.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_GffFileOut.html" target="main">GffFileOut</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_GffFileOut.html" target="main">specialization_GffFileOut.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_GffRecord.html" target="main">GffRecord</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_GffRecord.html" target="main">class_GffRecord.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_GlobalAlign.html" target="main">GlobalAlign</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_GlobalAlign.html" target="main">specialization_GlobalAlign.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_globalAlignment.html" target="main">globalAlignment</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_globalAlignment.html" target="main">global_function_globalAlignment.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_globalAlignmentScore.html" target="main">globalAlignmentScore</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_globalAlignmentScore.html" target="main">global_function_globalAlignmentScore.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_GlobalChain.html" target="main">GlobalChain</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_GlobalChain.html" target="main">specialization_GlobalChain.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_GlobalChainingTags.html" target="main">GlobalChainingTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_GlobalChainingTags.html" target="main">group_GlobalChainingTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_globalMsaAlignment.html" target="main">globalMsaAlignment</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_globalMsaAlignment.html" target="main">global_function_globalMsaAlignment.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Graph.html" target="main">Graph</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Graph.html" target="main">class_Graph.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_GraphIteratorTags.html" target="main">GraphIteratorTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_GraphIteratorTags.html" target="main">group_GraphIteratorTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_GraphOverAlphabetConcept.html" target="main">GraphOverAlphabetConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_GraphOverAlphabetConcept.html" target="main">concept_GraphOverAlphabetConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_guessFormatFromFilename.html" target="main">guessFormatFromFilename</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_guessFormatFromFilename.html" target="main">global_function_guessFormatFromFilename.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="tag" data-pimped="true">
+              <span data-lang-entity="tag"><a href="page_LanguageEntities.html#tag">Tag</a><span>Tag</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="tag" data-pimped="true">
+                    <a href="page_LanguageEntities.html#tag">Tag</a>
+                    <a href="tag_HammingDistance.html" target="main">HammingDistance</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="tag_HammingDistance.html" target="main">tag_HammingDistance.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_HammingSimplePattern.html" target="main">HammingSimplePattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_HammingSimplePattern.html" target="main">specialization_HammingSimplePattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_HammingStringEnumerator.html" target="main">HammingStringEnumerator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_HammingStringEnumerator.html" target="main">specialization_HammingStringEnumerator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_HardwiredShape.html" target="main">HardwiredShape</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_HardwiredShape.html" target="main">specialization_HardwiredShape.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_HasMoveConstructor.html" target="main">HasMoveConstructor</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_HasMoveConstructor.html" target="main">global_metafunction_HasMoveConstructor.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_heaviestIncreasingSubsequence.html" target="main">heaviestIncreasingSubsequence</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_heaviestIncreasingSubsequence.html" target="main">global_function_heaviestIncreasingSubsequence.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_HierarchicalPexPattern.html" target="main">HierarchicalPexPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_HierarchicalPexPattern.html" target="main">specialization_HierarchicalPexPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_HmmAlgorithms.html" target="main">HmmAlgorithms</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_HmmAlgorithms.html" target="main">group_HmmAlgorithms.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_HmmGraph.html" target="main">HmmGraph</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_HmmGraph.html" target="main">specialization_HmmGraph.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Holder.html" target="main">Holder</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Holder.html" target="main">class_Holder.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_HorspoolPattern.html" target="main">HorspoolPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_HorspoolPattern.html" target="main">specialization_HorspoolPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_HostedConcept.html" target="main">HostedConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_HostedConcept.html" target="main">concept_HostedConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_Id.html" target="main">Id</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_Id.html" target="main">global_metafunction_Id.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_IdManager.html" target="main">IdManager</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_IdManager.html" target="main">class_IdManager.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_ignoreUnusedVariableWarning.html" target="main">ignoreUnusedVariableWarning</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_ignoreUnusedVariableWarning.html" target="main">global_function_ignoreUnusedVariableWarning.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Index.html" target="main">Index</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Index.html" target="main">class_Index.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_IndexDfi.html" target="main">IndexDfi</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_IndexDfi.html" target="main">specialization_IndexDfi.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_IndexEsa.html" target="main">IndexEsa</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_IndexEsa.html" target="main">specialization_IndexEsa.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_IndexEsaFibres.html" target="main">IndexEsaFibres</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_IndexEsaFibres.html" target="main">group_IndexEsaFibres.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_IndexFindAlgorithm.html" target="main">IndexFindAlgorithm</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_IndexFindAlgorithm.html" target="main">group_IndexFindAlgorithm.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_IndexQGram.html" target="main">IndexQGram</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_IndexQGram.html" target="main">specialization_IndexQGram.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_IndexSa.html" target="main">IndexSa</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_IndexSa.html" target="main">specialization_IndexSa.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_IndexWotd.html" target="main">IndexWotd</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_IndexWotd.html" target="main">specialization_IndexWotd.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_InfixSegment.html" target="main">InfixSegment</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_InfixSegment.html" target="main">specialization_InfixSegment.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_InputIteratorConcept.html" target="main">InputIteratorConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_InputIteratorConcept.html" target="main">concept_InputIteratorConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_InputStreamConcept.html" target="main">InputStreamConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_InputStreamConcept.html" target="main">concept_InputStreamConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_InputStreamIterator.html" target="main">InputStreamIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_InputStreamIterator.html" target="main">specialization_InputStreamIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_IntegerConcept.html" target="main">IntegerConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_IntegerConcept.html" target="main">concept_IntegerConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_IntegralForValue.html" target="main">IntegralForValue</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_IntegralForValue.html" target="main">global_metafunction_IntegralForValue.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_integrateAlign.html" target="main">integrateAlign</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_integrateAlign.html" target="main">global_function_integrateAlign.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_InternalPointerPropertyMap.html" target="main">InternalPointerPropertyMap</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_InternalPointerPropertyMap.html" target="main">class_InternalPointerPropertyMap.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_InternalPropertyMap.html" target="main">InternalPropertyMap</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_InternalPropertyMap.html" target="main">class_InternalPropertyMap.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_IntervalAndCargo.html" target="main">IntervalAndCargo</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_IntervalAndCargo.html" target="main">class_IntervalAndCargo.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_IntervalTree.html" target="main">IntervalTree</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_IntervalTree.html" target="main">class_IntervalTree.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_IntervalTreeNode.html" target="main">IntervalTreeNode</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_IntervalTreeNode.html" target="main">class_IntervalTreeNode.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_IntervalTreeNodeTypeTags.html" target="main">IntervalTreeNodeTypeTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_IntervalTreeNodeTypeTags.html" target="main">group_IntervalTreeNodeTypeTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_IOError.html" target="main">IOError</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_IOError.html" target="main">class_IOError.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_IosOpenMode.html" target="main">IosOpenMode</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_IosOpenMode.html" target="main">global_metafunction_IosOpenMode.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_Is.html" target="main">Is</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_Is.html" target="main">global_metafunction_Is.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_isAnsiColorTerminal.html" target="main">isAnsiColorTerminal</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_isAnsiColorTerminal.html" target="main">global_function_isAnsiColorTerminal.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_isBitSet.html" target="main">isBitSet</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_isBitSet.html" target="main">global_function_isBitSet.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_IsCharType.html" target="main">IsCharType</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_IsCharType.html" target="main">global_metafunction_IsCharType.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_IsContiguous.html" target="main">IsContiguous</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_IsContiguous.html" target="main">global_metafunction_IsContiguous.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_IsDevice.html" target="main">IsDevice</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_IsDevice.html" target="main">global_metafunction_IsDevice.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_IsInteger.html" target="main">IsInteger</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_IsInteger.html" target="main">global_metafunction_IsInteger.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_IsIntegral.html" target="main">IsIntegral</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_IsIntegral.html" target="main">global_metafunction_IsIntegral.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_IsLightWeight.html" target="main">IsLightWeight</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_IsLightWeight.html" target="main">global_metafunction_IsLightWeight.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_IsSameType.html" target="main">IsSameType</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_IsSameType.html" target="main">global_metafunction_IsSameType.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_IsSequence.html" target="main">IsSequence</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_IsSequence.html" target="main">global_metafunction_IsSequence.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_IsSimple.html" target="main">IsSimple</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_IsSimple.html" target="main">global_metafunction_IsSimple.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_isTerminal.html" target="main">isTerminal</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_isTerminal.html" target="main">global_function_isTerminal.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_IsView.html" target="main">IsView</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_IsView.html" target="main">global_metafunction_IsView.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Iter.html" target="main">Iter</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Iter.html" target="main">class_Iter.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_IteratorAssociatedTypesConcept.html" target="main">IteratorAssociatedTypesConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_IteratorAssociatedTypesConcept.html" target="main">concept_IteratorAssociatedTypesConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_IteratorProxy.html" target="main">IteratorProxy</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_IteratorProxy.html" target="main">specialization_IteratorProxy.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Iupac.html" target="main">Iupac</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Iupac.html" target="main">specialization_Iupac.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_IupacIterator.html" target="main">IupacIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_IupacIterator.html" target="main">global_typedef_IupacIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_IupacString.html" target="main">IupacString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_IupacString.html" target="main">global_typedef_IupacString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_JoinConfig.html" target="main">JoinConfig</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_JoinConfig.html" target="main">class_JoinConfig.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Joiner.html" target="main">Joiner</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Joiner.html" target="main">specialization_Joiner.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_JoinStrategiesTags.html" target="main">JoinStrategiesTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_JoinStrategiesTags.html" target="main">group_JoinStrategiesTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_JournaledSet.html" target="main">JournaledSet</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_JournaledSet.html" target="main">specialization_JournaledSet.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_JournaledString.html" target="main">JournaledString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_JournaledString.html" target="main">specialization_JournaledString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_JournaledStringTree.html" target="main">JournaledStringTree</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_JournaledStringTree.html" target="main">class_JournaledStringTree.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_Key.html" target="main">Key</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_Key.html" target="main">global_metafunction_Key.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_kruskalsAlgorithm.html" target="main">kruskalsAlgorithm</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_kruskalsAlgorithm.html" target="main">global_function_kruskalsAlgorithm.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_LENGTH.html" target="main">LENGTH</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_LENGTH.html" target="main">global_metafunction_LENGTH.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_LessThanComparableConcept.html" target="main">LessThanComparableConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_LessThanComparableConcept.html" target="main">concept_LessThanComparableConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="tag" data-pimped="true">
+              <span data-lang-entity="tag"><a href="page_LanguageEntities.html#tag">Tag</a><span>Tag</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="tag" data-pimped="true">
+                    <a href="page_LanguageEntities.html#tag">Tag</a>
+                    <a href="tag_LevenshteinDistance.html" target="main">LevenshteinDistance</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="tag_LevenshteinDistance.html" target="main">tag_LevenshteinDistance.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_LevenshteinStringEnumerator.html" target="main">LevenshteinStringEnumerator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_LevenshteinStringEnumerator.html" target="main">specialization_LevenshteinStringEnumerator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Lexical.html" target="main">Lexical</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Lexical.html" target="main">class_Lexical.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_lexicalCast.html" target="main">lexicalCast</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_lexicalCast.html" target="main">global_function_lexicalCast.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_lexicalCastWithException.html" target="main">lexicalCastWithException</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_lexicalCastWithException.html" target="main">global_function_lexicalCastWithException.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_LF.html" target="main">LF</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_LF.html" target="main">class_LF.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_LFTableFibres.html" target="main">LFTableFibres</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_LFTableFibres.html" target="main">group_LFTableFibres.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_LibraryStoreElement.html" target="main">LibraryStoreElement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_LibraryStoreElement.html" target="main">class_LibraryStoreElement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="variable" data-pimped="true">
+              <span data-lang-entity="variable"><a href="page_LanguageEntities.html#variable">var</a><span>var</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="variable" data-pimped="true">
+                    <a href="page_LanguageEntities.html#variable">var</a>
+                    <a href="variable_LibraryStoreElementstd.html" target="main">LibraryStoreElementstd</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="variable_LibraryStoreElementstd.html" target="main">variable_LibraryStoreElementstd.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_localAlignment.html" target="main">localAlignment</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_localAlignment.html" target="main">global_function_localAlignment.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_LocalAlignmentEnumerator.html" target="main">LocalAlignmentEnumerator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_LocalAlignmentEnumerator.html" target="main">class_LocalAlignmentEnumerator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_LocalChainingTags.html" target="main">LocalChainingTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_LocalChainingTags.html" target="main">group_LocalChainingTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_LocalMatch.html" target="main">LocalMatch</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_LocalMatch.html" target="main">class_LocalMatch.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_LocalMatchStore.html" target="main">LocalMatchStore</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_LocalMatchStore.html" target="main">class_LocalMatchStore.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_LocalMatchStoreConfig.html" target="main">LocalMatchStoreConfig</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_LocalMatchStoreConfig.html" target="main">class_LocalMatchStoreConfig.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_log2.html" target="main">log2</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_log2.html" target="main">global_function_log2.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_LogicalValuesTags.html" target="main">LogicalValuesTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_LogicalValuesTags.html" target="main">group_LogicalValuesTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_LogicMetaprogramming.html" target="main">LogicMetaprogramming</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_LogicMetaprogramming.html" target="main">group_LogicMetaprogramming.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_LogProb.html" target="main">LogProb</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_LogProb.html" target="main">class_LogProb.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_longestCommonSubsequence.html" target="main">longestCommonSubsequence</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_longestCommonSubsequence.html" target="main">global_function_longestCommonSubsequence.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_longestIncreasingSubsequence.html" target="main">longestIncreasingSubsequence</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_longestIncreasingSubsequence.html" target="main">global_function_longestIncreasingSubsequence.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Loop.html" target="main">Loop</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Loop.html" target="main">class_Loop.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_LoopReverse.html" target="main">LoopReverse</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_LoopReverse.html" target="main">class_LoopReverse.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_lowerBoundAlignedReads.html" target="main">lowerBoundAlignedReads</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_lowerBoundAlignedReads.html" target="main">global_function_lowerBoundAlignedReads.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_MagicHeader.html" target="main">MagicHeader</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_MagicHeader.html" target="main">global_metafunction_MagicHeader.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_MakePacked.html" target="main">MakePacked</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_MakePacked.html" target="main">global_metafunction_MakePacked.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_MakeSigned.html" target="main">MakeSigned</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_MakeSigned.html" target="main">global_metafunction_MakeSigned.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_MakeUnsigned.html" target="main">MakeUnsigned</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_MakeUnsigned.html" target="main">global_metafunction_MakeUnsigned.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_makeZipIterator.html" target="main">makeZipIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_makeZipIterator.html" target="main">global_function_makeZipIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_makeZipView.html" target="main">makeZipView</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_makeZipView.html" target="main">global_function_makeZipView.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Map.html" target="main">Map</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Map.html" target="main">class_Map.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_MapperConfig.html" target="main">MapperConfig</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_MapperConfig.html" target="main">specialization_MapperConfig.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_MapperConfigSize.html" target="main">MapperConfigSize</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_MapperConfigSize.html" target="main">specialization_MapperConfigSize.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_MapperSpec.html" target="main">MapperSpec</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_MapperSpec.html" target="main">specialization_MapperSpec.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_MarkovModel.html" target="main">MarkovModel</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_MarkovModel.html" target="main">class_MarkovModel.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_matchRefinement.html" target="main">matchRefinement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_matchRefinement.html" target="main">global_function_matchRefinement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_MatePairStoreElement.html" target="main">MatePairStoreElement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_MatePairStoreElement.html" target="main">class_MatePairStoreElement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Matrix.html" target="main">Matrix</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Matrix.html" target="main">class_Matrix.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_MatrixScore.html" target="main">MatrixScore</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_MatrixScore.html" target="main">specialization_MatrixScore.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_MaxRepeatsIterator.html" target="main">MaxRepeatsIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_MaxRepeatsIterator.html" target="main">specialization_MaxRepeatsIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_Member.html" target="main">Member</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_Member.html" target="main">global_metafunction_Member.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_memset.html" target="main">memset</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_memset.html" target="main">global_function_memset.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_MetafunctionSwitch.html" target="main">MetafunctionSwitch</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_MetafunctionSwitch.html" target="main">group_MetafunctionSwitch.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_MetaprogrammingMath.html" target="main">MetaprogrammingMath</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_MetaprogrammingMath.html" target="main">group_MetaprogrammingMath.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_MMapConfig.html" target="main">MMapConfig</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_MMapConfig.html" target="main">class_MMapConfig.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_MMapString.html" target="main">MMapString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_MMapString.html" target="main">specialization_MMapString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ModCyclicShapeModifiedIterator.html" target="main">ModCyclicShapeModifiedIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ModCyclicShapeModifiedIterator.html" target="main">specialization_ModCyclicShapeModifiedIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ModCyclicShapeModifiedString.html" target="main">ModCyclicShapeModifiedString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ModCyclicShapeModifiedString.html" target="main">specialization_ModCyclicShapeModifiedString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ModifiedAlphabet.html" target="main">ModifiedAlphabet</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ModifiedAlphabet.html" target="main">class_ModifiedAlphabet.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ModifiedIterator.html" target="main">ModifiedIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ModifiedIterator.html" target="main">class_ModifiedIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ModifiedString.html" target="main">ModifiedString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ModifiedString.html" target="main">class_ModifiedString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ModReverseIterator.html" target="main">ModReverseIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ModReverseIterator.html" target="main">specialization_ModReverseIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ModReverseString.html" target="main">ModReverseString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ModReverseString.html" target="main">specialization_ModReverseString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ModViewModifiedIterator.html" target="main">ModViewModifiedIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ModViewModifiedIterator.html" target="main">specialization_ModViewModifiedIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ModViewModifiedString.html" target="main">ModViewModifiedString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ModViewModifiedString.html" target="main">specialization_ModViewModifiedString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="tag" data-pimped="true">
+              <span data-lang-entity="tag"><a href="page_LanguageEntities.html#tag">Tag</a><span>Tag</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="tag" data-pimped="true">
+                    <a href="page_LanguageEntities.html#tag">Tag</a>
+                    <a href="tag_Move.html" target="main">Move</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="tag_Move.html" target="main">tag_Move.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_MsaOptions.html" target="main">MsaOptions</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_MsaOptions.html" target="main">class_MsaOptions.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_MultiBfamPattern.html" target="main">MultiBfamPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_MultiBfamPattern.html" target="main">specialization_MultiBfamPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_MultiMemsIterator.html" target="main">MultiMemsIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_MultiMemsIterator.html" target="main">specialization_MultiMemsIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_MultipleSequenceAlignmentTags.html" target="main">MultipleSequenceAlignmentTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_MultipleSequenceAlignmentTags.html" target="main">group_MultipleSequenceAlignmentTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_MultipleShiftAndPattern.html" target="main">MultipleShiftAndPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_MultipleShiftAndPattern.html" target="main">specialization_MultipleShiftAndPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_MultiPoolAllocator.html" target="main">MultiPoolAllocator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_MultiPoolAllocator.html" target="main">specialization_MultiPoolAllocator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_MumsIterator.html" target="main">MumsIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_MumsIterator.html" target="main">specialization_MumsIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="tag" data-pimped="true">
+              <span data-lang-entity="tag"><a href="page_LanguageEntities.html#tag">Tag</a><span>Tag</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="tag" data-pimped="true">
+                    <a href="page_LanguageEntities.html#tag">Tag</a>
+                    <a href="tag_Murphy10.html" target="main">Murphy10</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="tag_Murphy10.html" target="main">tag_Murphy10.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_MutableBidirectionalIteratorConcept.html" target="main">MutableBidirectionalIteratorConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_MutableBidirectionalIteratorConcept.html" target="main">concept_MutableBidirectionalIteratorConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_MutableForwardIteratorConcept.html" target="main">MutableForwardIteratorConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_MutableForwardIteratorConcept.html" target="main">concept_MutableForwardIteratorConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_MutableRandomAccessIteratorConcept.html" target="main">MutableRandomAccessIteratorConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_MutableRandomAccessIteratorConcept.html" target="main">concept_MutableRandomAccessIteratorConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_MutableRootedIteratorConcept.html" target="main">MutableRootedIteratorConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_MutableRootedIteratorConcept.html" target="main">concept_MutableRootedIteratorConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_MutableRootedRandomAccessIteratorConcept.html" target="main">MutableRootedRandomAccessIteratorConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_MutableRootedRandomAccessIteratorConcept.html" target="main">concept_MutableRootedRandomAccessIteratorConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_MyersPattern.html" target="main">MyersPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_MyersPattern.html" target="main">specialization_MyersPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_MyersUkkonen.html" target="main">MyersUkkonen</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_MyersUkkonen.html" target="main">global_typedef_MyersUkkonen.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_MyersUkkonenBanded.html" target="main">MyersUkkonenBanded</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_MyersUkkonenBanded.html" target="main">global_typedef_MyersUkkonenBanded.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_MyersUkkonenGlobal.html" target="main">MyersUkkonenGlobal</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_MyersUkkonenGlobal.html" target="main">global_typedef_MyersUkkonenGlobal.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_MyersUkkonenGlobalBanded.html" target="main">MyersUkkonenGlobalBanded</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_MyersUkkonenGlobalBanded.html" target="main">global_typedef_MyersUkkonenGlobalBanded.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_N2AFScore.html" target="main">N2AFScore</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_N2AFScore.html" target="main">specialization_N2AFScore.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Namer.html" target="main">Namer</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Namer.html" target="main">specialization_Namer.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_NameStoreCache.html" target="main">NameStoreCache</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_NameStoreCache.html" target="main">class_NameStoreCache.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_njTree.html" target="main">njTree</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_njTree.html" target="main">global_function_njTree.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_NonHierarchicalPexPattern.html" target="main">NonHierarchicalPexPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_NonHierarchicalPexPattern.html" target="main">specialization_NonHierarchicalPexPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="tag" data-pimped="true">
+              <span data-lang-entity="tag"><a href="page_LanguageEntities.html#tag">Tag</a><span>Tag</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="tag" data-pimped="true">
+                    <a href="page_LanguageEntities.html#tag">Tag</a>
+                    <a href="tag_Nothing.html" target="main">Nothing</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="tag_Nothing.html" target="main">tag_Nothing.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_NumberConcept.html" target="main">NumberConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_NumberConcept.html" target="main">concept_NumberConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_OneGappedShape.html" target="main">OneGappedShape</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_OneGappedShape.html" target="main">specialization_OneGappedShape.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_OpenAddressingQGramIndex.html" target="main">OpenAddressingQGramIndex</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_OpenAddressingQGramIndex.html" target="main">specialization_OpenAddressingQGramIndex.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_OpenAdressingTags.html" target="main">OpenAdressingTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_OpenAdressingTags.html" target="main">group_OpenAdressingTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_OracleBfamPattern.html" target="main">OracleBfamPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_OracleBfamPattern.html" target="main">specialization_OracleBfamPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_OracleMultiBfamPattern.html" target="main">OracleMultiBfamPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_OracleMultiBfamPattern.html" target="main">specialization_OracleMultiBfamPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_OrderedAlphabetConcept.html" target="main">OrderedAlphabetConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_OrderedAlphabetConcept.html" target="main">concept_OrderedAlphabetConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_orderOccurrences.html" target="main">orderOccurrences</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_orderOccurrences.html" target="main">global_function_orderOccurrences.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_OutEdgeIterator.html" target="main">OutEdgeIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_OutEdgeIterator.html" target="main">specialization_OutEdgeIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_OutputIteratorConcept.html" target="main">OutputIteratorConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_OutputIteratorConcept.html" target="main">concept_OutputIteratorConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_OutputStreamConcept.html" target="main">OutputStreamConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_OutputStreamConcept.html" target="main">concept_OutputStreamConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_OutputStreamIterator.html" target="main">OutputStreamIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_OutputStreamIterator.html" target="main">specialization_OutputStreamIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_OverflowStrategyTags.html" target="main">OverflowStrategyTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_OverflowStrategyTags.html" target="main">group_OverflowStrategyTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_OwnerStringSet.html" target="main">OwnerStringSet</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_OwnerStringSet.html" target="main">specialization_OwnerStringSet.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_PackedPair.html" target="main">PackedPair</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_PackedPair.html" target="main">specialization_PackedPair.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_PackedString.html" target="main">PackedString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_PackedString.html" target="main">specialization_PackedString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_PackedTriple.html" target="main">PackedTriple</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_PackedTriple.html" target="main">specialization_PackedTriple.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Pair.html" target="main">Pair</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Pair.html" target="main">class_Pair.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_PairwiseLocalAlignmentAlgorithms.html" target="main">PairwiseLocalAlignmentAlgorithms</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_PairwiseLocalAlignmentAlgorithms.html" target="main">group_PairwiseLocalAlignmentAlgorithms.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Pam120.html" target="main">Pam120</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Pam120.html" target="main">global_typedef_Pam120.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Pam200.html" target="main">Pam200</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Pam200.html" target="main">global_typedef_Pam200.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Pam250.html" target="main">Pam250</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Pam250.html" target="main">global_typedef_Pam250.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Pam40.html" target="main">Pam40</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Pam40.html" target="main">global_typedef_Pam40.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_ParallelismTags.html" target="main">ParallelismTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_ParallelismTags.html" target="main">group_ParallelismTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ParseError.html" target="main">ParseError</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ParseError.html" target="main">specialization_ParseError.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_partialSum.html" target="main">partialSum</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_partialSum.html" target="main">global_function_partialSum.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Pattern.html" target="main">Pattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Pattern.html" target="main">class_Pattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Peptide.html" target="main">Peptide</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Peptide.html" target="main">global_typedef_Peptide.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_PeptideIterator.html" target="main">PeptideIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_PeptideIterator.html" target="main">global_typedef_PeptideIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_PexPattern.html" target="main">PexPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_PexPattern.html" target="main">specialization_PexPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_PigeonholeFinder.html" target="main">PigeonholeFinder</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_PigeonholeFinder.html" target="main">specialization_PigeonholeFinder.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_PigeonholeParameters.html" target="main">PigeonholeParameters</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_PigeonholeParameters.html" target="main">class_PigeonholeParameters.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_PigeonholePattern.html" target="main">PigeonholePattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_PigeonholePattern.html" target="main">specialization_PigeonholePattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Pipe.html" target="main">Pipe</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Pipe.html" target="main">class_Pipe.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_PizzaChiliIndex.html" target="main">PizzaChiliIndex</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_PizzaChiliIndex.html" target="main">specialization_PizzaChiliIndex.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_PizzaChiliIndexFibres.html" target="main">PizzaChiliIndexFibres</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_PizzaChiliIndexFibres.html" target="main">group_PizzaChiliIndexFibres.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_PizzaChiliIndexTags.html" target="main">PizzaChiliIndexTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_PizzaChiliIndexTags.html" target="main">group_PizzaChiliIndexTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_PizzaChiliString.html" target="main">PizzaChiliString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_PizzaChiliString.html" target="main">specialization_PizzaChiliString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="macro" data-pimped="true">
+              <span data-lang-entity="macro"><a href="page_LanguageEntities.html#macro">#define</a><span>#define</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="macro" data-pimped="true">
+                    <a href="page_LanguageEntities.html#macro">#define</a>
+                    <a href="macro_PLATFORM_95GCC.html" target="main">PLATFORM_GCC</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="macro_PLATFORM_95GCC.html" target="main">macro_PLATFORM_95GCC.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_PointAndCargo.html" target="main">PointAndCargo</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_PointAndCargo.html" target="main">class_PointAndCargo.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Pool.html" target="main">Pool</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Pool.html" target="main">class_Pool.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_PoolConfig.html" target="main">PoolConfig</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_PoolConfig.html" target="main">specialization_PoolConfig.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_PoolConfigSize.html" target="main">PoolConfigSize</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_PoolConfigSize.html" target="main">specialization_PoolConfigSize.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_PoolSpec.html" target="main">PoolSpec</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_PoolSpec.html" target="main">specialization_PoolSpec.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_popCount.html" target="main">popCount</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_popCount.html" target="main">global_function_popCount.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_Position.html" target="main">Position</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_Position.html" target="main">global_metafunction_Position.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_PositionCalculation.html" target="main">PositionCalculation</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_PositionCalculation.html" target="main">group_PositionCalculation.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_PositionIterator.html" target="main">PositionIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_PositionIterator.html" target="main">specialization_PositionIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_PrefixOrderTags.html" target="main">PrefixOrderTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_PrefixOrderTags.html" target="main">group_PrefixOrderTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_PrefixSegment.html" target="main">PrefixSegment</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_PrefixSegment.html" target="main">specialization_PrefixSegment.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_primsAlgorithm.html" target="main">primsAlgorithm</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_primsAlgorithm.html" target="main">global_function_primsAlgorithm.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_printDebugLevel.html" target="main">printDebugLevel</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_printDebugLevel.html" target="main">global_function_printDebugLevel.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_PriorityHeap.html" target="main">PriorityHeap</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_PriorityHeap.html" target="main">specialization_PriorityHeap.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_PriorityType.html" target="main">PriorityType</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_PriorityType.html" target="main">class_PriorityType.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ProfileChar.html" target="main">ProfileChar</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ProfileChar.html" target="main">class_ProfileChar.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ProfileSeqFracScore.html" target="main">ProfileSeqFracScore</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ProfileSeqFracScore.html" target="main">specialization_ProfileSeqFracScore.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ProfileSeqScore.html" target="main">ProfileSeqScore</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ProfileSeqScore.html" target="main">specialization_ProfileSeqScore.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_progressiveAlignment.html" target="main">progressiveAlignment</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_progressiveAlignment.html" target="main">global_function_progressiveAlignment.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_PropertyMapConcept.html" target="main">PropertyMapConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_PropertyMapConcept.html" target="main">concept_PropertyMapConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Proxy.html" target="main">Proxy</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Proxy.html" target="main">class_Proxy.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_QGramIndexFibres.html" target="main">QGramIndexFibres</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_QGramIndexFibres.html" target="main">group_QGramIndexFibres.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_RandomAccessContainerConcept.html" target="main">RandomAccessContainerConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_RandomAccessContainerConcept.html" target="main">concept_RandomAccessContainerConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_RandomAccessIteratorConcept.html" target="main">RandomAccessIteratorConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_RandomAccessIteratorConcept.html" target="main">concept_RandomAccessIteratorConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Range.html" target="main">Range</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Range.html" target="main">class_Range.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_RankDictionary.html" target="main">RankDictionary</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_RankDictionary.html" target="main">class_RankDictionary.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_RankDictionaryFibres.html" target="main">RankDictionaryFibres</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_RankDictionaryFibres.html" target="main">group_RankDictionaryFibres.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_RankSupportBitString.html" target="main">RankSupportBitString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_RankSupportBitString.html" target="main">class_RankSupportBitString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_RankSupportBitStringFibres.html" target="main">RankSupportBitStringFibres</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_RankSupportBitStringFibres.html" target="main">group_RankSupportBitStringFibres.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_readEmblHeader.html" target="main">readEmblHeader</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_readEmblHeader.html" target="main">global_function_readEmblHeader.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ReadStoreElement.html" target="main">ReadStoreElement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ReadStoreElement.html" target="main">class_ReadStoreElement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_reAlign.html" target="main">reAlign</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_reAlign.html" target="main">global_function_reAlign.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_reAlignment.html" target="main">reAlignment</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_reAlignment.html" target="main">global_function_reAlignment.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ReducedAminoAcid.html" target="main">ReducedAminoAcid</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ReducedAminoAcid.html" target="main">specialization_ReducedAminoAcid.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_Reference.html" target="main">Reference</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_Reference.html" target="main">global_metafunction_Reference.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_RemoveConst.html" target="main">RemoveConst</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_RemoveConst.html" target="main">global_metafunction_RemoveConst.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_RemovePointer.html" target="main">RemovePointer</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_RemovePointer.html" target="main">global_metafunction_RemovePointer.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_RemoveReference.html" target="main">RemoveReference</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_RemoveReference.html" target="main">global_metafunction_RemoveReference.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_RemoveView.html" target="main">RemoveView</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_RemoveView.html" target="main">global_metafunction_RemoveView.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Repeat.html" target="main">Repeat</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Repeat.html" target="main">class_Repeat.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ResizableContainerView.html" target="main">ResizableContainerView</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ResizableContainerView.html" target="main">specialization_ResizableContainerView.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_reverse.html" target="main">reverse</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_reverse.html" target="main">global_function_reverse.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_reverseComplement.html" target="main">reverseComplement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_reverseComplement.html" target="main">global_function_reverseComplement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_ReversibleContainerConcept.html" target="main">ReversibleContainerConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_ReversibleContainerConcept.html" target="main">concept_ReversibleContainerConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_RevTextFibre.html" target="main">RevTextFibre</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_RevTextFibre.html" target="main">class_RevTextFibre.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_RightArrayBinaryTree.html" target="main">RightArrayBinaryTree</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_RightArrayBinaryTree.html" target="main">class_RightArrayBinaryTree.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_RightArrayBinaryTreeFibres.html" target="main">RightArrayBinaryTreeFibres</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_RightArrayBinaryTreeFibres.html" target="main">group_RightArrayBinaryTreeFibres.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_RightArrayBinaryTreeIterator.html" target="main">RightArrayBinaryTreeIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_RightArrayBinaryTreeIterator.html" target="main">specialization_RightArrayBinaryTreeIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Rna.html" target="main">Rna</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Rna.html" target="main">specialization_Rna.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Rna5.html" target="main">Rna5</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Rna5.html" target="main">specialization_Rna5.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Rna5Iterator.html" target="main">Rna5Iterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Rna5Iterator.html" target="main">global_typedef_Rna5Iterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Rna5String.html" target="main">Rna5String</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Rna5String.html" target="main">global_typedef_Rna5String.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Rna5StringComplement.html" target="main">Rna5StringComplement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Rna5StringComplement.html" target="main">global_typedef_Rna5StringComplement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Rna5StringReverse.html" target="main">Rna5StringReverse</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Rna5StringReverse.html" target="main">global_typedef_Rna5StringReverse.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Rna5StringReverseComplement.html" target="main">Rna5StringReverseComplement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Rna5StringReverseComplement.html" target="main">global_typedef_Rna5StringReverseComplement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_RnaIterator.html" target="main">RnaIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_RnaIterator.html" target="main">global_typedef_RnaIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_RnaString.html" target="main">RnaString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_RnaString.html" target="main">global_typedef_RnaString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_RnaStringComplement.html" target="main">RnaStringComplement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_RnaStringComplement.html" target="main">global_typedef_RnaStringComplement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_RnaStringReverse.html" target="main">RnaStringReverse</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_RnaStringReverse.html" target="main">global_typedef_RnaStringReverse.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_RnaStringReverseComplement.html" target="main">RnaStringReverseComplement</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_RnaStringReverseComplement.html" target="main">global_typedef_RnaStringReverseComplement.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_RoiFileIn.html" target="main">RoiFileIn</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_RoiFileIn.html" target="main">specialization_RoiFileIn.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_RoiFileOut.html" target="main">RoiFileOut</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_RoiFileOut.html" target="main">specialization_RoiFileOut.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_RootedIteratorConcept.html" target="main">RootedIteratorConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_RootedIteratorConcept.html" target="main">concept_RootedIteratorConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_RootedRandomAccessIteratorConcept.html" target="main">RootedRandomAccessIteratorConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_RootedRandomAccessIteratorConcept.html" target="main">concept_RootedRandomAccessIteratorConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_RuntimeError.html" target="main">RuntimeError</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_RuntimeError.html" target="main">class_RuntimeError.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Sampler.html" target="main">Sampler</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Sampler.html" target="main">specialization_Sampler.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_SAValue.html" target="main">SAValue</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_SAValue.html" target="main">global_metafunction_SAValue.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Score.html" target="main">Score</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Score.html" target="main">class_Score.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Seed.html" target="main">Seed</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Seed.html" target="main">class_Seed.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_SeedDiagonal.html" target="main">SeedDiagonal</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_SeedDiagonal.html" target="main">class_SeedDiagonal.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_SeedExtensionTags.html" target="main">SeedExtensionTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_SeedExtensionTags.html" target="main">group_SeedExtensionTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_SeedSet.html" target="main">SeedSet</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_SeedSet.html" target="main">class_SeedSet.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Segment.html" target="main">Segment</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Segment.html" target="main">class_Segment.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_SegmentableConcept.html" target="main">SegmentableConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_SegmentableConcept.html" target="main">concept_SegmentableConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_SegmentMatchGenerationTags.html" target="main">SegmentMatchGenerationTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_SegmentMatchGenerationTags.html" target="main">group_SegmentMatchGenerationTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_SelectableAminoAcidMatrix.html" target="main">SelectableAminoAcidMatrix</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_SelectableAminoAcidMatrix.html" target="main">global_typedef_SelectableAminoAcidMatrix.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_SentinelRankDictionary.html" target="main">SentinelRankDictionary</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_SentinelRankDictionary.html" target="main">class_SentinelRankDictionary.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_SentinelRankDictionaryFibres.html" target="main">SentinelRankDictionaryFibres</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_SentinelRankDictionaryFibres.html" target="main">group_SentinelRankDictionaryFibres.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="macro" data-pimped="true">
+              <span data-lang-entity="macro"><a href="page_LanguageEntities.html#macro">#define</a><span>#define</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="macro" data-pimped="true">
+                    <a href="page_LanguageEntities.html#macro">#define</a>
+                    <a href="macro_SEQAN_95ENABLE_95PARALLELISM.html" target="main">SEQAN_ENABLE_PARALLELISM</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="macro_SEQAN_95ENABLE_95PARALLELISM.html" target="main">macro_SEQAN_95ENABLE_95PARALLELISM.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="macro" data-pimped="true">
+              <span data-lang-entity="macro"><a href="page_LanguageEntities.html#macro">#define</a><span>#define</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="macro" data-pimped="true">
+                    <a href="page_LanguageEntities.html#macro">#define</a>
+                    <a href="macro_SEQAN_95HAS_95BZIP2.html" target="main">SEQAN_HAS_BZIP2</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="macro_SEQAN_95HAS_95BZIP2.html" target="main">macro_SEQAN_95HAS_95BZIP2.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="macro" data-pimped="true">
+              <span data-lang-entity="macro"><a href="page_LanguageEntities.html#macro">#define</a><span>#define</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="macro" data-pimped="true">
+                    <a href="page_LanguageEntities.html#macro">#define</a>
+                    <a href="macro_SEQAN_95HAS_95ZLIB.html" target="main">SEQAN_HAS_ZLIB</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="macro_SEQAN_95HAS_95ZLIB.html" target="main">macro_SEQAN_95HAS_95ZLIB.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="macro" data-pimped="true">
+              <span data-lang-entity="macro"><a href="page_LanguageEntities.html#macro">#define</a><span>#define</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="macro" data-pimped="true">
+                    <a href="page_LanguageEntities.html#macro">#define</a>
+                    <a href="macro_SEQAN_95IS_9532_95BIT.html" target="main">SEQAN_IS_32_BIT</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="macro_SEQAN_95IS_9532_95BIT.html" target="main">macro_SEQAN_95IS_9532_95BIT.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="macro" data-pimped="true">
+              <span data-lang-entity="macro"><a href="page_LanguageEntities.html#macro">#define</a><span>#define</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="macro" data-pimped="true">
+                    <a href="page_LanguageEntities.html#macro">#define</a>
+                    <a href="macro_SEQAN_95IS_9564_95BIT.html" target="main">SEQAN_IS_64_BIT</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="macro_SEQAN_95IS_9564_95BIT.html" target="main">macro_SEQAN_95IS_9564_95BIT.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="macro" data-pimped="true">
+              <span data-lang-entity="macro"><a href="page_LanguageEntities.html#macro">#define</a><span>#define</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="macro" data-pimped="true">
+                    <a href="page_LanguageEntities.html#macro">#define</a>
+                    <a href="macro_SEQAN_95OMP_95PRAGMA.html" target="main">SEQAN_OMP_PRAGMA</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="macro_SEQAN_95OMP_95PRAGMA.html" target="main">macro_SEQAN_95OMP_95PRAGMA.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="macro" data-pimped="true">
+              <span data-lang-entity="macro"><a href="page_LanguageEntities.html#macro">#define</a><span>#define</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="macro" data-pimped="true">
+                    <a href="page_LanguageEntities.html#macro">#define</a>
+                    <a href="macro_SEQAN_95PATH_95TO_95ROOT.html" target="main">SEQAN_PATH_TO_ROOT</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="macro_SEQAN_95PATH_95TO_95ROOT.html" target="main">macro_SEQAN_95PATH_95TO_95ROOT.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="macro" data-pimped="true">
+              <span data-lang-entity="macro"><a href="page_LanguageEntities.html#macro">#define</a><span>#define</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="macro" data-pimped="true">
+                    <a href="page_LanguageEntities.html#macro">#define</a>
+                    <a href="macro_SEQAN_95TEMP_95FILENAME.html" target="main">SEQAN_TEMP_FILENAME</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="macro_SEQAN_95TEMP_95FILENAME.html" target="main">macro_SEQAN_95TEMP_95FILENAME.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SeqFileIn.html" target="main">SeqFileIn</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SeqFileIn.html" target="main">specialization_SeqFileIn.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SeqFileOut.html" target="main">SeqFileOut</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SeqFileOut.html" target="main">specialization_SeqFileOut.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_SequenceOutputOptions.html" target="main">SequenceOutputOptions</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_SequenceOutputOptions.html" target="main">class_SequenceOutputOptions.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_setBit.html" target="main">setBit</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_setBit.html" target="main">global_function_setBit.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_setBitTo.html" target="main">setBitTo</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_setBitTo.html" target="main">global_function_setBitTo.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SetHorspoolPattern.html" target="main">SetHorspoolPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SetHorspoolPattern.html" target="main">specialization_SetHorspoolPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Shape.html" target="main">Shape</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Shape.html" target="main">class_Shape.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_shareResources.html" target="main">shareResources</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_shareResources.html" target="main">global_function_shareResources.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ShiftAndPattern.html" target="main">ShiftAndPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ShiftAndPattern.html" target="main">specialization_ShiftAndPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Shifter.html" target="main">Shifter</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Shifter.html" target="main">specialization_Shifter.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ShiftOrPattern.html" target="main">ShiftOrPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ShiftOrPattern.html" target="main">specialization_ShiftOrPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_shuffle.html" target="main">shuffle</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_shuffle.html" target="main">global_function_shuffle.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_SignedIntegerConcept.html" target="main">SignedIntegerConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_SignedIntegerConcept.html" target="main">concept_SignedIntegerConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SimpleAllocator.html" target="main">SimpleAllocator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SimpleAllocator.html" target="main">specialization_SimpleAllocator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SimpleHolder.html" target="main">SimpleHolder</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SimpleHolder.html" target="main">specialization_SimpleHolder.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SimpleIntervalsFileIn.html" target="main">SimpleIntervalsFileIn</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SimpleIntervalsFileIn.html" target="main">specialization_SimpleIntervalsFileIn.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SimpleIntervalsFileInOut.html" target="main">SimpleIntervalsFileInOut</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SimpleIntervalsFileInOut.html" target="main">specialization_SimpleIntervalsFileInOut.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_SimpleIntervalsIOContext.html" target="main">SimpleIntervalsIOContext</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_SimpleIntervalsIOContext.html" target="main">class_SimpleIntervalsIOContext.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SimplePattern.html" target="main">SimplePattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SimplePattern.html" target="main">specialization_SimplePattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SimpleScore.html" target="main">SimpleScore</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SimpleScore.html" target="main">specialization_SimpleScore.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_SimpleScoreTypedef.html" target="main">SimpleScoreTypedef</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_SimpleScoreTypedef.html" target="main">global_typedef_SimpleScoreTypedef.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SimpleSeed.html" target="main">SimpleSeed</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SimpleSeed.html" target="main">specialization_SimpleSeed.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SimpleShape.html" target="main">SimpleShape</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SimpleShape.html" target="main">specialization_SimpleShape.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_SimpleType.html" target="main">SimpleType</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_SimpleType.html" target="main">class_SimpleType.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SinglePoolAllocator.html" target="main">SinglePoolAllocator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SinglePoolAllocator.html" target="main">specialization_SinglePoolAllocator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_Size.html" target="main">Size</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_Size.html" target="main">global_metafunction_Size.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Skiplist.html" target="main">Skiplist</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Skiplist.html" target="main">specialization_Skiplist.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_sortAlignedReads.html" target="main">sortAlignedReads</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_sortAlignedReads.html" target="main">global_function_sortAlignedReads.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_SortAlignedReadTags.html" target="main">SortAlignedReadTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_SortAlignedReadTags.html" target="main">group_SortAlignedReadTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SorterConfig.html" target="main">SorterConfig</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SorterConfig.html" target="main">specialization_SorterConfig.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SorterConfigSize.html" target="main">SorterConfigSize</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SorterConfigSize.html" target="main">specialization_SorterConfigSize.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SorterSpec.html" target="main">SorterSpec</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SorterSpec.html" target="main">specialization_SorterSpec.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Source.html" target="main">Source</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Source.html" target="main">specialization_Source.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_SparseString.html" target="main">SparseString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_SparseString.html" target="main">class_SparseString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_SparseStringFibres.html" target="main">SparseStringFibres</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_SparseStringFibres.html" target="main">group_SparseStringFibres.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_Spec.html" target="main">Spec</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_Spec.html" target="main">global_metafunction_Spec.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_splitAlignment.html" target="main">splitAlignment</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_splitAlignment.html" target="main">global_function_splitAlignment.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_splitGenBankHeader.html" target="main">splitGenBankHeader</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_splitGenBankHeader.html" target="main">global_function_splitGenBankHeader.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Splitter.html" target="main">Splitter</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Splitter.html" target="main">class_Splitter.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_StandardIntegers.html" target="main">StandardIntegers</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_StandardIntegers.html" target="main">group_StandardIntegers.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_startsWith.html" target="main">startsWith</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_startsWith.html" target="main">global_function_startsWith.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_StdAdaptorIterator.html" target="main">StdAdaptorIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_StdAdaptorIterator.html" target="main">specialization_StdAdaptorIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_StoreIntervalsIntervalTreeNode.html" target="main">StoreIntervalsIntervalTreeNode</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_StoreIntervalsIntervalTreeNode.html" target="main">specialization_StoreIntervalsIntervalTreeNode.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_StorePointsOnlyIntervalTreeNode.html" target="main">StorePointsOnlyIntervalTreeNode</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_StorePointsOnlyIntervalTreeNode.html" target="main">specialization_StorePointsOnlyIntervalTreeNode.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_StreamBuffer.html" target="main">StreamBuffer</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_StreamBuffer.html" target="main">class_StreamBuffer.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_StreamConcept.html" target="main">StreamConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_StreamConcept.html" target="main">concept_StreamConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_StreamFormats.html" target="main">StreamFormats</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_StreamFormats.html" target="main">group_StreamFormats.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_StreamIterator.html" target="main">StreamIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_StreamIterator.html" target="main">specialization_StreamIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_String.html" target="main">String</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_String.html" target="main">class_String.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_StringConcept.html" target="main">StringConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_StringConcept.html" target="main">concept_StringConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_StringEnumerator.html" target="main">StringEnumerator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_StringEnumerator.html" target="main">class_StringEnumerator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_StringIndexConcept.html" target="main">StringIndexConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_StringIndexConcept.html" target="main">concept_StringIndexConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_StringSet.html" target="main">StringSet</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_StringSet.html" target="main">class_StringSet.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_stringToStringSet.html" target="main">stringToStringSet</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_stringToStringSet.html" target="main">global_function_stringToStringSet.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_StringTreeConcept.html" target="main">StringTreeConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_StringTreeConcept.html" target="main">concept_StringTreeConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_StringTrieConcept.html" target="main">StringTrieConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_StringTrieConcept.html" target="main">concept_StringTrieConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_stronglyConnectedComponents.html" target="main">stronglyConnectedComponents</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_stronglyConnectedComponents.html" target="main">global_function_stronglyConnectedComponents.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SuffixSegment.html" target="main">SuffixSegment</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SuffixSegment.html" target="main">specialization_SuffixSegment.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_sum.html" target="main">sum</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_sum.html" target="main">global_function_sum.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_sumOfPairsScore.html" target="main">sumOfPairsScore</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_sumOfPairsScore.html" target="main">global_function_sumOfPairsScore.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SuperMaxRepeatsFastIterator.html" target="main">SuperMaxRepeatsFastIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SuperMaxRepeatsFastIterator.html" target="main">specialization_SuperMaxRepeatsFastIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SuperMaxRepeatsIterator.html" target="main">SuperMaxRepeatsIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SuperMaxRepeatsIterator.html" target="main">specialization_SuperMaxRepeatsIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SwiftFinder.html" target="main">SwiftFinder</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SwiftFinder.html" target="main">specialization_SwiftFinder.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SwiftLocalFinder.html" target="main">SwiftLocalFinder</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SwiftLocalFinder.html" target="main">specialization_SwiftLocalFinder.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SwiftLocalPattern.html" target="main">SwiftLocalPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SwiftLocalPattern.html" target="main">specialization_SwiftLocalPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_SwiftParameters.html" target="main">SwiftParameters</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_SwiftParameters.html" target="main">class_SwiftParameters.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SwiftPattern.html" target="main">SwiftPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SwiftPattern.html" target="main">specialization_SwiftPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SwiftSemiGlobalFinder.html" target="main">SwiftSemiGlobalFinder</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SwiftSemiGlobalFinder.html" target="main">specialization_SwiftSemiGlobalFinder.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SwiftSemiGlobalPattern.html" target="main">SwiftSemiGlobalPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SwiftSemiGlobalPattern.html" target="main">specialization_SwiftSemiGlobalPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_SyncFile.html" target="main">SyncFile</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_SyncFile.html" target="main">specialization_SyncFile.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_sysTime.html" target="main">sysTime</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_sysTime.html" target="main">global_function_sysTime.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_TabixIndex.html" target="main">TabixIndex</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_TabixIndex.html" target="main">class_TabixIndex.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Tag.html" target="main">Tag</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Tag.html" target="main">class_Tag.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_TagList.html" target="main">TagList</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_TagList.html" target="main">class_TagList.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_TagSelector.html" target="main">TagSelector</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_TagSelector.html" target="main">class_TagSelector.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_testAllOnes.html" target="main">testAllOnes</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_testAllOnes.html" target="main">global_function_testAllOnes.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_testAllZeros.html" target="main">testAllZeros</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_testAllZeros.html" target="main">global_function_testAllZeros.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_TestSystemMacros.html" target="main">TestSystemMacros</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_TestSystemMacros.html" target="main">group_TestSystemMacros.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_TextConcept.html" target="main">TextConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_TextConcept.html" target="main">concept_TextConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_TightDependentStringSet.html" target="main">TightDependentStringSet</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_TightDependentStringSet.html" target="main">specialization_TightDependentStringSet.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_toLower.html" target="main">toLower</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_toLower.html" target="main">global_function_toLower.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ToolDoc.html" target="main">ToolDoc</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ToolDoc.html" target="main">class_ToolDoc.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_TopDown.html" target="main">TopDown</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_TopDown.html" target="main">group_TopDown.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_TopDownHistoryIterator.html" target="main">TopDownHistoryIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_TopDownHistoryIterator.html" target="main">specialization_TopDownHistoryIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_TopDownIterator.html" target="main">TopDownIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_TopDownIterator.html" target="main">specialization_TopDownIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_topologicalSort.html" target="main">topologicalSort</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_topologicalSort.html" target="main">global_function_topologicalSort.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_ToStdAllocator.html" target="main">ToStdAllocator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_ToStdAllocator.html" target="main">class_ToStdAllocator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_toUpper.html" target="main">toUpper</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_toUpper.html" target="main">global_function_toUpper.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_TraceBack.html" target="main">TraceBack</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_TraceBack.html" target="main">global_typedef_TraceBack.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_transitiveClosure.html" target="main">transitiveClosure</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_transitiveClosure.html" target="main">global_function_transitiveClosure.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_translate.html" target="main">translate</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_translate.html" target="main">global_function_translate.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="enum" data-pimped="true">
+              <span data-lang-entity="enum"><a href="page_LanguageEntities.html#enum">enum</a><span>enum</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="enum" data-pimped="true">
+                    <a href="page_LanguageEntities.html#enum">enum</a>
+                    <a href="enum_TranslationFrames.html" target="main">TranslationFrames</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="enum_TranslationFrames.html" target="main">enum_TranslationFrames.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Tree.html" target="main">Tree</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Tree.html" target="main">specialization_Tree.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_TrieBfamPattern.html" target="main">TrieBfamPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_TrieBfamPattern.html" target="main">specialization_TrieBfamPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Triple.html" target="main">Triple</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Triple.html" target="main">class_Triple.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_tripletLibraryExtension.html" target="main">tripletLibraryExtension</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_tripletLibraryExtension.html" target="main">global_function_tripletLibraryExtension.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_TristateHolder.html" target="main">TristateHolder</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_TristateHolder.html" target="main">specialization_TristateHolder.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_Tuple.html" target="main">Tuple</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_Tuple.html" target="main">class_Tuple.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_Tupler.html" target="main">Tupler</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_Tupler.html" target="main">specialization_Tupler.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_TView.html" target="main">TView</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_TView.html" target="main">global_function_TView.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_TwoLevelRankDictionary.html" target="main">TwoLevelRankDictionary</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_TwoLevelRankDictionary.html" target="main">specialization_TwoLevelRankDictionary.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_UcscFileIn.html" target="main">UcscFileIn</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_UcscFileIn.html" target="main">specialization_UcscFileIn.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_UcscFileOut.html" target="main">UcscFileOut</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_UcscFileOut.html" target="main">specialization_UcscFileOut.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_UcscIOContext.html" target="main">UcscIOContext</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_UcscIOContext.html" target="main">class_UcscIOContext.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_UcscRecord.html" target="main">UcscRecord</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_UcscRecord.html" target="main">class_UcscRecord.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_UnbandedLocalAlignmentEnumerator.html" target="main">UnbandedLocalAlignmentEnumerator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_UnbandedLocalAlignmentEnumerator.html" target="main">specialization_UnbandedLocalAlignmentEnumerator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_UndirectedGraph.html" target="main">UndirectedGraph</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_UndirectedGraph.html" target="main">specialization_UndirectedGraph.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_UnexpectedEnd.html" target="main">UnexpectedEnd</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_UnexpectedEnd.html" target="main">specialization_UnexpectedEnd.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_UngappedShape.html" target="main">UngappedShape</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_UngappedShape.html" target="main">specialization_UngappedShape.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_UnicodeString.html" target="main">UnicodeString</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_UnicodeString.html" target="main">global_typedef_UnicodeString.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_UnionFind.html" target="main">UnionFind</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_UnionFind.html" target="main">class_UnionFind.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="concept" data-pimped="true">
+              <span data-lang-entity="concept"><a href="page_LanguageEntities.html#concept">Concept</a><span>Concept</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="concept" data-pimped="true">
+                    <a href="page_LanguageEntities.html#concept">Concept</a>
+                    <a href="concept_UnsignedIntegerConcept.html" target="main">UnsignedIntegerConcept</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="concept_UnsignedIntegerConcept.html" target="main">concept_UnsignedIntegerConcept.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_UpgmaConfiguratorTags.html" target="main">UpgmaConfiguratorTags</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_UpgmaConfiguratorTags.html" target="main">group_UpgmaConfiguratorTags.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_upgmaTree.html" target="main">upgmaTree</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_upgmaTree.html" target="main">global_function_upgmaTree.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_upperBoundAlignedReads.html" target="main">upperBoundAlignedReads</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_upperBoundAlignedReads.html" target="main">global_function_upperBoundAlignedReads.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_Value.html" target="main">Value</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_Value.html" target="main">global_metafunction_Value.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_valueConstruct.html" target="main">valueConstruct</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_valueConstruct.html" target="main">global_function_valueConstruct.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_valueDestruct.html" target="main">valueDestruct</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_valueDestruct.html" target="main">global_function_valueDestruct.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_variance.html" target="main">variance</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_variance.html" target="main">global_function_variance.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_VcfFileIn.html" target="main">VcfFileIn</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_VcfFileIn.html" target="main">specialization_VcfFileIn.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_VcfFileOut.html" target="main">VcfFileOut</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_VcfFileOut.html" target="main">specialization_VcfFileOut.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_VcfHeader.html" target="main">VcfHeader</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_VcfHeader.html" target="main">class_VcfHeader.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_VcfHeaderRecord.html" target="main">VcfHeaderRecord</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_VcfHeaderRecord.html" target="main">class_VcfHeaderRecord.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_VcfIOContext.html" target="main">VcfIOContext</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_VcfIOContext.html" target="main">class_VcfIOContext.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_VcfRecord.html" target="main">VcfRecord</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_VcfRecord.html" target="main">class_VcfRecord.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_VectorSet.html" target="main">VectorSet</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_VectorSet.html" target="main">specialization_VectorSet.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_VertexDescriptor.html" target="main">VertexDescriptor</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_VertexDescriptor.html" target="main">global_metafunction_VertexDescriptor.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_VertexIterator.html" target="main">VertexIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_VertexIterator.html" target="main">specialization_VertexIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_View.html" target="main">View</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_View.html" target="main">global_metafunction_View.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_VirtualStream.html" target="main">VirtualStream</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_VirtualStream.html" target="main">class_VirtualStream.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="class" data-pimped="true">
+              <span data-lang-entity="class"><a href="page_LanguageEntities.html#class">Class</a><span>Class</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="class" data-pimped="true">
+                    <a href="page_LanguageEntities.html#class">Class</a>
+                    <a href="class_VolatilePtr.html" target="main">VolatilePtr</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="class_VolatilePtr.html" target="main">class_VolatilePtr.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_VSTreeIterator.html" target="main">VSTreeIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_VSTreeIterator.html" target="main">specialization_VSTreeIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_typedef" data-pimped="true">
+              <span data-lang-entity="global_typedef"><a href="page_LanguageEntities.html#global_typedef">typedef</a><span>typedef</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_typedef" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_typedef">typedef</a>
+                    <a href="global_typedef_Vtml200.html" target="main">Vtml200</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_typedef_Vtml200.html" target="main">global_typedef_Vtml200.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_WaveletTree.html" target="main">WaveletTree</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_WaveletTree.html" target="main">specialization_WaveletTree.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_WaveletTreeFibres.html" target="main">WaveletTreeFibres</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_WaveletTreeFibres.html" target="main">group_WaveletTreeFibres.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_weaklyConnectedComponents.html" target="main">weaklyConnectedComponents</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_weaklyConnectedComponents.html" target="main">global_function_weaklyConnectedComponents.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_metafunction" data-pimped="true">
+              <span data-lang-entity="global_metafunction"><a href="page_LanguageEntities.html#global_metafunction">Fn<></a><span>Fn<></span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_metafunction" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_metafunction">Fn<></a>
+                    <a href="global_metafunction_WEIGHT.html" target="main">WEIGHT</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_metafunction_WEIGHT.html" target="main">global_metafunction_WEIGHT.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_WildShiftAndPattern.html" target="main">WildShiftAndPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_WildShiftAndPattern.html" target="main">specialization_WildShiftAndPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_WordGraph.html" target="main">WordGraph</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_WordGraph.html" target="main">specialization_WordGraph.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="group" data-pimped="true">
+              <span data-lang-entity="group"><a href="page_LanguageEntities.html#group">Group</a><span>Group</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="group" data-pimped="true">
+                    <a href="page_LanguageEntities.html#group">Group</a>
+                    <a href="group_WOTDIndexFibres.html" target="main">WOTDIndexFibres</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="group_WOTDIndexFibres.html" target="main">group_WOTDIndexFibres.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_WuManberPattern.html" target="main">WuManberPattern</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_WuManberPattern.html" target="main">specialization_WuManberPattern.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ZipContainerView.html" target="main">ZipContainerView</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ZipContainerView.html" target="main">specialization_ZipContainerView.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="specialization" data-pimped="true">
+              <span data-lang-entity="specialization"><a href="page_LanguageEntities.html#specialization">Spec</a><span>Spec</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="specialization" data-pimped="true">
+                    <a href="page_LanguageEntities.html#specialization">Spec</a>
+                    <a href="specialization_ZipIterator.html" target="main">ZipIterator</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="specialization_ZipIterator.html" target="main">specialization_ZipIterator.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+            
+            <li data-lang-entity-container="global_function" data-pimped="true">
+              <span data-lang-entity="global_function"><a href="page_LanguageEntities.html#global_function">fn()</a><span>fn()</span></span>
+              <ol class="nav">
+                <li class="result">
+                  <h2 data-lang-entity="global_function" data-pimped="true">
+                    <a href="page_LanguageEntities.html#global_function">fn()</a>
+                    <a href="global_function_zscore.html" target="main">zscore</a>
+                  </h2>
+                  <div>
+                    <div class="text"></div>
+                    <div class="location"><a href="global_function_zscore.html" target="main">global_function_zscore.html</a></div>
+                  </div>
+                </li>
+                
+              </ol>
+            </li>
+            
+            
+          </ol>
+        </div>
+    </div>
+
+    <div id="list_bottom" style="background:#dad9dc; vertical-align:middle; transparent:false; line-hieght:150px; width:100%; text-align:right; position:fixed; padding:10px; padding-right:20px; bottom:0px;">
+        <div id="list_bottom_left" style="text-align:left; float:left;"></div>
+        <div id="list_bottom_right" style="text-align:right; float:right"></div>
     </div>
-    <!-- version selection -->
-    {% if development %}
-    <script type="text/javascript" charset="utf-8" src="../../util/py_lib/seqan/dox/tpl/js/version.js"></script>
-    {% endif %}
-    {% if not development %}
+    <script type="text/javascript" charset="utf-8" src="js/module_tree.js"></script>
     <script type="text/javascript" charset="utf-8" src="js/version.js"></script>
-    {% endif %}
   </body>
 </html>
diff --git a/util/py_lib/seqan/dox/validation.py b/util/py_lib/seqan/dox/validation.py
index b4cd8f0..5666d3b 100644
--- a/util/py_lib/seqan/dox/validation.py
+++ b/util/py_lib/seqan/dox/validation.py
@@ -1,4 +1,4 @@
-#!/usr/env/bin python
+#!/usr/bin/env python2
 """Some validation for proc_doc.Proc*"""
 
 __author__ = 'Manuel Holtgrewe <manuel.holtgrewe at fu-berlin.de>'
diff --git a/util/py_lib/seqan/dox/write_html.py b/util/py_lib/seqan/dox/write_html.py
index 4481d47..387531d 100644
--- a/util/py_lib/seqan/dox/write_html.py
+++ b/util/py_lib/seqan/dox/write_html.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Writing for HTML pages."""
 
 import distutils.dir_util
@@ -340,13 +340,13 @@ class ImagePathUpdater(proc_doc.TextNodeVisitor):
 
 
 class HtmlWriter(object):
-    def __init__(self, doc, args, config, out_dir='html'):
+    def __init__(self, doc, args, config):
         self.doc = doc
         self.out_dirs = {}
         self.args = args
         self.config = config
         # Normalize path.
-        out_dir = os.path.abspath(out_dir)
+        out_dir = args.out_dir
         # Generate path names.
         self.out_dirs['root'] = out_dir
         self.out_dirs['css'] = os.path.join(out_dir, 'css')
@@ -503,8 +503,9 @@ class HtmlWriter(object):
     def generateSearchIndex(self, doc):
         """Generate the search index."""
         js = ['window.searchData = [']
+        js_module = ['window.searchDataModule = [']
         for entry in doc.top_level_entries.itervalues():
-            akas, subentries = '', ''
+            akas, subentries, headerfile = '', '', ''
             if hasattr(entry, 'akas'):
                 akas = ','.join(entry.akas)
             if hasattr(entry, 'subentries'):
@@ -514,13 +515,28 @@ class HtmlWriter(object):
                         sID = s.title
                         title = proc_doc.splitSecondLevelEntry(s.title)[1]
                         subentries.append({'type': s.kind, 'name': s.name, 'title': title, 'id': sID})
+            if hasattr(entry, 'headerfiles') and len(entry.headerfiles) > 0 :
+                headerfile = entry.headerfiles[0]
+                headerfile = headerfile[headerfile.find("/")+1:-3]
+
+            if entry in self.doc.doc_processor.topLevelEntry_filenames:
+                delimiter = "/include/seqan/"
+                srcfile = self.doc.doc_processor.topLevelEntry_filenames[entry]
+                srcfile = srcfile[srcfile.find(delimiter)+len(delimiter):]
+            else :
+                srcfile = ""
+
             js.append('  {title:%s,name:%s,text:%s,akas:%s,subentries:%s,loc:%s,langEntity:%s},' %
                       (repr(entry.title), repr(entry.name), repr(""), repr(akas), repr(subentries),
-                       repr(self.path_converter.convert(entry.name)[0]),
-                       repr(entry.kind)))
+                       repr(self.path_converter.convert(entry.name)[0]), repr(entry.kind)))
+            js_module.append('  {definedIn:%s,srcfile:%s},' % (repr(headerfile), repr(srcfile)))
         js.append('];')
+        js_module.append('];')
+
         with open(os.path.join(self.out_dirs['js'], 'search.data.js'), 'wb') as f:
             f.write('\n'.join(js))
+        with open(os.path.join(self.out_dirs['js'], 'search.data.module.js'), 'wb') as f:
+            f.write('\n'.join(js_module))
 
     def generateLinkData(self, doc):
         """Generate the Data for top level entry links."""
diff --git a/util/py_lib/seqan/fixgcov/__init__.py b/util/py_lib/seqan/fixgcov/__init__.py
index 95f8bd2..c9f5931 100755
--- a/util/py_lib/seqan/fixgcov/__init__.py
+++ b/util/py_lib/seqan/fixgcov/__init__.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 
 import sys
 
diff --git a/util/py_lib/seqan/fixgcov/app.py b/util/py_lib/seqan/fixgcov/app.py
index 8af0ac6..22a548c 100755
--- a/util/py_lib/seqan/fixgcov/app.py
+++ b/util/py_lib/seqan/fixgcov/app.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Small libclang based app to fix gcov output.
 
 Fix gcov output with templates.  This is done by first parsing in the .cpp files
diff --git a/util/py_lib/seqan/one_package.html b/util/py_lib/seqan/one_package.html
deleted file mode 100644
index 181a7ef..0000000
--- a/util/py_lib/seqan/one_package.html
+++ /dev/null
@@ -1,175 +0,0 @@
-<!--(macro packages_cell)-->
-<td>
-  <!--(if packages.archs['i686'].files)-->
-    32 bit:#!
-    <!--(for f in FORMATS)-->#!
-      <!--(if packages.archs['i686'].files.get(f))-->#!
-      <a href="/@!prefix!@/@!packages.archs['i686'].files[f]!@">@!f!@</a>#!
-      <!--(end)-->#!
-    <!--(end)-->#!
-  <!--(end)-->
-  <br />
-  <!--(if packages.archs['x86_64'].files)-->
-    64 bit:#!
-    <!--(for f in FORMATS)-->#!
-      <!--(if packages.archs['x86_64'].files.get(f))-->#!
-      <a href="/@!prefix!@/@!packages.archs['x86_64'].files[f]!@">@!f!@</a>#!
-      <!--(end)-->#!
-    <!--(end)-->#!
-  <!--(else)-->
-   
-  <!--(end)-->
-</td>
-<!--(end)-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-EN">
-    <head>
-        <title>@!software.name!@ | Packages | SeqAn</title>
-        <!-- Meta Tags --> 
-        <meta http-equiv="X-UA-Compatible" content="IE=9">
-        <!-- Enable IE9 Standards mode --> <!-- WordPress --> 
-        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
-        <meta http-equiv="content-script-type" content="text/javascript">
-        <meta name="keywords" content="">
-        <meta name="language" content="en">
-        <meta name="content-language" content="en">
-        <meta name="publisher" content="SeqAn">
-        <meta name="revisit-after" content="1 days">
-        <meta name="author" content="FU Berlin - http://www.fu-berlin.de">
-        <meta name="description" content=" - The C++ template library for sequence analysis.">
-        <!-- FU Berlin Layout --> 
-        <meta http-equiv="cache-control" content="no-cache">
-        <meta http-equiv="pragma" content="no-cache">
-        <meta name="robots" content="index, follow">
-        <meta name="geo.region" content="DE-BE">
-        <meta name="geo.placename" content="Berlin">
-        <!-- CSS --> 
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/style.css" media="" rel="stylesheet" type="text/css">
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/yaml_base.css" media="" rel="stylesheet" type="text/css">
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/nav_hlist.css" media="" rel="stylesheet" type="text/css">
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/nav_vlist.css" media="" rel="stylesheet" type="text/css">
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/basemod_fu_berlin.css" media="" rel="stylesheet" type="text/css">
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/content_fu.css" media="" rel="stylesheet" type="text/css">
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/yaml_print_base.css" media="" rel="stylesheet" type="text/css">
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/print.css" media="" rel="stylesheet" type="text/css">
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/yaml_forms.css" media="" rel="stylesheet" type="text/css">
-        <!--[if lte IE 7]> 
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/yaml_iehacks.css" media="" rel="stylesheet" type="text/css" />
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/patch.css" media="" rel="stylesheet" type="text/css" />
-        <![endif]--> <!-- Favicon, RSS Links --> 
-        <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="http://www.seqan.de/feed/">
-        <link rel="Shortcut Icon" type="image/x-icon" href="http://www.seqan.de/wp-content/uploads/2012/01/favicon.png">
-        <link rel="pingback" href="http://www.seqan.de/xmlrpc.php">
-        <link rel="stylesheet" id="wp_dlmp_styles-css" href="http://www.seqan.de/wp-content/plugins/download-monitor/page-addon/styles.css?ver=3.5.1" type="text/css" media="all">
-        <link rel="stylesheet" id="page-list-style-css" href="http://www.seqan.de/wp-content/plugins/page-list/css/page-list.css?ver=4.2" type="text/css" media="all">
-        <link rel="stylesheet" id="counterize_stylesheet-css" href="http://www.seqan.de/wp-content/plugins/counterize/counterize.css.php?ver=3.5.1" type="text/css" media="all">
-        <script type="text/javascript" src="http://www.seqan.de/wp-content/plugins/counterize/counterize.js.php?ver=3.5.1"></script> 
-        <link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.seqan.de/xmlrpc.php?rsd">
-        <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.seqan.de/wp-includes/wlwmanifest.xml">
-        <link rel="next" title="News" href="http://www.seqan.de/news/">
-        <meta name="generator" content="WordPress 3.5.1">
-        <link rel="canonical" href="http://www.seqan.de/">
-        <style type="text/css"> .download-info .download-button { background-image: url(http://www.seqan.de/wp-content/plugins/download-monitor/page-addon/downloadbutton.gif); } .download-info .more-button { background-image: url(http://www.seqan.de/wp-content/plugins/download-monitor/page-addon/morebutton.gif); } </style>
-        <link href="seqan.css" media="" rel="stylesheet" type="text/css">
-    </head>
-    <body>
-        <div class="page_margins gradient">
-            <div class="page">
-                <!-- Header --> 
-                <div id="header">
-                    <a accesskey="O" name="seitenanfang" id="seitenanfang"></a> <a href="http://www.seqan.de" accesskey="H"><img id="fu_logo" title="To the Homepage of SeqAn" src="http://www.seqan.de/wp-content/uploads/2012/02/seqan_logo_167x110.png" height="110"></a> 
-                    <h1 class="hideme">SeqAn</h1>
-                    <hr class="hideme">
-                    <div id="topnav">
-                        <a class="skip" title="skip link" href="#content">Go To Contents</a><span class="hideme">.</span> 
-                        <h2 class="hideme">Service-Navigation</h2>
-                        <ul>
-                            <li><a href="http://www.seqan.de" title="Homepage">Homepage</a></li>
-                            <li><a href="http://www.seqan.de/contact-us/" title="Contact">Contact</a></li>
-                            <li><a href="http://www.seqan.de/legal-notice/" title="Legal notice according to p 5 TMG">Legal Notice</a></li>
-                            <li><a href="http://www.seqan.de/sitemap/" title="Sitemap">Sitemap</a></li>
-                        </ul>
-                    </div>
-                    <!-- #topnav --> 
-                    <div id="services">
-                        <div id="search" class="search">
-                            <div id="search_inner">
-                                <form action="http://www.seqan.de" id="search_form" method="get"> <input class="search_input" id="search_input" locale="de" name="s" title="Enter Search Term" type="text" value=""> <input alt="Start Search" class="search_button" id="search_button" src="http://www.seqan.de/wp-content/themes/fub-theme/images/search_button.gif" title="Start Search" type="image"> </form>
-                            </div>
-                        </div>
-                        <!-- #search --> 
-                        <div id="icons"> <a href="#print" onclick="javascript:self.print();return false;" title="Diese Seite drucken"><img alt="Print (Icon)" id="icon_print" src="http://www.seqan.de/wp-content/themes/fub-theme/images/icon_print.gif" title="print"></a> <a href="http://www.seqan.de/feed/" target="_blank" title="Subscribe to RSS2 Feed"><img alt="RSS (Icon)" id="icon_rss" src="http://www.seqan.de/wp-content/themes/fub-theme/images/icon_rss.gif" title=""></a> </div>
-                        <!-- #icons --> 
-                    </div>
-                    <!-- #services --> 
-                </div>
-                <!-- #header --> <!-- Wrappers for Main Content Row --> 
-                <div id="main" class="page_raster_10_off">
-                    <div class="subcolumns margin_bottom">
-                        <!-- Left Bar --> 
-                        <div class="c20l">
-                            <!-- Navigational Menu Left --> 
-                            <div class="vlist"> </div>
-                            <!-- Left Sidebar --> 
-                        </div>
-                        <!-- Main Content --> 
-                        <div class="c60l" id="main_content">
-                            <div class="post subc subc_default_padding" id="post-2">
-                                <div class="breadcrumbs">
-                                    <p class="hideme">Breadcrumbs</p>
-                                    <ul>
-                                        <li class="first"><a href="http://www.seqan.de">SeqAn</a></li>
-                                        <li><a href="/">Packages</a></li>
-                                        <li class="active">@!software.name!@</li>
-                                    </ul>
-                                </div>
-                                <h1 class="main_headline" style="margin-top:0;">@!software.name!@</h1>
-<!-- custom -->
-      <table>
-        <tr>
-          <th>Version</th>
-          <th>Linux</th>
-          <th>Mac</th>
-          <th>Windows</th>
-        </tr>
-        <!--(for version in sorted(software.versions.values(), key=lambda x:x.version, reverse=True))-->
-          <tr>
-            <td>@!version.version!@</td>
-            @!packages_cell(prefix=software.name, packages=version.packages['Linux'])!@
-            @!packages_cell(prefix=software.name, packages=version.packages['Mac'])!@
-            @!packages_cell(prefix=software.name, packages=version.packages['Windows'])!@
-          </tr>
-        <!--(end)-->
-      </table>
-<!-- end: custom -->
-                                <div class="last_updated"><small class="dimmed"> Last Update @!utc_time!@</small></div>
-                            </div>
-                        </div>
-                    </div>
-                    <!-- #main_content --> <!-- Banner Row --> 
-                    <div id="banner" class="subc box_border_top padding_top padding_left padding_bottom">
-                        <div class="css_classhorizontal_banner">
-                            <div class="textwidget"><a href="http://www.fu-berlin.de"><img src="http://www.seqan.de/wp-content/uploads/2012/02/fu_logo.gif" http:="" www.seqan.de=""></a> </div>
-                        </div>
-                    </div>
-                </div>
-                <!-- id="main" --> <!-- Page Footer --> 
-                <div id="footer">
-                    <div class="subcolumns" id="bottomnav">
-                        <div class="subc padding_left padding_right">
-                            <a href="http://www.seqan.de" title="Home">SeqAn</a> 
-                            <ul>
-                                <li><a href="http://www.seqan.de" title="Homepage">Homepage</a></li>
-                                <li><a href="http://www.seqan.de/contact-us/" title="Contact">Contact</a></li>
-                                <li><a href="http://www.seqan.de/legal-notice/" title="Legal notice according to p 5 TMG">Legal Notice</a></li>
-                                <li><a href="http://www.seqan.de/sitemap/" title="Sitemap">Sitemap</a></li>
-                            </ul>
-                        </div>
-                    </div>
-                </div>
-                <!-- class="page" --> 
-            </div>
-            <!-- class="page_margins" --> 
-        </div>
-    </body>
-</html>
diff --git a/util/py_lib/seqan/paths.py b/util/py_lib/seqan/paths.py
index 6e33fe8..0bce2ef 100755
--- a/util/py_lib/seqan/paths.py
+++ b/util/py_lib/seqan/paths.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """SeqAn path utilities.
 
 Code to get paths within the SeqAn repository; Useful for setting defaults in
diff --git a/util/py_lib/seqan/pyclangcheck/__init__.py b/util/py_lib/seqan/pyclangcheck/__init__.py
index 95f8bd2..c9f5931 100755
--- a/util/py_lib/seqan/pyclangcheck/__init__.py
+++ b/util/py_lib/seqan/pyclangcheck/__init__.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 
 import sys
 
diff --git a/util/py_lib/seqan/pyclangcheck/app.py b/util/py_lib/seqan/pyclangcheck/app.py
index 824269a..aa6d0cf 100755
--- a/util/py_lib/seqan/pyclangcheck/app.py
+++ b/util/py_lib/seqan/pyclangcheck/app.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """pyclangcheck driver code
 
 This code is the driver code for the pyclangcheck tool.
diff --git a/util/py_lib/seqan/pyclangcheck/rules.py b/util/py_lib/seqan/pyclangcheck/rules.py
index 0deb7dc..15c8d33 100755
--- a/util/py_lib/seqan/pyclangcheck/rules.py
+++ b/util/py_lib/seqan/pyclangcheck/rules.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 
 __author__ = 'Manuel Holtgrewe <manuel.holtgrewe at fu-berlin.de>'
 
diff --git a/util/py_lib/seqan/pyclangcheck/simple_checks.py b/util/py_lib/seqan/pyclangcheck/simple_checks.py
index 0d0c0b0..b39a4aa 100755
--- a/util/py_lib/seqan/pyclangcheck/simple_checks.py
+++ b/util/py_lib/seqan/pyclangcheck/simple_checks.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Simple source code checks, e.g. trailing whitespace."""
 
 from __future__ import with_statement
diff --git a/util/py_lib/seqan/pyclangcheck/suppressions.py b/util/py_lib/seqan/pyclangcheck/suppressions.py
index 4265cc3..18ff536 100755
--- a/util/py_lib/seqan/pyclangcheck/suppressions.py
+++ b/util/py_lib/seqan/pyclangcheck/suppressions.py
@@ -1 +1 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
diff --git a/util/py_lib/seqan/pyclangcheck/violations.py b/util/py_lib/seqan/pyclangcheck/violations.py
index bd1c42f..f91b8fb 100755
--- a/util/py_lib/seqan/pyclangcheck/violations.py
+++ b/util/py_lib/seqan/pyclangcheck/violations.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Code related to violations and suppressions."""
 
 from __future__ import with_statement
diff --git a/util/py_lib/seqan/release_page.html b/util/py_lib/seqan/release_page.html
deleted file mode 100644
index dc009f5..0000000
--- a/util/py_lib/seqan/release_page.html
+++ /dev/null
@@ -1,215 +0,0 @@
-<!--(macro packages_cell)-->
-<td>
-  <!--(if packages.archs['i686'].files)-->
-    32 bit:#!
-    <!--(for f in FORMATS)-->#!
-      <!--(if packages.archs['i686'].files.get(f))-->#!
-      <a href="/@!prefix!@/@!packages.archs['i686'].files[f]!@">@!f!@</a>#!
-      <!--(end)-->#!
-    <!--(end)-->#!
-  <!--(end)-->
-  <br />
-  <!--(if packages.archs['x86_64'].files)-->
-    64 bit:#!
-    <!--(for f in FORMATS)-->#!
-      <!--(if packages.archs['x86_64'].files.get(f))-->#!
-      <a href="/@!prefix!@/@!packages.archs['x86_64'].files[f]!@">@!f!@</a>#!
-      <!--(end)-->#!
-    <!--(end)-->#!
-  <!--(else)-->
-   
-  <!--(end)-->
-</td>
-<!--(end)-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-EN">
-    <head>
-        <title>Packages | SeqAn</title>
-        <!-- Meta Tags --> 
-        <meta http-equiv="X-UA-Compatible" content="IE=9">
-        <!-- Enable IE9 Standards mode --> <!-- WordPress --> 
-        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
-        <meta http-equiv="content-script-type" content="text/javascript">
-        <meta name="keywords" content="">
-        <meta name="language" content="en">
-        <meta name="content-language" content="en">
-        <meta name="publisher" content="SeqAn">
-        <meta name="revisit-after" content="1 days">
-        <meta name="author" content="FU Berlin - http://www.fu-berlin.de">
-        <meta name="description" content=" - The C++ template library for sequence analysis.">
-        <!-- FU Berlin Layout --> 
-        <meta http-equiv="cache-control" content="no-cache">
-        <meta http-equiv="pragma" content="no-cache">
-        <meta name="robots" content="index, follow">
-        <meta name="geo.region" content="DE-BE">
-        <meta name="geo.placename" content="Berlin">
-        <!-- CSS --> 
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/style.css" media="" rel="stylesheet" type="text/css">
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/yaml_base.css" media="" rel="stylesheet" type="text/css">
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/nav_hlist.css" media="" rel="stylesheet" type="text/css">
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/nav_vlist.css" media="" rel="stylesheet" type="text/css">
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/basemod_fu_berlin.css" media="" rel="stylesheet" type="text/css">
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/content_fu.css" media="" rel="stylesheet" type="text/css">
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/yaml_print_base.css" media="" rel="stylesheet" type="text/css">
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/print.css" media="" rel="stylesheet" type="text/css">
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/yaml_forms.css" media="" rel="stylesheet" type="text/css">
-        <!--[if lte IE 7]> 
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/yaml_iehacks.css" media="" rel="stylesheet" type="text/css" />
-        <link href="http://www.seqan.de/wp-content/themes/fub-theme/styles/patch.css" media="" rel="stylesheet" type="text/css" />
-        <![endif]--> <!-- Favicon, RSS Links --> 
-        <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="http://www.seqan.de/feed/">
-        <link rel="Shortcut Icon" type="image/x-icon" href="http://www.seqan.de/wp-content/uploads/2012/01/favicon.png">
-        <link rel="pingback" href="http://www.seqan.de/xmlrpc.php">
-        <link rel="stylesheet" id="wp_dlmp_styles-css" href="http://www.seqan.de/wp-content/plugins/download-monitor/page-addon/styles.css?ver=3.5.1" type="text/css" media="all">
-        <link rel="stylesheet" id="page-list-style-css" href="http://www.seqan.de/wp-content/plugins/page-list/css/page-list.css?ver=4.2" type="text/css" media="all">
-        <link rel="stylesheet" id="counterize_stylesheet-css" href="http://www.seqan.de/wp-content/plugins/counterize/counterize.css.php?ver=3.5.1" type="text/css" media="all">
-        <script type="text/javascript" src="http://www.seqan.de/wp-content/plugins/counterize/counterize.js.php?ver=3.5.1"></script> 
-        <link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.seqan.de/xmlrpc.php?rsd">
-        <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.seqan.de/wp-includes/wlwmanifest.xml">
-        <link rel="next" title="News" href="http://www.seqan.de/news/">
-        <meta name="generator" content="WordPress 3.5.1">
-        <link rel="canonical" href="http://www.seqan.de/">
-        <style type="text/css"> .download-info .download-button { background-image: url(http://www.seqan.de/wp-content/plugins/download-monitor/page-addon/downloadbutton.gif); } .download-info .more-button { background-image: url(http://www.seqan.de/wp-content/plugins/download-monitor/page-addon/morebutton.gif); } </style>
-        <link href="seqan.css" media="" rel="stylesheet" type="text/css">
-    </head>
-    <body>
-        <div class="page_margins gradient">
-            <div class="page">
-                <!-- Header --> 
-                <div id="header">
-                    <a accesskey="O" name="seitenanfang" id="seitenanfang"></a> <a href="http://www.seqan.de" accesskey="H"><img id="fu_logo" title="To the Homepage of SeqAn" src="http://www.seqan.de/wp-content/uploads/2012/02/seqan_logo_167x110.png" height="110"></a> 
-                    <h1 class="hideme">SeqAn</h1>
-                    <hr class="hideme">
-                    <div id="topnav">
-                        <a class="skip" title="skip link" href="#content">Go To Contents</a><span class="hideme">.</span> 
-                        <h2 class="hideme">Service-Navigation</h2>
-                        <ul>
-                            <li><a href="http://www.seqan.de" title="Homepage">Homepage</a></li>
-                            <li><a href="http://www.seqan.de/contact-us/" title="Contact">Contact</a></li>
-                            <li><a href="http://www.seqan.de/legal-notice/" title="Legal notice according to p 5 TMG">Legal Notice</a></li>
-                            <li><a href="http://www.seqan.de/sitemap/" title="Sitemap">Sitemap</a></li>
-                        </ul>
-                    </div>
-                    <!-- #topnav --> 
-                    <div id="services">
-                        <div id="search" class="search">
-                            <div id="search_inner">
-                                <form action="http://www.seqan.de" id="search_form" method="get"> <input class="search_input" id="search_input" locale="de" name="s" title="Enter Search Term" type="text" value=""> <input alt="Start Search" class="search_button" id="search_button" src="http://www.seqan.de/wp-content/themes/fub-theme/images/search_button.gif" title="Start Search" type="image"> </form>
-                            </div>
-                        </div>
-                        <!-- #search --> 
-                        <div id="icons"> <a href="#print" onclick="javascript:self.print();return false;" title="Diese Seite drucken"><img alt="Print (Icon)" id="icon_print" src="http://www.seqan.de/wp-content/themes/fub-theme/images/icon_print.gif" title="print"></a> <a href="http://www.seqan.de/feed/" target="_blank" title="Subscribe to RSS2 Feed"><img alt="RSS (Icon)" id="icon_rss" src="http://www.seqan.de/wp-content/themes/fub-theme/images/icon_rss.gif" title=""></a> </div>
-                        <!-- #icons --> 
-                    </div>
-                    <!-- #services --> 
-                </div>
-                <!-- #header --> <!-- Wrappers for Main Content Row --> 
-                <div id="main" class="page_raster_10_off">
-                    <div class="subcolumns margin_bottom">
-                        <!-- Left Bar --> 
-                        <div class="c20l">
-                            <!-- Navigational Menu Left --> 
-                            <div class="vlist"> </div>
-                            <!-- Left Sidebar --> 
-                        </div>
-                        <!-- Main Content --> 
-                        <div class="c60l" id="main_content">
-                            <div class="post subc subc_default_padding" id="post-2">
-                                <div class="breadcrumbs">
-                                    <p class="hideme">Breadcrumbs</p>
-                                    <ul>
-                                        <li class="first"><a href="http://www.seqan.de">SeqAn</a></li>
-                                        <li class="active">Packages</li>
-                                    </ul>
-                                </div>
-                                <h1 class="main_headline" style="margin-top:0;">Packages</h1>
-<!-- custom -->
-    <h2>SeqAn Library</h2>
-    <p>
-      The following packages contain SeqAn library headers and their HTML API documentation.
-    </p>
-
-    <table>
-      <tr>
-        <th>Version</th>
-        <th>Platform Independent Download</th>
-      </tr>
-      <!--(for version in sorted(seqan_library.versions.values(), key=lambda x:x.version, reverse=True))-->
-      <tr>
-        <td id="@!version.version!@">@!version.version!@</td>
-        <td>
-        <!--(for f in FORMATS)-->#!
-          <!--(if version.packages['src'].archs['src'].files.get(f))-->#!
-           <a href="seqan-library/@!version.packages['src'].archs['src'].files[f]!@">@!f!@</a>
-          <!--(end)-->
-        <!--(end)-->
-        </td>
-      </tr>
-      <!--(end)-->
-    </table>
-
-    <h2>SeqAn Sources</h2>
-    <p>
-      The following packages contain the whole SeqAn repository.
-    </p>
-
-    <table>
-      <tr>
-        <th>Version</th>
-        <th>Platform Independent Download</th>
-      </tr>
-      <!--(for version in sorted(seqan_src.versions.values(), key=lambda x:x.version, reverse=True))-->
-      <tr>
-        <td id="@!version.version!@">@!version.version!@</td>
-        <td>
-        <!--(for f in FORMATS)-->#!
-          <!--(if version.packages['src'].archs['src'].files.get(f))-->#!
-           <a href="seqan-src/@!version.packages['src'].archs['src'].files[f]!@">@!f!@</a>
-          <!--(end)-->
-        <!--(end)-->
-        </td>
-      </tr>
-      <!--(end)-->
-    </table>
-
-    <h2>Individual Apps</h2>
-    <p>
-      The following packages contain individual SeqAn apps.
-    </p>
-
-    <ul>
-    <!--(for software in sorted(softwares.values(), key=lambda x:x.name))-->
-      <li><a href="@!software.name!@">@!software.name!@</a></li>
-    <!--(end)-->
-<!-- end: custom -->
-                                <div class="last_updated"><small class="dimmed">Last Update @!utc_time!@</small></div>
-                            </div>
-                        </div>
-                    </div>
-                    <!-- #main_content --> <!-- Banner Row --> 
-                    <div id="banner" class="subc box_border_top padding_top padding_left padding_bottom">
-                        <div class="css_classhorizontal_banner">
-                            <div class="textwidget"><a href="http://www.fu-berlin.de"><img src="http://www.seqan.de/wp-content/uploads/2012/02/fu_logo.gif" http:="" www.seqan.de=""></a> </div>
-                        </div>
-                    </div>
-                </div>
-                <!-- id="main" --> <!-- Page Footer --> 
-                <div id="footer">
-                    <div class="subcolumns" id="bottomnav">
-                        <div class="subc padding_left padding_right">
-                            <a href="http://www.seqan.de" title="Home">SeqAn</a> 
-                            <ul>
-                                <li><a href="http://www.seqan.de" title="Homepage">Homepage</a></li>
-                                <li><a href="http://www.seqan.de/contact-us/" title="Contact">Contact</a></li>
-                                <li><a href="http://www.seqan.de/legal-notice/" title="Legal notice according to p 5 TMG">Legal Notice</a></li>
-                                <li><a href="http://www.seqan.de/sitemap/" title="Sitemap">Sitemap</a></li>
-                            </ul>
-                        </div>
-                    </div>
-                </div>
-                <!-- class="page" --> 
-            </div>
-            <!-- class="page_margins" --> 
-        </div>
-    </body>
-</html>
diff --git a/util/py_lib/seqan/release_page.py b/util/py_lib/seqan/release_page.py
deleted file mode 100644
index c069632..0000000
--- a/util/py_lib/seqan/release_page.py
+++ /dev/null
@@ -1,250 +0,0 @@
-#!/usr/bin/env python
-"""Build the SeqAn Releases Website."""
-
-import operator
-import optparse
-import os
-import os.path
-import re
-import sys
-import time
-import xml.sax.saxutils
-from distutils.version import StrictVersion
-
-import pyratemp
-
-# Patterns matching seqan srcs, apps and library.
-SRC_PATTERN = (r'seqan-src-([0-9])\.([0-9])(?:\.([0-9]))?\.'
-                   '(tar\.gz|tar\.bz2|zip)')
-LIBRARY_PATTERN = (r'seqan-library-([0-9])\.([0-9])(?:\.([0-9]))?\.'
-                   '(tar\.gz|tar\.bz2|zip)')
-APPS_PATTERN = (r'seqan-apps-([0-9])\.([0-9])(?:\.([0-9]))?-'
-                '(Linux|Mac|Windows)-(x86_64|i686)?'
-                '\.(tar\.gz|tar\.bz2|zip|exe)')
-# The regular expression to use for matching patterns.
-PACKAGE_PATTERN = (r'(.*)-([0-9]+)\.([0-9]+)(?:\.([0-9]+))?-'
-                   '(Linux|Mac|Windows)-(x86_64|i686)?'
-                   '\.(tar\.gz|tar\.bz2|zip|exe)')
-# The operating systems that we expect.
-OPERATING_SYSTEMS = ['Linux', 'Mac', 'Windows', 'src']
-# The architectures that we expect.
-ARCHITECTURES = ['x86_64', 'i686', 'src']
-# The file formats.
-FORMATS = ['tar.gz', 'tar.bz2', 'zip', 'exe']
-# Path to template.
-TPL_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                        'release_page.html')
-PACKAGE_TPL_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                                'one_package.html')
-# Base URL for links.
-BASE_URL='http://packages.seqan.de'
-
-
-class Arch(object):
-    def __init__(self, name):
-        self.name = name
-        self.files = {}
-
-
-class Packages(object):
-    def __init__(self, os_):
-        self.os = os_
-        self.archs = {}
-        for arch in ARCHITECTURES:
-            self.archs[arch] = Arch(arch)
-
-
-class Version(object):
-    def __init__(self, version):
-        self.version = version
-        self.packages = {}
-        for os_ in OPERATING_SYSTEMS:
-            self.packages[os_] = Packages(os_)
-
-
-class Software(object):
-    def __init__(self, name):
-        self.name = name
-        self.versions = {}
-
-
-class PackageDatabase(object):
-    def __init__(self, path):
-        self.path = path
-        self.seqan_apps = Software('SeqAn Apps')
-        self.seqan_library = Software('SeqAn Library')
-        self.seqan_src = Software('SeqAn Sources')
-        self.softwares = {}
-
-    def load(self):
-        # Two craw directory structure by two levels.
-        xs = []
-        for x in os.listdir(self.path):
-            if os.path.isdir(os.path.join(self.path, x)):
-                for y in os.listdir(os.path.join(self.path, x)):
-                    xs.append(y)
-        for x in xs:
-            if re.match(SRC_PATTERN, x):
-                major, minor, patch, suffix = re.match(SRC_PATTERN, x).groups()
-                if not patch:
-                    patch = '0'
-                major_minor_patch = '%s.%s.%s' % (major, minor, patch)
-                software = self.seqan_src
-                if not major_minor_patch in software.versions:
-                    software.versions[major_minor_patch] = Version(major_minor_patch)
-                version = software.versions[major_minor_patch]
-                version.packages['src'].archs['src'].files[suffix] = x
-            elif re.match(LIBRARY_PATTERN, x):
-                major, minor, patch, suffix = re.match(LIBRARY_PATTERN, x).groups()
-                if not patch:
-                    patch = '0'
-                major_minor_patch = '%s.%s.%s' % (major, minor, patch)
-                software = self.seqan_library
-                if not major_minor_patch in software.versions:
-                    software.versions[major_minor_patch] = Version(major_minor_patch)
-                version = software.versions[major_minor_patch]
-                version.packages['src'].archs['src'].files[suffix] = x
-            elif re.match(APPS_PATTERN, x):
-                major, minor, patch, os_, arch, suffix = re.match(APPS_PATTERN, x).groups()
-                if not patch:
-                    patch = '0'
-                major_minor_patch = '%s.%s.%s' % (major, minor, patch)
-                software = self.seqan_apps
-                if not major_minor_patch in software.versions:
-                    software.versions[major_minor_patch] = Version(major_minor_patch)
-                version = software.versions[major_minor_patch]
-                version.packages[os_].archs[arch].files[suffix] = x
-            elif re.match(PACKAGE_PATTERN, x):  # individual apps
-                filename = x
-                name, major, minor, patch, os_, arch, suffix = re.match(PACKAGE_PATTERN, x).groups()
-                if not patch:
-                    patch = '0'
-                major_minor_patch = '%s.%s.%s' % (major, minor, patch)
-
-                if not name in self.softwares:
-                    self.softwares[name] = Software(name)
-                software = self.softwares[name]
-
-                if not major_minor_patch in software.versions:
-                    software.versions[major_minor_patch] = Version(major_minor_patch)
-                version = software.versions[major_minor_patch]
-
-                version.packages[os_].archs[arch].files[suffix] = filename
-            else:
-                pass
-
-
-class RssItem(object):
-    """One RSS item."""
-    def __init__(self, title, description, link):
-        self.title = title
-        self.description = description
-        self.link = link
-
-    def generate(self):
-        tpl = ('<item>\n'
-               '  <title>%s</title>\n'
-               '  <summary>%s</summary>\n'
-               '  <link>%s</link>\n'
-               '</item>\n')
-        return tpl % (self.title, self.description, self.link)
-
-
-class RssFeed(object):
-    """Feed with one channel."""
-
-    def __init__(self, title, description, link):
-        self.title = title
-        self.description = description
-        self.link = link
-        self.items = []
-
-    def generate(self):
-        tpl = ('<?xml version="1.0" encoding="UTF-8" ?>\n'
-               '<rss version="2.0">\n'
-               '  <title>%s</title>\n'
-               '  <description>%s</description>\n'
-               '\n'
-               '%s'
-               '</rss>\n')
-        items_s = '\n'.join([i.generate() for i in self.items])
-        return tpl % (self.title, self.description, items_s)
-
-
-class RssWriter(object):
-    """Writing of RSS files for a PackageDB."""
-
-    def __init__(self, out_dir, package_db, base_url):
-        self.out_dir = out_dir
-        self.package_db = package_db
-        self.base_url = base_url
-
-    def generate(self):
-        """Create output RSS files."""
-        for sname, software in self.package_db.softwares.items():
-            feed = RssFeed(sname, '', '')
-            vnames = [key for key in software.versions.keys()]
-            vnames.sort(key=StrictVersion, reverse=True)
-            for vname in vnames:
-                description = 'Version %s of %s.' % (vname, sname)
-                link = '%s/%s#%s' % (self.base_url, sname, vname)
-                item = RssItem('%s %s' % (sname, vname), description, link)
-                feed.items.append(item)
-            path = os.path.join(self.out_dir, sname, 'package.rss')
-            print >>sys.stderr, 'Writing %s' % path
-            with open(path, 'wb') as f:
-                f.write(feed.generate())
-
-
-def work(options):
-    print >>sys.stderr, 'Generating Release Site.'
-    print >>sys.stderr, 'Package Dir: %s' % (options.package_db,)
-    print >>sys.stderr, 'Out file: %s' % (options.out_file,)
-    db = PackageDatabase(options.package_db)
-    db.load()
-    # Load and render overview template.
-    tpl = pyratemp.Template(filename=TPL_PATH)
-    with open(options.out_file, 'wb') as f:
-        f.write(tpl(FORMATS=FORMATS,
-                    seqan_apps=db.seqan_apps,
-                    seqan_library=db.seqan_library,
-                    seqan_src=db.seqan_src,
-                    softwares=db.softwares,
-                    utc_time=time.strftime('%a, %d %b %Y %H:%M:%S UTC', time.gmtime()),
-                    sorted=sorted))
-    # Load and render package template.
-    tpl = pyratemp.Template(filename=PACKAGE_TPL_PATH)
-    for sname, software in db.softwares.items():
-        out_path = os.path.join(options.package_db, sname, 'index.html')
-        print >>sys.stderr, 'Writing %s.' % out_path
-        with open(out_path, 'wb') as f:
-            f.write(tpl(FORMATS=FORMATS,
-                        utc_time=time.strftime('%a, %d %b %Y %H:%M:%S UTC', time.gmtime()),
-                        software=software,
-                        sorted=sorted))
-    # Write out RSS feeds for the packages.
-    rss_writer = RssWriter(options.package_db, db, options.base_url)
-    rss_writer.generate()
-
-
-def main():
-    parser = optparse.OptionParser()
-    parser.add_option('-d', '--package-db', dest='package_db',
-                      help='Path to directory with package files.')
-    parser.add_option('-o', '--out-file', dest='out_file',
-                      help='Path to the HTML file to generate.')
-    parser.add_option('-b', '--base-url', dest='base_url',
-                      help='Base URL.', default=BASE_URL)
-
-    options, args = parser.parse_args()
-    if args:
-        parser.error('No arguments expected!')
-        return 1
-    if not options.package_db:
-        parser.error('Option --package-db/-d is required!')
-        return 1
-    if not options.out_file:
-        parser.error('Option --out-file/-o is required!')
-        return 1
-
-    return work(options)
diff --git a/util/py_lib/seqan/skel.py b/util/py_lib/seqan/skel.py
index e6b3d07..d5a2197 100755
--- a/util/py_lib/seqan/skel.py
+++ b/util/py_lib/seqan/skel.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """SeqAn code generation from templates / skeletons.
 
 This module contains code to help the creation of modules, tests, apps etc.
diff --git a/util/skel/app_tests_template/run_tests.py b/util/skel/app_tests_template/run_tests.py
index 9d524c9..ae39407 100644
--- a/util/skel/app_tests_template/run_tests.py
+++ b/util/skel/app_tests_template/run_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 """Execute the tests for %(APP_NAME)s.
 
 The golden test outputs are generated by the script generate_outputs.sh.
diff --git a/util/uncrustify/uncrustify.cfg b/util/uncrustify/uncrustify.cfg
index 50fc21c..bcbbc34 100644
--- a/util/uncrustify/uncrustify.cfg
+++ b/util/uncrustify/uncrustify.cfg
@@ -190,7 +190,7 @@ nl_while_brace=force
 nl_do_brace=force
 nl_brace_while=force
 nl_switch_brace=force
-nl_namespace_brace=remove
+nl_namespace_brace=force
 nl_template_class=force
 nl_class_brace=force
 nl_func_paren=remove
@@ -198,4 +198,4 @@ nl_fdef_brace=force
 nl_return_expr=remove
 nl_class_colon=add
 mod_paren_on_return=remove
-pos_class_colon=Trail
\ No newline at end of file
+pos_class_colon=Trail

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/seqan2.git



More information about the debian-med-commit mailing list