[med-svn] [khmer] 01/04: Imported Upstream version 2.0~rc6+dfsg

Michael Crusoe misterc-guest at moszumanska.debian.org
Fri Sep 4 23:11:50 UTC 2015


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

misterc-guest pushed a commit to branch master
in repository khmer.

commit 381599adf9500f324c50545b0fd41e55ac859c37
Author: Michael R. Crusoe <crusoe at ucdavis.edu>
Date:   Fri Sep 4 15:42:21 2015 -0700

    Imported Upstream version 2.0~rc6+dfsg
---
 .mailmap                                  |   9 +-
 CITATION                                  | 119 +++++--
 CODE_OF_CONDUCT.rst                       |  38 +++
 CONTRIBUTING.md                           |  39 +++
 ChangeLog                                 | 176 ++++++++++
 Doxyfile.in                               |  21 +-
 LICENSE                                   | 141 ++++++--
 MANIFEST.in                               |   2 +-
 Makefile                                  |  74 ++++-
 README.rst                                |  38 +++
 bink.ipynb                                | 535 ------------------------------
 doc/LICENSE.rst                           |   3 +-
 doc/_static/labibi.css                    |   2 +-
 doc/conf.py                               |   7 +-
 doc/contributors.rst                      |  53 ++-
 doc/dev/a-quick-guide-to-testing.rst      |  38 +++
 doc/dev/binary-file-formats.rst           |  44 ++-
 doc/dev/codebase-guide.rst                |  50 ++-
 doc/dev/coding-guidelines-and-review.rst  |  47 ++-
 doc/dev/crazy-ideas.rst                   |  39 ++-
 doc/dev/details.rst                       |  37 ++-
 doc/dev/development.rst                   |  59 +++-
 doc/dev/for-khmer-developers.rst          |  42 ++-
 doc/dev/getting-started.rst               | 157 ++++++++-
 doc/dev/hackathon.rst                     |  37 +++
 doc/dev/index.rst                         |  38 +++
 doc/dev/release.rst                       |  42 ++-
 doc/dev/scripts-and-sandbox.rst           |  58 +++-
 doc/index.rst                             | 144 ++++++--
 doc/introduction.rst                      |  63 +++-
 doc/release-notes/index.rst               |  39 +++
 doc/release-notes/release-1.0.1.md        |  38 +++
 doc/release-notes/release-1.0.1.rst       |  40 +++
 doc/release-notes/release-1.0.md          |  38 +++
 doc/release-notes/release-1.0.rst         |  40 +++
 doc/release-notes/release-1.1.md          |  38 +++
 doc/release-notes/release-1.1.rst         |  40 +++
 doc/release-notes/release-1.2.md          |  38 +++
 doc/release-notes/release-1.2.rst         |  40 +++
 doc/release-notes/release-1.3.md          |  37 +++
 doc/release-notes/release-1.3.rst         |  40 +++
 doc/release-notes/release-1.4.md          |  39 ++-
 doc/release-notes/release-1.4.rst         |  40 +++
 doc/release-notes/release-2.0.md          | 340 +++++++++++++++++++
 doc/release-notes/release-2.0.rst         | 386 +++++++++++++++++++++
 doc/requirements.txt                      |   2 +-
 doc/roadmap.rst                           |  38 ++-
 doc/run-corn-50m.sh                       |  41 ++-
 doc/user/biblio.rst                       |  72 +++-
 doc/user/blog-posts.rst                   |  40 ++-
 doc/user/choosing-table-sizes.rst         |  73 +++-
 doc/user/examples.rst                     |  55 ++-
 doc/user/galaxy.rst                       |  48 ++-
 doc/user/getting-help.rst                 |  43 ++-
 doc/user/guide.rst                        | 159 ++++-----
 doc/user/index.rst                        |  38 +++
 doc/user/install.rst                      |  46 ++-
 doc/user/known-issues.rst                 |  47 ++-
 doc/user/partitioning-big-data.rst        |  42 ++-
 doc/user/scripts.rst                      |  61 +++-
 doc/whats-new-2.0.rst                     | 184 ++++++++--
 examples/stamps/do.sh                     |  34 +-
 ez_setup.py                               | 332 ------------------
 jenkins-build.sh                          |  34 ++
 khmer/__init__.py                         |  37 ++-
 khmer/_khmer.cc                           |  60 +++-
 khmer/_version.py                         |   4 +-
 khmer/kfile.py                            |  37 ++-
 khmer/khmer_args.py                       |  60 +++-
 khmer/khmer_logger.py                     |  37 ++-
 khmer/thread_utils.py                     |  49 ++-
 khmer/utils.py                            |  43 ++-
 lib/.check_openmp.cc                      |  42 ++-
 lib/Makefile                              |  58 +++-
 lib/counting.cc                           |  52 ++-
 lib/counting.hh                           |  50 ++-
 lib/get_version.py                        |  42 ++-
 lib/graphtest.cc                          |  80 -----
 lib/hashbits.cc                           |  44 ++-
 lib/hashbits.hh                           |  48 ++-
 lib/hashtable.cc                          | 102 ++++--
 lib/hashtable.hh                          |  51 ++-
 lib/hllcounter.cc                         |  52 ++-
 lib/hllcounter.hh                         |  46 ++-
 lib/khmer.hh                              |  44 ++-
 lib/khmer_exception.hh                    |  44 ++-
 lib/kmer_hash.cc                          |  48 ++-
 lib/kmer_hash.hh                          |  75 +++--
 lib/labelhash.cc                          |  44 ++-
 lib/labelhash.hh                          |  46 ++-
 lib/primes.hh                             |  75 -----
 lib/read_aligner.cc                       |  42 ++-
 lib/read_aligner.hh                       |  43 ++-
 lib/read_aligner_test.sh                  |   1 -
 lib/read_parsers.cc                       |  44 ++-
 lib/read_parsers.hh                       |  44 ++-
 lib/subset.cc                             |  70 +++-
 lib/subset.hh                             |  44 ++-
 lib/test-Colors.cc                        |  42 ++-
 lib/test-compile.cc                       |  46 ++-
 lib/test-read-aligner.cc                  |  63 ----
 lib/traversal.cc                          |  47 ++-
 lib/traversal.hh                          |  48 ++-
 oxli/__init__.py                          |  55 ++-
 oxli/build_graph.py                       |  39 ++-
 oxli/functions.py                         |  43 ++-
 sandbox/Makefile.read_aligner_training    |  35 ++
 sandbox/README.rst                        |  38 +++
 sandbox/abundance-hist-by-position.py     |  36 +-
 sandbox/assembly-diff-2.py                |  36 +-
 sandbox/assembly-diff.py                  |  36 +-
 sandbox/assemstats3.py                    |  48 ++-
 sandbox/bloom-count.py                    |  40 ++-
 sandbox/build-sparse-graph.py             |  39 ++-
 sandbox/calc-best-assembly.py             |  35 +-
 sandbox/calc-error-profile.py             |  37 ++-
 sandbox/calc-median-distribution.py       |  36 +-
 sandbox/collect-reads.py                  |  39 ++-
 sandbox/collect-variants.py               |  36 +-
 sandbox/correct-reads.py                  |  45 ++-
 sandbox/count-kmers-single.py             |  37 ++-
 sandbox/count-kmers.py                    |  37 ++-
 sandbox/error-correct-pass2.py            |  38 ++-
 sandbox/estimate_optimal_hash.py          |  42 ++-
 sandbox/extract-single-partition.py       |  36 +-
 sandbox/fasta-to-abundance-hist.py        |  36 +-
 sandbox/filter-below-abund.py             |  36 +-
 sandbox/filter-median-and-pct.py          |  36 +-
 sandbox/filter-median.py                  |  36 +-
 sandbox/find-high-abund-kmers.py          |  39 ++-
 sandbox/graph-size.py                     |  36 +-
 sandbox/hi-lo-abundance-by-position.py    |  36 +-
 sandbox/make-coverage.py                  |  37 ++-
 sandbox/memusg                            |  46 ---
 sandbox/multi-rename.py                   |  37 ++-
 sandbox/normalize-by-median-pct.py        |  38 ++-
 sandbox/optimal_args_hashbits.py          |  38 ++-
 sandbox/print-stoptags.py                 |  36 +-
 sandbox/print-tagset.py                   |  36 +-
 sandbox/readaligner_pairhmm_train.py      |  34 ++
 sandbox/renumber-partitions.py            |  36 +-
 sandbox/saturate-by-median.py             |  43 ++-
 sandbox/shuffle-reverse-rotary.py         |  38 ++-
 sandbox/slice-reads-by-coverage.py        |  35 +-
 sandbox/split-fasta.py                    |  36 +-
 sandbox/split-sequences-by-length.py      |  38 ++-
 sandbox/stoptag-abundance-hist.py         |  36 +-
 sandbox/stoptags-by-position.py           |  38 ++-
 sandbox/strip-partition.py                |  36 +-
 sandbox/subset-report.py                  |  36 +-
 sandbox/sweep-files.py                    |  40 ++-
 sandbox/sweep-out-reads-with-contigs.py   |  37 ++-
 sandbox/sweep-reads.py                    |  42 ++-
 sandbox/sweep-reads2.py                   |  36 +-
 sandbox/sweep-reads3.py                   |  36 +-
 sandbox/write-trimmomatic.py              |  37 ++-
 scripts/README.txt                        |   1 -
 scripts/abundance-dist-single.py          |  58 +++-
 scripts/abundance-dist.py                 |  58 +++-
 scripts/annotate-partitions.py            |  62 +++-
 scripts/count-median.py                   |  59 +++-
 scripts/do-partition.py                   |  63 +++-
 scripts/extract-long-sequences.py         |  52 ++-
 scripts/extract-paired-reads.py           |  59 +++-
 scripts/extract-partitions.py             |  59 +++-
 scripts/fastq-to-fasta.py                 |  46 ++-
 scripts/filter-abund-single.py            |  50 ++-
 scripts/filter-abund.py                   |  52 ++-
 scripts/filter-stoptags.py                |  60 +++-
 scripts/find-knots.py                     |  59 +++-
 scripts/interleave-reads.py               |  57 +++-
 scripts/load-graph.py                     |  39 ++-
 scripts/load-into-counting.py             |  61 +++-
 scripts/make-initial-stoptags.py          |  55 ++-
 scripts/merge-partitions.py               |  55 ++-
 scripts/normalize-by-median.py            |  75 +++--
 scripts/oxli                              |  35 +-
 scripts/partition-graph.py                |  63 +++-
 scripts/readstats.py                      |  55 ++-
 scripts/sample-reads-randomly.py          |  66 +++-
 scripts/split-paired-reads.py             |  53 ++-
 scripts/trim-low-abund.py                 |  58 +++-
 scripts/unique-kmers.py                   |  57 +++-
 setup.py                                  |  73 +++-
 sort-authors-list.py                      |  92 +++++
 tests/__init__.py                         |  35 +-
 tests/khmer_tst_utils.py                  |  42 ++-
 tests/test_countgraph.py                  |  40 ++-
 tests/test_counting_single.py             |  41 ++-
 tests/test_filter.py                      |  40 ++-
 tests/test_functions.py                   |  40 ++-
 tests/test_graph.py                       |  40 ++-
 tests/test_hll.py                         |  40 ++-
 tests/test_labelhash.py                   |  40 ++-
 tests/test_lump.py                        |  38 ++-
 tests/test_nodegraph.py                   |  36 +-
 tests/test_normalize_by_median.py         |  49 ++-
 tests/test_oxli_functions.py              |  42 ++-
 tests/test_read_aligner.py                |  40 ++-
 tests/test_read_parsers.py                |  42 ++-
 tests/test_sandbox_scripts.py             |  36 +-
 tests/test_script_arguments.py            |  36 +-
 tests/test_scripts.py                     | 195 ++++++-----
 tests/test_streaming_io.py                |  39 ++-
 tests/test_subset_graph.py                |  40 ++-
 tests/test_threaded_sequence_processor.py |  66 +++-
 tests/test_version.py                     |  38 ++-
 versioneer.py                             |   0
 208 files changed, 8744 insertions(+), 2641 deletions(-)

diff --git a/.mailmap b/.mailmap
index 4e1b7d4..c084c8c 100644
--- a/.mailmap
+++ b/.mailmap
@@ -5,18 +5,20 @@ Michael R. Crusoe <mcrusoe at msu.edu> <mcrusoe at athyra.(none)>
 Camille Scott <camille.scott.w at gmail.com> <cs.welcher at gmail.com>
 Tamer Mansour <drtamermansour at gmail.com>
 Rhys Kidd <rhyskidd at gmail.com>
-Susan Steinman <susan.steinman at gmail.com> <steinman.tutoring at gmail.com>
+Susan R Steinman <susan.steinman at gmail.com> <steinman.tutoring at gmail.com>
 Adina Howe <adina at iastate.edu> <howead at msu.edu>
 Elmar Bucher <buchere at ohsu.edu> <elmbeech at zoho.com>
 Luiz Irber <luiz.irber at gmail.com> <luizirber at users.noreply.github.com>
 Luiz Irber <luiz.irber at gmail.com> <irberlui at msu.edu> 
 Qingpeng Zhang <qingpeng at gmail.com> <qingpeng at msu.edu>
+Qingpeng Zhang <qingpeng at gmail.com>
 Reed Cartwright <cartwright at asu.edu>
 Reed Cartwright <cartwright at asu.edu> <reed at cartwrig.ht>
 Jacob Fenton <bocajnotnef at gmail.com>
 Michael Wright <wrigh517 at gmail.com> <narrows at 13-67-33.client.wireless.msu.edu>
 Eric McDonald <em at msu.edu> <emcd.msu at gmail.com>
-Jared Simpson <js18 at sanger.ac.uk> <jared.simpson at gmail.com>
+Jared Simpson <jared.simpson at oicr.on.ca> <jared.simpson at gmail.com>
+Jared Simpson <js18 at sanger.ac.uk> <jared.simpson at oicr.on.ca>
 Benjamin Taylor <taylo886 at msu.edu> <taylo886 at cse.msu.edu>
 Kaben Nanlohy <kaben.nanlohy at gmail.com> <kaben at idyll.org>
 Ramakrishnan Srinivasan <ramrs at nyu.edu>
@@ -37,6 +39,7 @@ Jonathan Gluck <jdg at cs.umd.edu> <jonathangluck08854 at gmail.com>
 Joshua R. Herr <joshua.r.herr at gmail.com>
 Bede Constantinides <bede.constantinides at manchester.ac.uk> <bedeabc at gmail.com>
 Kevin D. Murray <kevin.murray at anu.edu.au> <spam at kdmurray.id.au>
+Kevin D. Murray <kevin.murray at anu.edu.au> <kdmurray91 at users.noreply.github.com>
 James A. Stapleton <jas at msu.edu>
 Scott Fay <scott.a.fay at gmail.com> <scott.fay at invitae.com>
 Iván González <igonzalez at mailaps.org> <iglpdc at gmail.com>
@@ -45,3 +48,5 @@ Alexander Johan Nederbragt <lex.nederbragt at ibv.uio.no>
 Charles Pepe-Ranney <chuck.peperanney at gmail.com>
 Jeramia Ory <Jeramia.Ory at stlcop.edu> <jeramia.ory at gmail.com>
 <jared.simpson at oicr.on.ca> <js18 at sanger.ac.uk>
+Amanda Charbonneau <charbo24 at msu.edu>
+Zachary N Russ <zachary.n.russ at gmail.com>
diff --git a/CITATION b/CITATION
index a1b09f3..e830d26 100644
--- a/CITATION
+++ b/CITATION
@@ -1,36 +1,86 @@
-.. vim: set filetype=rst
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2014-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
 
 .. If you update this file then you may need to update the citations in
-   scripts/galaxy/macro.xml and khmer/khmer_args.py as well
+   khmer/khmer_args.py as well
 
+*********
 Citations
----------
+*********
 
 Software Citation
-^^^^^^^^^^^^^^^^^
+=================
 
 If you use the khmer software, you must cite:
 
-   Crusoe et al., The khmer software package: enabling efficient sequence
-   analysis. 2014. http://dx.doi.org/10.6084/m9.figshare.979190
+   Crusoe et al., The khmer software package: enabling efficient nucleotide
+   sequence analysis. 2015. http://dx.doi.org/10.12688/f1000research.6924.1
 
 .. code-block:: tex
 
-  @article{khmer2014,
-      author = "Crusoe, Michael and Edvenson, Greg and Fish, Jordan and Howe,
-  Adina and McDonald, Eric and Nahum, Joshua and Nanlohy, Kaben and
-  Ortiz-Zuazaga, Humberto and Pell, Jason and Simpson, Jared and Scott, Camille
-  and Srinivasan, Ramakrishnan Rajaram and Zhang, Qingpeng and Brown, C. Titus",
-      title = "The khmer software package: enabling efficient sequence
-  analysis",
-      year = "2014",
-      month = "04",
-      publisher = "Figshare",
-      url = "http://dx.doi.org/10.6084/m9.figshare.979190"
+  @article{khmer2015,
+     author = "Crusoe, Michael R. and Alameldin, Hussien F. and Awad, Sherine
+  and Bucher, Elmar and Caldwell, Adam and Cartwright, Reed and Charbonneau,
+  Amanda and Constantinides, Bede and Edvenson, Greg and Fay, Scott and Fenton,
+  Jacob and Fenzl, Thomas and Fish, Jordan and Garcia-Gutierrez, Leonor and
+  Garland, Phillip and Gluck, Jonathan and González, Iván and Guermond, Sarah
+  and Guo, Jiarong and Gupta, Aditi and Herr, Joshua R. and Howe, Adina and
+  Hyer, Alex and Härpfer, Andreas and Irber, Luiz and Kidd, Rhys and Lin, David
+  and Lippi, Justin and Mansour, Tamer and McA'Nulty, Pamela and McDonald, Eric
+  and Mizzi, Jessica and Murray, Kevin D. and Nahum, Joshua R. and Nanlohy,
+  Kaben and Nederbragt, Alexander Johan and Ortiz-Zuazaga, Humberto and Ory,
+  Jeramia and Pell, Jason and Pepe-Ranney, Charles and Russ, Zachary N and
+  Schwarz, Erich and Scott, Camille and Seaman, Josiah and Sievert, Scott and
+  Simpson, Jared and Skennerton, Connor T. and Spencer, James and Srinivasan,
+  Ramakrishnan and Standage, Daniel and Stapleton, James A. and Stein, Joe and
+  Steinman, Susan R and Taylor, Benjamin and Trimble, Will and Wiencko, Heather
+  L. and Wright, Michael and Wyss, Brian and Zhang, Qingpeng and zyme, en and
+  Brown, C. Titus"
+     title = "The khmer software package: enabling efficient nucleotide
+  sequence analysis",
+     year = "2015",
+     month = "08",
+     publisher = "F1000",
+     url = "http://dx.doi.org/10.12688/f1000research.6924.1"
   }
 
-If you use any of our published scientific methods, you should *also*
-cite the relevant paper(s), as directed below. Additionally some scripts use
+If you use any of our published scientific methods you should *also*
+cite the relevant paper(s) as directed below. Additionally some scripts use
 the `SeqAn library <http://www.seqan.de>`_ for read parsing: the full citation
 for that library is also included below.
 
@@ -38,10 +88,10 @@ To see a quick summary of papers for a given script just run it without using
 any command line arguments.
 
 Graph partitioning and/or compressible graph representation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+===========================================================
 
-The load-graph.py, partition-graph.py, find-knots.py, load-graph.py,
-and partition-graph.py scripts are part of the compressible graph
+The :program:`load-graph.py`, :program:`partition-graph.py`,
+and :program:`find-knots.py` scripts are part of the compressible graph
 representation and partitioning algorithms described in:
 
    Pell J, Hintze A, Canino-Koning R, Howe A, Tiedje JM, Brown CT.
@@ -84,10 +134,10 @@ representation and partitioning algorithms described in:
   }
 
 Digital normalization
-^^^^^^^^^^^^^^^^^^^^^
+=====================
 
-The normalize-by-median.py and count-median.py scripts are part of
-the digital normalization algorithm, described in:
+The :program:`normalize-by-median.py` and :program:`count-median.py` scripts
+are part of the digital normalization algorithm, described in:
 
    A Reference-Free Algorithm for Computational Normalization of
    Shotgun Sequencing Data
@@ -108,9 +158,9 @@ the digital normalization algorithm, described in:
   }
 
 Efficient k-mer error trimming
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+==============================
 
-The script trim-low-abund.py is described in:
+The :program:`script trim-low-abund.py` is described in:
 
    Crossing the streams: a framework for streaming analysis of short DNA
    sequencing reads
@@ -121,17 +171,19 @@ The script trim-low-abund.py is described in:
 
   @unpublished{semistream,
       author = "Qingpeng Zhang and Sherine Awad and C. Titus Brown",
-      title = "Crossing the streams: a framework for streaming analysis of short DNA sequencing reads",
+      title = "Crossing the streams: a framework for streaming analysis of
+          short DNA sequencing reads",
       year = "2015",
       eprint = "PeerJ Preprints 3:e1100",
       url = "https://dx.doi.org/10.7287/peerj.preprints.890v1"
   }
 
 K-mer counting
-^^^^^^^^^^^^^^
+==============
 
-The abundance-dist.py, filter-abund.py, and load-into-counting.py scripts
-implement the probabilistic k-mer counting described in:
+The :program:`abundance-dist.py`, :program:`filter-abund.py`, and
+:program:`load-into-counting.py` scripts implement the probabilistic k-mer
+counting described in:
 
    These Are Not the K-mers You Are Looking For: Efficient Online K-mer
    Counting Using a Probabilistic Data Structure
@@ -150,7 +202,7 @@ implement the probabilistic k-mer counting described in:
       year = "2014",
       month = "07",
       volume = "9",
-      url = "http://dx.doi.org/10.1371%2Fjournal.pone.0101271",
+      url = "http://dx.doi.org/10.1371/journal.pone.0101271",
       pages = "e101271",
       abstract = "<p>K-mer abundance analysis is widely used for many purposes in
   nucleotide sequence analysis, including data preprocessing for de novo
@@ -179,7 +231,7 @@ implement the probabilistic k-mer counting described in:
   }
 
 FASTA and FASTQ reading
-^^^^^^^^^^^^^^^^^^^^^^^
+=======================
 
 Several scripts use the SeqAn library for FASTQ and FASTA reading as described
 in:
@@ -228,3 +280,4 @@ in:
     algorithms.},
   }
 
+.. vim: set filetype=rst:
diff --git a/CODE_OF_CONDUCT.rst b/CODE_OF_CONDUCT.rst
index df7fe91..e3e85a1 100644
--- a/CODE_OF_CONDUCT.rst
+++ b/CODE_OF_CONDUCT.rst
@@ -1,3 +1,41 @@
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2014-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+
 Contributor Code of Conduct
 ===========================
 
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 5e5024d..f701fde 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,3 +1,42 @@
+<!--
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2014-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+-->
+
 See [our development docs](https://khmer.readthedocs.org/en/latest/dev/).
 
 Be sure to copy and paste the [checklist](https://khmer.readthedocs.org/en/latest/dev/coding-guidelines-and-review.html#checklist) in the Pull-Request comment
diff --git a/ChangeLog b/ChangeLog
index 22f8148..60f459e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,179 @@
+2015-09-04  Michael R. Crusoe  <crusoe at ucdavis.edu>
+
+   * tests/khmer_tst_utils.py: look in "EGG-INFO" for scripts before checking
+   the PATH
+
+2015-09-04  Michael R. Crusoe  <crusoe at ucdavis.edu>
+
+   * doc/release-notes/release-2.0.md: release notes for 2.0
+   * doc/user/install.txt: correct second invocation of nosetests to match the
+   first.
+   * setup.py: update the authors list for PyPI.
+   * doc/user/known-issues.rst: remove three fixed issues; add a new one
+   * doc/whats-new-2.0.rst: update to match the release notes
+   * doc/release-notes/*.rst: refresh using `make convert-release-notes'
+
+2015-09-02  Michael R. Crusoe  <crusoe at ucdavis.edu>
+
+   * *: complete audit of license headers
+   * LICENSE: listings of some of the third-party licenses
+   * bink.ipynb,lib/graphtest.cc,lib/primes.hh: deleted unused files
+   * sandbox/assemstats.py: updated screed install instructions
+
+2015-09-02  Michael R. Crusoe  <crusoe at ucdavis.edu>
+
+   * *: finish undoing the `load-graph.py` rename
+
+2015-09-02  Micheal R. Crusoe  <crusoe at ucdavis.edu>
+
+   * doc/requirements.txt: Update URL to sphinxcontrib-autoprogram tarball
+
+2015-08-31  Michael R. Crusoe  <crusoe at ucdavis.edu>
+
+   * khmer/thread_utils.py: Use the robust test for paired reads from
+   khmer.utils; drop `is_pair()`
+   * tests/test_threaded_sequence_processor.py: Update to use Screed Record
+   objects.
+
+2015-08-28  Michael R. Crusoe  <crusoe at ucdavis.edu>
+
+   * doc/whats-new-2.0.rst: Many updates from `diff`ing the `--help` output of
+   version 1.4.1 vs now.
+   * Makefile: build the project if needed when making a PDF
+   * doc/index.rst: fixed inter-doc links to be relative
+   * doc/user/blog-posts.rst: replaced link to 88m-reads.fa.gz with a working
+   URL
+   * doc/user/{choosing-table-sizes,guide}.rst: disambiguated :option:
+   references so that they link properly.
+   * scripts/README.txt: removed unhelpful file
+   * scripts/normalize-by-median.py: replace `--force-single` with
+   `--force_single`. Added help text for `--cutoff`.
+
+2015-08-27  Titus Brown  <titus at idyll.org>
+
+  * doc/dev/getting-started.rst: fixed a few misspellings.
+
+2015-08-26  Michael R. Crusoe  <crusoe at ucdavis.edu>
+
+   * tests/test_scripts.py: removed the unused `_DEBUG_make_graph` function in
+   favor of other debugging methods like `ipdb`. Added
+   test_do_partition_no_big_traverse and test_extract_paired_reads_unpaired.
+
+2015-08-24  Michael R. Crusoe  <crusoe at ucdavis.edu>
+
+   * khmer/khmer_args.py: Replaced sanitize_epilog() with santize_help() that
+   reflows the text of ArgParse descriptions and epilog while preserving the
+   formatting. Enhanced removal of Sphinx directives by replacing double
+   backticks with the double quote character.
+   * scripts/*.py: Renamed sanitize_epilog to sanitize_help; leading newlines
+   from triple-quoted epilogs removed; formatting made consistent;
+   sanitize_help and ComboFormatter added where it was missing; a couple
+   script specific epilog reformatting (for use of `:doc:` and a
+   hyperlink).
+   * scripts/{count-median,filter-abund-single}.py: Fixed printing of output
+   file name to do so instead of printing information about the file handle.
+   * scripts/count-median.py: Added missing command so that example given
+   actually works.
+   * scripts/filter-abund-single.py: Removed redundant printing of output file
+   names.
+   * scripts/normalize-by-median.py: Removed unused option "-d" from an example
+   command (left over from the "--dump-frequency" era).
+   * scripts/{partition-graph.py,do-partition.py}: Fixed erasure of the queue
+   module name in the worker functions, which is necessary for basic
+   functionality.
+   * scripts/{do-partition,abundance-dist,abundance-dist-single,
+   extract-long-sequences}.py: Added an example command to the epilog.
+   * tests/khmer_tst_utils.py: Added 'name' attribute to make the fake
+   sys.stdout more like a read stdout object.
+   * oxli/__init__.py: removed redundant and unused help text
+   * scripts/{abundance-dist,annotate-partitions,count-median,
+   extract-long-sequences,extract-paired-reads,extract-partitions,
+   fastq-to-fasta,filter-abund,filter-stopgaps,interleave-reads,
+   load-into-graph,merge-partitions,normalize-by-median,partition-graph,
+   readstats,sample-reads-randomly,split-paired-reads}.py: made "--version"
+   and the citation header consistent across the scripts.
+   * tests/test_scripts.py: added tests for the "--version" and citation
+   header behavior.
+   * tests/test_normalize_by_median.py: updated test for 'quiet' mode as
+   citation header still prints to STDERR.
+   * setup.py,tests/test_scripts.py: turned off the "oxli" script for v2.0.
+
+2015-08-17  Michael R. Crusoe  <crusoe at ucdavis.edu>
+
+   * Makefile: remove BASH shell designation that appears to be incompatible
+   with OS X Mavericks & virtualenv; refactored out BASH-isms for those whose
+   default shell isn't BASH (Debian, and others).
+   * lib/test-read-aligner.cc,read_aligner_test.sh: removed unused test files
+   found during search for other shell scripts with BASHisms.
+
+2015-08-18  Michael R. Crusoe  <crusoe at ucdavis.edu>
+
+   * *: reverted load-into-counting.py -> load-into-countgraph.py and
+   load-graph.py -> load-into nodegraph.py rename.
+   * CITATION: unescaped URL
+   * doc/user/guide.rst: added `:program:` and `:option:` directives as
+   needed; replaced references to `strip-and-split-for-assembly` with
+   `extract-paired-reads`. Updated instructions to use `--unpaired-reads` with
+   `normalize-by-median.py` instead of second round of diginorm.
+
+2015-08-18  Titus Brown  <titus at idyll.org>
+
+   * doc/index.rst: update introductory text.
+   * doc/user/biblio.rst: update bibliography link descriptions and text.
+   * doc/_static/labibi.css: reference new location of base CSS
+
+2015-08-14  Luiz Irber  <khmer at luizirber.org>
+
+   * scripts/unique-kmers.py: Rename option --stream-out to --stream-records.
+   * tests/test_streaming_io.py: Fix unique-kmers tests, use new option.
+   * khmer/_khmer.cc, lib/hllcounter.cc: Rename some variables for consistency.
+
+2015-08-12  Jacob Fenton  <bocajnotnef at gmail.com>
+
+   * doc/dev/{codebase-guide,coding-guidelines-and-review,development,
+   for-khmer-developers,getting-started,release,scripts-and-sandbox,
+   binary-file-formats}.rst,doc/{index,introduction,whats-new-2.0,
+   contributors}.rst,doc/user/{blog-posts,choosing-table-sizes,galaxy,
+   getting-help,guide,install,known-issues,partitioning-big-data,
+   scripts}.rst,CITATION: Cleaned up documentation
+   * scripts/*.py, khmer/khmer_args.py: added epilog sanitation
+   * scripts/{load-into-counting,load-graph,load-into-countgraph,
+   load-into-nodegraph}.py, tests/{test_scripts,test_normalize_by_median,
+   test_streaming_io,test_countgraph}: renamed load-into-counting -> 
+   load-into-countgraph, load-graph -> load-into-nodegraph, fixed tests to not
+   bork
+
+2015-08-12  Luiz Irber  <khmer at luizirber.org>
+
+   * khmer/_khmer.cc: Fix a GCC string initialization warning.
+
+2015-08-12  Michael R. Crusoe  <crusoe at ucdavis.edu>
+
+   * CITATION, doc/{index,introduction,user/scripts}.rst, khmer/khmer_args.py:
+   formatting fixes and new citation for the software as a whole
+   * Makefile: PDF building hints, tweaked dependencies, update coverity URL,
+   new target to generate author list for the paper citation 
+   * sort-authors-list.py: helper script for the above
+   * doc/conf.py: don't generate a module index
+   * doc/contributors.rst: formatting, remove references to old lab
+   * doc/dev/coding-guidelines-and-review.rst: add C++ version standard
+   * doc/dev/getting-started.rst: ccache, git-merge-changelog, and advanced
+   commit squashing
+   * doc/user/biblio.rst: added links to khmer citation collections
+   * doc/user/examples.rst: linked to online version of example scripts
+   * doc/user/guide.rst: commented out empty section, added BSD note
+   * lib/counting.{cc},lib/*.hh: c++11 fixes: remove unneeded trailing
+   semicolons
+   * scripts/*.py: line-wrap & scrub output
+   * setup.py: turn optimizations back on and -pedantic
+   * .mailmap: additional tweaks to author list
+
+
+2015-08-11  Kevin Murray  <spam at kdmurray.id.au>
+
+   * lib/Makefile: Fix SONAME and ABI versioning to sync with Debian standard
+   practice.
+
 2015-08-10  Camille Scott  <camille.scott.w at gmail.com>
 
    * lib/traversal.{cc,hh}: Add new files with unified traversal machinery.
diff --git a/Doxyfile.in b/Doxyfile.in
index c9293f4..3e358cc 100644
--- a/Doxyfile.in
+++ b/Doxyfile.in
@@ -1843,18 +1843,6 @@ GENERATE_XML           = NO
 
 XML_OUTPUT             = xml
 
-# The XML_SCHEMA tag can be used to specify a XML schema, which can be used by a
-# validating XML parser to check the syntax of the XML files.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_SCHEMA             =
-
-# The XML_DTD tag can be used to specify a XML DTD, which can be used by a
-# validating XML parser to check the syntax of the XML files.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_DTD                =
-
 # If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
 # listings (including syntax highlighting and cross-referencing information) to
 # the XML output. Note that enabling this will significantly increase the size
@@ -1972,14 +1960,7 @@ SEARCH_INCLUDES        = YES
 # This tag requires that the tag SEARCH_INCLUDES is set to YES.
 
 INCLUDE_PATH           = /usr/include/python2.7 \
-                         /usr/include/c++/4.8 \
-                         /usr/include/x86_64-linux-gnu/c++/4.8 \
-                         /usr/include/c++/4.8/backward \
-                         /usr/lib/gcc/x86_64-linux-gnu/4.8/include \
-                         /usr/local/include \
-                         /usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed \
-                         /usr/include/x86_64-linux-gnu \
-                         /usr/include
+			 ${INCLUDES}
 
 # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
 # patterns (like *.h and *.hpp) to filter out the header-files in the
diff --git a/LICENSE b/LICENSE
index e29611e..d61c96e 100644
--- a/LICENSE
+++ b/LICENSE
@@ -2,33 +2,114 @@
 License
 =======
 
-Copyright (c) 2010-2014, Michigan State University.  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 the Michigan State University 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 THE COPYRIGHT
-HOLDER OR CONTRIBUTORS 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.
+Files: *
+Copyright: 2010-2015, Michigan State University.
+Copyright: 2015, The Regents of the University of California.
+License: BSD-3-Clause
+ 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 the Michigan State University, nor The Regents of
+       the University of California, 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 THE COPYRIGHT
+ HOLDER OR CONTRIBUTORS 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.
+
+Files: sandbox/memusg 
+Copyright: 2010, Jaeho Shin <netj at sparcs.org>
+License: none.
+ From https://gist.github.com/netj/526585
+
+Files: versioneer.py
+       khmer/_version.py
+Copyright: none
+License: public-domain
+ To make Versioneer easier to embed, all its code is hereby released into the
+ public domain. The `_version.py` that it creates is also in the public
+ domain.
+
+Files: third-party/bzip2/*
+Copyright: 1995-2010, Julian Seward <jseward at bzip.org>
+License: BSD-4-Clause
+
+Files: third-party/bzip2/dlltest.c
+Copyright: Yoshioka Tsuneo (tsuneo at rr.iij4u.or.jp)
+License: public-domain
+ This file is Public Domain.  Welcome any email to me.
+
+Files: third-party/seqan/*
+Copyright: 2006-2013, Knut Reinert, FU Berline
+License: BSD-3-Clause
+
+Files: third-party/seqan/*/boost*.h
+       third-party/seqan/*/concept_checking.h
+       third-party/seqan/*/fundamental_concepts.h
+Copyright: (c) 2002, Paul Mensonides
+ (c) 2001, Housemarque Oy
+ (c) 2000-2003, John Maddock
+ (c) 2001, Darin Adler
+ (c) 2001, Peter Dimov
+ (c) 2002, Bill Kempf
+ (c) 2002, Jens Maurer
+ (c) 2002-2003, 2006, David Abrahams
+ (c) 2003, Gennaro Prota
+ (c) 2003, Eric Friedman
+ (c) 2010, Eric Jourdanneau, Joel Falcou
+ (C) 2000, Jeremy Siek
+ 2002, The Trustees of Indiana University
+License: boost-1.0   
+
+Files: third-party/smhasher/*
+Copyright: none.
+License: public-domain
+ Quoting from the file header: "MurmurHash3 was written by Austin Appleby,
+ and is placed in the public domain. The author hereby disclaims copyright to
+ this source code."
+
+Files: third-party/zlib/*
+Copyright: (C) 1995-2013, Jean-loup Gailly and Mark Adler
+License: other
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+  
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+  
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+  
+  Jean-loup Gailly        Mark Adler
+  jloup at gzip.org          madler at alumni.caltech.edu
+  
+  Acknowledgments:
+  The deflate format used by zlib was defined by Phil Katz. The deflate
+  and zlib specifications were written by Peter Deutsch. Thanks to all the
+  people who reported problems and suggested various improvements in zlib;
+  they are too numerous to cite here.
diff --git a/MANIFEST.in b/MANIFEST.in
index 31c1bf4..9afd173 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -8,7 +8,7 @@ recursive-include third-party ChangeLog FAQ INDEX configure *.xsl
 recursive-include third-party/bzip2 bzip.css entities.xml libbz2.def LICENSE
 include third-party/zlib/zconf.h.in third-party/zlib/zlib.pc.in
 exclude third-party/zlib/Makefile third-party/zlib/zconf.h
-recursive-include scripts filter-abund.xml normalize-by-median.xml README.txt
+recursive-include scripts README.txt
 graft tests
 include scripts/oxli
 global-exclude *.orig
diff --git a/Makefile b/Makefile
index 6cfe294..b3127b5 100644
--- a/Makefile
+++ b/Makefile
@@ -1,11 +1,47 @@
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+
 # make pep8 to check for basic Python code compliance
 # make autopep8 to fix most pep8 errors
 # make pylint to check Python code for enhanced compliance including naming
 #  and documentation
 # make coverage-report to check coverage of the python scripts by the tests
 
-SHELL=bash
-CPPSOURCES=$(wildcard lib/*.cc lib/*.hh khmer/_khmer.cc)
+# `SHELL=bash` Will break Titus's laptop, so don't use BASH-isms like
+# `[[` conditional expressions.
+CPPSOURCES=$(wildcard lib/*.cc lib/*.hh khmer/_khmer.cc) setup.py
 PYSOURCES=$(wildcard khmer/*.py scripts/*.py)
 SOURCES=$(PYSOURCES) $(CPPSOURCES) setup.py
 DEVPKGS=pep8==1.5.7 diff_cover autopep8 pylint coverage gcovr nose pep257 \
@@ -81,22 +117,26 @@ clean: FORCE
 	rm -f diff-cover.html
 
 debug: FORCE
-	export CFLAGS="-pg -fprofile-arcs"; python setup.py build_ext --debug \
+	export CFLAGS="-pg -fprofile-arcs -D_GLIBCXX_DEBUG_PEDANTIC \
+		-D_GLIBCXX_DEBUG"; python setup.py build_ext --debug \
 		--inplace
 
 ## doc         : render documentation in HTML
 doc: build/sphinx/html/index.html
 
-build/sphinx/html/index.html: $(SOURCES) $(wildcard doc/*.txt) doc/conf.py all
+build/sphinx/html/index.html: $(SOURCES) $(wildcard doc/*.rst) doc/conf.py all
 	./setup.py build_sphinx --fresh-env
 	@echo ''
 	@echo '--> docs in build/sphinx/html <--'
 	@echo ''
 
 ## pdf         : render documentation as a PDF file
+# packages needed include: texlive-latex-base texlive-latex-recommended
+# texlive-fonts-recommended texlive-latex-extra
 pdf: build/sphinx/latex/khmer.pdf
 
-build/sphinx/latex/khmer.pdf: $(SOURCES) doc/conf.py $(wildcard doc/*.txt)
+build/sphinx/latex/khmer.pdf: $(SOURCES) doc/conf.py $(wildcard doc/*.rst) \
+	$(wildcard doc/user/*.rst) $(wildcard doc/dev/*.rst) sharedobj
 	./setup.py build_sphinx --fresh-env --builder latex
 	cd build/sphinx/latex && ${MAKE} all-pdf
 	@echo ''
@@ -167,7 +207,7 @@ diff_pylint_report: pylint_report.txt
 # statement). So we run nose inside of coverage.
 .coverage: $(PYSOURCES) $(wildcard tests/*.py) $(EXTENSION_MODULE)
 	coverage run --branch --source=scripts,khmer,oxli --omit=khmer/_version.py \
-		-m nose --with-xunit --attr $(TEST_ATTR) --processes=0
+		-m nose --with-xunit --attr $(TESTATTR) --processes=0
 
 coverage.xml: .coverage
 	coverage xml
@@ -197,12 +237,15 @@ nosetests.xml: FORCE
 	./setup.py nosetests --with-xunit --attr ${TESTATTR}
 
 ## doxygen     : generate documentation of the C++ and Python code
+# helpful packages: doxygen graphviz
+# ignore warning re: _formulas.aux
 doxygen: doc/doxygen/html/index.html
 
 doc/doxygen/html/index.html: ${CPPSOURCES} ${PYSOURCES}
 	mkdir -p doc/doxygen
-	sed "s/\$${VERSION}/`python ./lib/get_version.py`/" Doxyfile.in > \
-		Doxyfile
+	sed "s/\$${VERSION}/$$(python ./lib/get_version.py)/" Doxyfile.in | \
+	 sed "s@\$${INCLUDES}@$$($$(gcc -print-prog-name=cc1plus) -v /dev/null \
+	 2>&1 >/dev/null | grep '^ '|tr '\n' ' ')@" > Doxyfile
 	doxygen
 
 lib: FORCE
@@ -241,7 +284,7 @@ sloccount:
 	sloccount lib khmer scripts tests setup.py Makefile
 
 coverity-build:
-	if [[ -x ${cov_analysis_dir}/bin/cov-build ]]; \
+	if [ -x "${cov_analysis_dir}/bin/cov-build" ]; \
 	then \
 		export PATH=${PATH}:${cov_analysis_dir}/bin; \
 		cov-build --dir cov-int --c-coverage gcov --disable-gcov-arg-injection make coverage-debug; \
@@ -252,14 +295,13 @@ coverity-build:
 	fi
 
 coverity-upload: cov-int
-	if [[ -n "${COVERITY_TOKEN}" ]]; \
+	if [ -n "${COVERITY_TOKEN}" ]; \
 	then \
 		tar czf khmer-cov.tgz cov-int; \
-		curl --form project=ged-lab/khmer \
-			--form token=${COVERITY_TOKEN} --form \
+		curl --form token=${COVERITY_TOKEN} --form \
 			email=mcrusoe at msu.edu --form file=@khmer-cov.tgz \
 			--form version=${VERSION} \
-			http://scan5.coverity.com/cgi-bin/upload.py; \
+			https://scan.coverity.com/builds?project=ged-lab%2Fkhmer ; \
 	else echo 'Missing coverity credentials in $$COVERITY_TOKEN,'\
 		'skipping scan'; \
 	fi
@@ -307,4 +349,10 @@ list-author-emails:
 	@echo 'name, E-Mail Address'
 	@git log --format='%aN,%aE' | sort -u | grep -v 'root\|waffle\|boyce'
 
+list-citation:
+	git log --format='%aN,%aE' | sort -u | grep -v \
+		'root\|crusoe\|titus\|waffleio\|Hello\|boyce\|rodney' \
+		> authors.csv
+	python sort-authors-list.py
+
 FORCE:
diff --git a/README.rst b/README.rst
index 130cb9b..3ab1ce5 100644
--- a/README.rst
+++ b/README.rst
@@ -1,3 +1,41 @@
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2010-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+
 khmer
 =====
 
diff --git a/bink.ipynb b/bink.ipynb
deleted file mode 100644
index 9bdf093..0000000
--- a/bink.ipynb
+++ /dev/null
@@ -1,535 +0,0 @@
-{
- "metadata": {
-  "name": "bink"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
-  {
-   "cells": [
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "!python sandbox/bin-reads-by-abundance.py data/stamps-reads.fa.gz "
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "... 0\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "PING\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "... 25000\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "... 50000\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "PING\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "PING\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "... 75000\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "... 100000\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "... 125000\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "... 150000\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "... 175000\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "199999 7359 9413 175 183053\r\n"
-       ]
-      }
-     ],
-     "prompt_number": 38
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "!python scripts/abundance-dist-single.py -s -k 20 -x 1e8 stamps-reads.fa.gz.bink.2 bink2.hist\n",
-      "!python scripts/abundance-dist-single.py -s -k 20 -x 1e8 stamps-reads.fa.gz.bink.1 bink1.hist"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\r\n",
-        "PARAMETERS:\r\n",
-        " - kmer size =    20 \t\t(-k)\r\n",
-        " - n hashes =     4 \t\t(-N)\r\n",
-        " - min hashsize = 1e+08 \t(-x)\r\n",
-        "\r\n",
-        "Estimated memory usage is 4e+08 bytes (n_hashes x min_hashsize)\r\n",
-        "--------\r\n",
-        "making hashtable\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "building tracking ht\r\n",
-        "K: 20\r\n",
-        "HT sizes: [100000007, 100000037, 100000039, 100000049]\r\n",
-        "outputting to bink2.hist\r\n",
-        "consuming input, round 1 -- stamps-reads.fa.gz.bink.2\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "preparing hist from stamps-reads.fa.gz.bink.2...\r\n",
-        "consuming input, round 2 -- stamps-reads.fa.gz.bink.2\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\r\n",
-        "PARAMETERS:\r\n",
-        " - kmer size =    20 \t\t(-k)\r\n",
-        " - n hashes =     4 \t\t(-N)\r\n",
-        " - min hashsize = 1e+08 \t(-x)\r\n",
-        "\r\n",
-        "Estimated memory usage is 4e+08 bytes (n_hashes x min_hashsize)\r\n",
-        "--------\r\n",
-        "making hashtable\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "building tracking ht\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "K: 20\r\n",
-        "HT sizes: [100000007, 100000037, 100000039, 100000049]\r\n",
-        "outputting to bink1.hist\r\n",
-        "consuming input, round 1 -- stamps-reads.fa.gz.bink.1\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "preparing hist from stamps-reads.fa.gz.bink.1...\r\n",
-        "consuming input, round 2 -- stamps-reads.fa.gz.bink.1\r\n"
-       ]
-      }
-     ],
-     "prompt_number": 46
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "raw = numpy.loadtxt('raw-reads.hist')\n",
-      "bink = numpy.loadtxt('bink-reads.hist')\n",
-      "bink1 = numpy.loadtxt('bink1.hist')\n",
-      "bink2 = numpy.loadtxt('bink2.hist')"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 47
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "plot(raw[:,0], raw[:,1])\n",
-      "plot(bink[:,0], bink[:,1])\n",
-      "axis(ymax=200)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "pyout",
-       "prompt_number": 48,
-       "text": [
-        "(0.0, 3500.0, 0.0, 200)"
-       ]
-      },
-      {
-       "output_type": "display_data",
-       "png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAD9CAYAAAC7iRw+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X10U2WeB/DvTUvrC5VFkAKWUJDSF6Bt0DQVpZS6gwXR\n1rcBZmTP0u4eLXioos66o6N0XVdZ9aAwUnCGOp7xgDPOLgd1hAruCQx4pimKuFNaoQKWdXirjhKQ\nSts8+8ftTW7aJM3LbfOEfD/n9DS59+a5T2/glye/57nPowghBIiIKG6Yol0BIiIaXAz8RERxhoGf\niCjOMPATEcUZBn4iojjDwE9EFGcCBv7jx49j9uzZmDJlCoqLi7Fp0yYAgNPpRFlZGcxmM8rLy3Hu\n3Dn3a9asWYOMjAzk5ORgz549A1t7IiIKmRJoHP/Jkydx8uRJ5Ofno729HQUFBThw4ABqa2tx/Phx\nvPjii3jkk [...]
-       "text": [
-        "<matplotlib.figure.Figure at 0x10c163a90>"
-       ]
-      }
-     ],
-     "prompt_number": 48
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "plot(raw[:,0], raw[:,1])\n",
-      "plot(bink[:,0], bink[:,1])\n",
-      "axis(ymax=200, xmax=200)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "pyout",
-       "prompt_number": 49,
-       "text": [
-        "(0.0, 200, 0.0, 200)"
-       ]
-      },
-      {
-       "output_type": "display_data",
-       "png": "iVBORw0KGgoAAAANSUhEUgAAAXsAAAD9CAYAAABdoNd6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8VOXZ//HPTPZ9ISGEhLCGJCCQiElQWQJajQuC1Va0\n+rRCa0VbUHFrn7aGn23dqlJsRVrFpSpY64K4odiOiJYEHgggBCI7BEISsk2SmWSSnN8fY0YCJGSZ\nM+ee5Hq/Xrwkk8k9d47DN1eu+5z7mDRN0xBCCNGnmY2egBBCCP1J2AshRD8gYS+EEP2AhL0QQvQD\nEvZCCNEPSNgLIUQ/0GnYHzlyhOnTpzN27FhycnJ4/fXXAbBarcyaNYukpCRmz55NXV2d62uWLl1K\ncnIyY8aMYcOGDfrOXgghRJeYOjvPvrS0lNLSUtLT06moqCArK4tt27axbNkyjhw5wp/+9CcWLVrE\nsGHDuPfee [...]
-       "text": [
-        "<matplotlib.figure.Figure at 0x109e46850>"
-       ]
-      }
-     ],
-     "prompt_number": 49
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 49
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "plot(bink1[:,0], bink1[:,1])\n",
-      "plot(bink2[:,0], bink2[:,1])\n",
-      "axis(ymax=800)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "pyout",
-       "prompt_number": 50,
-       "text": [
-        "(0.0, 120.0, 0.0, 800)"
-       ]
-      },
-      {
-       "output_type": "display_data",
-       "png": "iVBORw0KGgoAAAANSUhEUgAAAXsAAAD9CAYAAABdoNd6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlcVXX+x/HXvRcu7ksugOFVU2JRU1CWtAQZTbIUy2yZ\nMk2bjJqwpmV+0zgTNjNNZo3pjKKVZNZki23mpOTSzbULuceimAsqIqipFwUF7vn9ceIqys65cIDP\n8/HoEdx7lu9X5c33fs73fI9BURQFIYQQTZqxoRsghBDC9STshRCiGZCwF0KIZkDCXgghmgEJeyGE\naAYk7IUQohmoMuzffvtthgwZwqBBg3j66acBsNvtxMTEYLFYGDduHPn5+c7t582bh6+vL4GBgWza\ntMl1LRdCCFFtlYb96dOneeWVV1izZg0pKSns27ePpKQkEhISsFgsZGZm4uPjw8KFCwHIzc1lwYIF\nrFu3joSEB [...]
-       "text": [
-        "<matplotlib.figure.Figure at 0x10c13c2d0>"
-       ]
-      }
-     ],
-     "prompt_number": 50
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "!python scripts/load-into-counting.py -x 1e7 -k 20 bink1.kh stamps-reads.fa.gz.bink.1\n",
-      "!python scripts/abundance-dist.py -s bink1.kh a.fa bink1.x.a.hist\n",
-      "!python scripts/abundance-dist.py -s bink1.kh b.fa bink1.x.b.hist\n",
-      "\n",
-      "!python scripts/load-into-counting.py -x 1e7 -k 20 bink2.kh stamps-reads.fa.gz.bink.2\n",
-      "!python scripts/abundance-dist.py -s bink2.kh a.fa bink2.x.a.hist\n",
-      "!python scripts/abundance-dist.py -s bink2.kh b.fa bink2.x.b.hist"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\r\n",
-        "PARAMETERS:\r\n",
-        " - kmer size =    20 \t\t(-k)\r\n",
-        " - n hashes =     4 \t\t(-N)\r\n",
-        " - min hashsize = 1e+07 \t(-x)\r\n",
-        "\r\n",
-        "Estimated memory usage is 4e+07 bytes (n_hashes x min_hashsize)\r\n",
-        "--------\r\n",
-        "Saving hashtable to bink1.kh\r\n",
-        "Loading kmers from sequences in ['stamps-reads.fa.gz.bink.1']\r\n",
-        "making hashtable\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "consuming input stamps-reads.fa.gz.bink.1\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "saving bink1.kh\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "fp rate estimated to be 0.000\r\n",
-        "DONE.\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "hashtable from bink1.kh\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "K: 20\r\n",
-        "HT sizes: [10000019, 10000079, 10000103, 10000121]\r\n",
-        "outputting to bink1.x.a.hist\r\n",
-        "** squashing existing file bink1.x.a.hist\r\n",
-        "preparing hist...\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "hashtable from bink1.kh\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "K: 20\r\n",
-        "HT sizes: [10000019, 10000079, 10000103, 10000121]\r\n",
-        "outputting to bink1.x.b.hist\r\n",
-        "** squashing existing file bink1.x.b.hist\r\n",
-        "preparing hist...\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\r\n",
-        "PARAMETERS:\r\n",
-        " - kmer size =    20 \t\t(-k)\r\n",
-        " - n hashes =     4 \t\t(-N)\r\n",
-        " - min hashsize = 1e+07 \t(-x)\r\n",
-        "\r\n",
-        "Estimated memory usage is 4e+07 bytes (n_hashes x min_hashsize)\r\n",
-        "--------\r\n",
-        "Saving hashtable to bink2.kh\r\n",
-        "Loading kmers from sequences in ['stamps-reads.fa.gz.bink.2']\r\n",
-        "making hashtable\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "consuming input stamps-reads.fa.gz.bink.2\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "saving bink2.kh\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "fp rate estimated to be 0.000\r\n",
-        "DONE.\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "hashtable from bink2.kh\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "K: 20\r\n",
-        "HT sizes: [10000019, 10000079, 10000103, 10000121]\r\n",
-        "outputting to bink2.x.a.hist\r\n",
-        "** squashing existing file bink2.x.a.hist\r\n",
-        "preparing hist...\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "hashtable from bink2.kh\r\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "K: 20\r\n",
-        "HT sizes: [10000019, 10000079, 10000103, 10000121]\r\n",
-        "outputting to bink2.x.b.hist\r\n",
-        "** squashing existing file bink2.x.b.hist\r\n",
-        "preparing hist...\r\n"
-       ]
-      }
-     ],
-     "prompt_number": 51
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "bink1xa = numpy.loadtxt('bink1.x.a.hist')\n",
-      "bink1xb = numpy.loadtxt('bink1.x.b.hist')\n",
-      "bink2xa = numpy.loadtxt('bink2.x.a.hist')\n",
-      "bink2xb = numpy.loadtxt('bink2.x.b.hist')\n"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 52
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "plot(bink1xa[:,0], bink1xa[:,1], label='bink1 x a')\n",
-      "plot(bink1xb[:,0], bink1xb[:,1], label='bink1 x b')\n",
-      "plot(bink2xa[:,0], bink2xa[:,1], label='bink2 x a')\n",
-      "plot(bink2xb[:,0], bink2xb[:,1], label='bink2 x b')\n",
-      "legend()"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "pyout",
-       "prompt_number": 53,
-       "text": [
-        "<matplotlib.legend.Legend at 0x10c13cfd0>"
-       ]
-      },
-      {
-       "output_type": "display_data",
-       "png": "iVBORw0KGgoAAAANSUhEUgAAAXsAAAD9CAYAAABdoNd6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xlc1HX+wPHXDMdwX6KcDioqh3mgApaZSHlkmW5m2ZYd\nuqV2ULZdv9pNc3c7tsO0Erqobbu27djMs6TwFjA1C0ERBRRQLrnvme/vj6+DgMg5N5/n4+FDZuY7\n3+/ni/LmPe/PpZAkSUIQBEGwakpTN0AQBEEwPBHsBUEQ+gER7AVBEPoBEewFQRD6ARHsBUEQ+gER\n7AVBEPqBLoP9kCFDGDNmDBEREURFRQFQVVXF3LlzUavVzJs3j+rq6pbj161bx4gRIwgPD2f37t2G\na7kgCILQbV0Ge4VCQXJyMocOHSI1NRWA+Ph41Go1WVlZBAYGkpCQAEBRURHr168nKSmJ+Ph44uLi\nDNt6QRAEo [...]
-       "text": [
-        "<matplotlib.figure.Figure at 0x10c0c7a90>"
-       ]
-      }
-     ],
-     "prompt_number": 53
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 53
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "` "
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": []
-    }
-   ],
-   "metadata": {}
-  }
- ]
-}
\ No newline at end of file
diff --git a/doc/LICENSE.rst b/doc/LICENSE.rst
index 097af7b..601b77a 100644
--- a/doc/LICENSE.rst
+++ b/doc/LICENSE.rst
@@ -4,7 +4,8 @@
 License
 =======
 
-Copyright (c) 2010-2014, Michigan State University.  All rights reserved.
+Copyright (c) 2010-2015, Michigan State University.
+Copyright (c) 2015, The Regents of the University of California
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
diff --git a/doc/_static/labibi.css b/doc/_static/labibi.css
index 4d13b58..7d21026 100644
--- a/doc/_static/labibi.css
+++ b/doc/_static/labibi.css
@@ -1,4 +1,4 @@
- at import url('default.css');
+ at import url('classic.css');
 
 /* Styles for floating Edit on GitHub box */
 #editor-trap {
diff --git a/doc/conf.py b/doc/conf.py
index e400ab2..d7455d0 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -117,7 +117,7 @@ todo_include_todos = True
 
 # The theme to use for HTML and HTML Help pages.  Major themes that come with
 # Sphinx are currently 'default' and 'sphinxdoc'.
-html_theme = 'default'
+html_theme = 'classic'
 
 # Theme options are theme-specific and customize the look and feel of a theme
 # further.  For a list of options available for each theme, see the
@@ -165,7 +165,7 @@ html_use_smartypants = False
 #html_additional_pages = {}
 
 # If false, no module index is generated.
-#html_use_modindex = True
+html_use_modindex = False
 
 # If false, no index is generated.
 #html_use_index = True
@@ -227,4 +227,5 @@ latex_documents = [
 #latex_appendices = []
 
 # If false, no module index is generated.
-#latex_use_modindex = True
+latex_use_modindex = False
+latex_domain_indices = False
diff --git a/doc/contributors.rst b/doc/contributors.rst
index d05642f..d176399 100644
--- a/doc/contributors.rst
+++ b/doc/contributors.rst
@@ -1,16 +1,53 @@
-.. vim: set filetype=rst
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2010-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
 
-=================================
+*********************************
 Contributors and Acknowledgements
-=================================
+*********************************
 
-khmer is a product of the GED lab at Michigan State University,
+khmer is a product of the Lab for Data Intensive Biology at the University of
+California, Davis (the succesor to the GED lab at Michigan State University),
 
-   http://ged.msu.edu/
+   http://ivory.idyll.org/lab/
 
 ---
 
-C. Titus Brown <ctb at msu.edu> wrote the initial ktable and hashtable
+C. Titus Brown <titus at idyll.org> wrote the initial ktable and hashtable
 implementations, as well as hashbits and counting_hash.
 
 Jason Pell implemented many of the C++ k-mer filtering functions.
@@ -28,6 +65,6 @@ Eric McDonald thoroughly revised many aspects of the code base, made
 much of the codebase thread safe, and otherwise improved performance
 dramatically.
 
-Michael R. Crusoe is the new maintainer of khmer.
+Michael R. Crusoe took over maintainership June, 2013.
 
-MRC 2014-05-07
+Last updated by MRC on 2015-07-31
diff --git a/doc/dev/a-quick-guide-to-testing.rst b/doc/dev/a-quick-guide-to-testing.rst
index 9830c93..7ba696e 100644
--- a/doc/dev/a-quick-guide-to-testing.rst
+++ b/doc/dev/a-quick-guide-to-testing.rst
@@ -1,3 +1,41 @@
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2014-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+
 A quick guide to testing (for khmer)
 ====================================
 
diff --git a/doc/dev/binary-file-formats.rst b/doc/dev/binary-file-formats.rst
index 8359af3..c470848 100644
--- a/doc/dev/binary-file-formats.rst
+++ b/doc/dev/binary-file-formats.rst
@@ -1,3 +1,41 @@
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+
+
 khmer/Oxli Binary File Formats
 ==============================
 
@@ -42,8 +80,6 @@ Countgraph
 
 (a.k.a ``CountingHash``, a Count-min Sketch)
 
-:Preferred extension: '.ct' (count table)
-
 The header is in the format below, again in the order of file offset.
 
 ================== ===== ===== ==============================================
@@ -56,6 +92,7 @@ Use Bigcount        1       6   ``0x01`` if bigcounts is used, else ``0x00``
 K-size              4       7   k-mer length, ``ht._ksize``. [``uint32_t``]
 Number of Tables    1      11   Number of Count-min Sketch tables,
                                 ``ht._n_tables``. [``uint8_t``]
+Occupied Bins       8      12   Number of occupied bins
 ================== ===== ===== ==============================================
 
 Then follows the Countgraph's tables. For each table:
@@ -86,8 +123,6 @@ Nodegraph
 
 (a.k.a ``HashBits``, a Bloom Filter)
 
-:Preferred extension: '.pt' (presence table)
-
 The header is in the format below, again in the order of file offset. Value
 macro definitions are given in parenthesis
 
@@ -100,6 +135,7 @@ File Type           1       5   ``0x02`` (``SAVED_HASHBITS``)
 K-size              4       6   k-mer length, ``ht._ksize``. [``unsigned int``]
 Number of Tables    1      10   Number of Nodegraph tables. ``ht._n_tables``.
                                 [``uint8_t``]
+Occupied Bins       8      11   Number of occupied bins
 ================== ===== ===== ==============================================
 
 Then follows the Nodegraph's tables. For each table:
diff --git a/doc/dev/codebase-guide.rst b/doc/dev/codebase-guide.rst
index c5c77e4..0701220 100644
--- a/doc/dev/codebase-guide.rst
+++ b/doc/dev/codebase-guide.rst
@@ -1,3 +1,41 @@
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2014-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+
 A quick guide to the khmer codebase
 ===================================
 
@@ -7,12 +45,12 @@ This document describes the khmer project's directory layout.
 
 The ChangeLog file lists changes to the codebase, most recent first.
 
-The lib/ directory contains all of the C++ code.
+The ``lib/`` directory contains all of the C++ code.
 
-The khmer/ directory contains the khmer package (khmer/__init__.py etc)
-and the C++-to-Python bridge (khmer/_khmermodule.cc).
+The ``khmer/`` directory contains the `khmer` package (``khmer/__init__.py``,
+etc) and the C++-to-Python bridge (``khmer/_khmermodule.cc``).
 
-The scripts/ and sandbox/ directory contain Python command-line scripts.
+The ``scripts/`` and ``sandbox/`` directory contain Python command-line scripts.
 
-The tests/ directory contains all of the tests.  Each test is a function in
-one of the tests/test*.py files.
+The ``tests/`` directory contains all of the tests.  Each test is a function in
+one of the ``tests/test*.py`` files.
diff --git a/doc/dev/coding-guidelines-and-review.rst b/doc/dev/coding-guidelines-and-review.rst
index a9fc5b0..7c9a692 100644
--- a/doc/dev/coding-guidelines-and-review.rst
+++ b/doc/dev/coding-guidelines-and-review.rst
@@ -1,10 +1,53 @@
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2014-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+
 Coding guidelines and code review checklist
 ===========================================
 
 This document is for anyone who want to contribute code to the khmer
 project, and describes our coding standards and code review checklist.
 
-----
+C++ standards
+-------------
+
+Any feature in C++11 is fine to use. Specifically we support features found in
+GCC 4.8.2. See https://github.com/dib-lab/khmer/issues/598 for an in-depth
+discussion.
 
 Coding standards
 ----------------
@@ -104,6 +147,8 @@ ready for review::
      http://en.wikipedia.org/wiki/Changelog#Format
    - [ ] Was a spellchecker run on the source code and documentation after
      changes were made?
+   - [ ] Do the changes respect streaming IO? (Are they
+     tested for streaming IO?)
    - [ ] Is the Copyright year up to date?
 
 **Note** that after you submit the comment you can check and uncheck
diff --git a/doc/dev/crazy-ideas.rst b/doc/dev/crazy-ideas.rst
index f3ec50d..6b121ab 100644
--- a/doc/dev/crazy-ideas.rst
+++ b/doc/dev/crazy-ideas.rst
@@ -1,4 +1,41 @@
-.. vim: set filetype=rst
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2013-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+
 
 Crazy ideas
 ===========
diff --git a/doc/dev/details.rst b/doc/dev/details.rst
index ee3417f..b6a3ef5 100644
--- a/doc/dev/details.rst
+++ b/doc/dev/details.rst
@@ -1,4 +1,39 @@
-.. vim: set filetype=rst
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2011-2014 Michigan State University
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
 
 Miscellaneous implementation details
 ====================================
diff --git a/doc/dev/development.rst b/doc/dev/development.rst
index 414f914..655d718 100644
--- a/doc/dev/development.rst
+++ b/doc/dev/development.rst
@@ -1,4 +1,40 @@
-.. vim: set filetype=rst textwidth=80
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2012-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
 
 Development miscellany
 ======================
@@ -15,7 +51,7 @@ tag.
 Build framework
 ---------------
 
-'make' should build everything, including tests and "development" code.
+`make` should build everything, including tests and "development" code.
 
 git and GitHub strategies
 -------------------------
@@ -54,13 +90,13 @@ Pipelines
 ---------
 
 All khmer scripts used by a published recommended analysis pipeline must be
-included in scripts/ and meet the standards therein implied.
+included in ``scripts/`` and meet the standards therein implied.
 
 Command line scripts
 --------------------
 
 Python command-line scripts should use '-' instead of '_' in the name.
-(Only filenames containing code for import imported should use _.)
+(Only filenames containing code for import should use _.)
 
 Please follow the command-line conventions used under scripts/.  This
 includes most especially standardization of '-x' to be hash table size,
@@ -83,19 +119,12 @@ Command line thoughts:
 
 ----
 
-All code in scripts/ must have automated tests; see tests/test_scripts.py.
-Otherwise it belongs in sandbox/.
+All code in ``scripts/`` must have automated tests; see
+``tests/test_scripts.py``. Otherwise it belongs in ``sandbox/``.
 
 When files are overwritten, they should only be opened to be overwritten
 after the input files have been shown to exist.  That prevents stupid
-command like mistakes from trashing important files.
-
-It would be nice to allow piping from one command to another where possible.
-But this seems complicated.
-
-CTB: should we squash output files (overwrite them if they exist), or not?
-So far, leaning towards 'not', as that way no one is surprised and loses
-their data.
+command line mistakes from trashing important files.
 
 A general error should be signaled by exit code `1` and success by `0`. Linux
 supports exit codes from `0` to `255` where the value `1` means a general
@@ -115,7 +144,7 @@ Python / C integration
 ----------------------
 
 The Python extension that wraps the C++ core of khmer lives in
-khmer/_khmermodule.CC
+``khmer/_khmermodule.cc``
 
 This wrapper code is tedious and annoying so we use a static analysis tool to
 check for correctness.
diff --git a/doc/dev/for-khmer-developers.rst b/doc/dev/for-khmer-developers.rst
index bbf6368..084ce8e 100644
--- a/doc/dev/for-khmer-developers.rst
+++ b/doc/dev/for-khmer-developers.rst
@@ -1,3 +1,41 @@
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2014-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+   
 A guide for khmer committers
 ============================
 
@@ -13,7 +51,7 @@ rule can be broken under specific conditions when doing a release; see
 :doc:`release`.
 
 Second, need to force another continuous integration run? Put "test
-this please" in a comment.  This can be used to ask our continuous
+this please" in a comment.  This is used to ask our continuous
 integration system to run on someone else's pull request -- by
 default, it only runs on commits from people who have write privileges
 to khmer, so you may need to do this if you're reviewing someone else's
@@ -21,6 +59,6 @@ pull request.
 
 Third, we ask that all contributors set up standing Pull Requests
 while they are working something.  (This is a **requirement** if
-you're in the GED lab.)  This lets us track what's going on. On the
+you're in the DIB lab.)  This lets us track what's going on. On the
 flip side, please do not review pull requests until they are indicated
 as "ready for review".
diff --git a/doc/dev/getting-started.rst b/doc/dev/getting-started.rst
index 8434c0e..c10eb96 100644
--- a/doc/dev/getting-started.rst
+++ b/doc/dev/getting-started.rst
@@ -1,8 +1,40 @@
-.. This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-   Copyright (C) Michigan State University, 2009-2015. It is licensed under
-   the three-clause BSD license; see doc/LICENSE.txt.
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2014-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
    Contact: khmer-project at idyll.org
-
 
 Getting started with khmer development
 ======================================
@@ -153,6 +185,16 @@ One-time Preparation
        sudo brew install cppcheck
 
 
+#. ccache installation:
+
+   Debian and Ubuntu Linux distro users can install ``ccache`` to speed up
+   their compile times::
+
+       sudo apt-get install ccache
+       echo 'export PATH="/usr/lib/ccache:$PATH" # enable ccache' >> ~/.bashrc
+       export PATH="/usr/lib/ccache:$PATH"
+
+
 Building khmer and running the tests
 ------------------------------------
 
@@ -185,7 +227,7 @@ Building khmer and running the tests
 
    You should see lots of output, with something like::
 
-      Ran 360 tests in 10.403s
+      Ran 633 tests in 47.446s
 
       OK
 
@@ -220,6 +262,33 @@ Claiming an issue and starting to develop
    (This pulls in all of the latest changes from whatever we've been
    doing on dib-lab.)
 
+   It is possible that when you do a `git pull` you will get a "merge
+   conflict" -- This is what happens when something changed in the branch you're
+   pulling in in the same place you made a change in your local copy. This
+   frequently happens in the `ChangeLog` file.
+
+   Git will complain loudly about merges and tell you specifically in which
+   files they occurred. If you open the file, you'll see something vaguely
+   like this in the place where the merge occurred::
+
+      <<<<<<< HEAD
+      Changes made on the branch that is being merged into. In most cases,
+      this is the branch that you have currently checked out
+      =======
+      Changes made on the branch that is being merged in, almost certainly
+      master.
+      >>>>>>> abcde1234
+
+   Though there are a variety of tools to assist with resolving merge
+   conflicts they can be quite complicated at first glance and it is usually
+   easy enough to manually resolve the conflict.
+
+   To resolve the conflict you simply have to manually 'meld' the changes
+   together and remove the merge markers.
+
+   After this you'll have to add and commit the merge just like any other set
+   of changes. It's also recommended that you run tests.
+
 #. Create a new branch and link it to your fork on GitHub::
 
       git checkout -b fix/brief_issue_description
@@ -232,9 +301,40 @@ Claiming an issue and starting to develop
 
 #. Make some changes and commit them.
 
-   This will be issue dependent ;).
+   Though this will largely be issue-dependent the basics of committing are
+   simple. After you've made a cohesive set of changes, run the command `git
+   status`. This will display a list of all the files git has noticed you
+   changed. A file in the 'untracked' section are files that haven't existed
+   previously in the repository but git has noticed.
+
+   To commit changes you have to 'stage' them--this is done by issuing the
+   following command::
 
-   (You should visit and read :doc:`coding-guidelines-and-review`.)
+      git add path/to/file
+
+   If you have a large quantity of changes and you don't want to add each file
+   manually you can do ``git add --patch`` which will display each set of
+   changes to you before staging them for commit.
+
+   Once you have staged your changes, it's time to make a commit::
+
+      git commit
+
+   Git will then open your default console text editor to write a commit
+   message -- this is a short (typically 1-3 sentence) description of the
+   changes you've made. Please make your commit message informative but
+   concise -- these messages become part of the 'official' history of the
+   project. 
+
+   Once your changes have been committed, push them up to the remote branch::
+
+      git push
+
+   If this is your first commit on a new branch git will error out, telling
+   you the remote branch doesn't exist -- This is fine, as it will also provide
+   the command to create the branch. Copy/paste/run and you should be set.
+
+   You should also visit and read :doc:`coding-guidelines-and-review`.
 
 #. Periodically update your branch from the main khmer master branch::
 
@@ -246,7 +346,7 @@ Claiming an issue and starting to develop
 
 #. Run the tests and/or build the docs *before* pushing to GitHub::
 
-      make doc test pep8
+      make doc test pep8 diff-cover
 
    Make sure they all pass!
 
@@ -357,3 +457,44 @@ contribution). Then we merge those changes into your local copy of the
 master branch.
 
 Now, you can go back to `Claiming an issue and starting to develop`_.
+
+Advanced merging with git-merge-changelog
+-----------------------------------------
+
+Often one can get a merge conflict due to updates in the ChangeLog. To teach
+Git how to handle these on its own you can install a special merge driver.
+
+On Debian & Ubuntu systems you'll need the `git-merge-changelog` package::
+
+        sudo apt-get install git-merge-changelog
+
+Ubuntu 14.04 LTS users will need to add an external repository that contains a
+backport of the package first before installing::
+
+        sudo apt-add-repository ppa:misterc/gedlab
+        sudo apt-get update
+        sudo apt-get install git-merge-changelog
+
+Everyone should then update their `~/.gitconfig` file with the following::
+
+        [merge "merge-changelog"]
+                  name = GNU-style ChangeLog merge driver
+                  driver = /usr/bin/git-merge-changelog %O %A %B
+
+Pull request cleanup (commit squashing)
+---------------------------------------
+
+Submitters are invited to reduce the numbers of commits in their pull requests
+either via `git rebase -i dib/master` or this recipe::
+
+        git pull # make sure the local is up to date
+        git pull dib master # get up to date
+        # fix any merge conflicts
+        git status # sanity check
+        git diff dib/master # does the diff look correct? (no merge markers)
+        git reset --soft dib/master # un-commit the differences from dib/master
+        git status # sanity check
+        git commit --all # package all differences in one commit
+        git status # sanity check
+        git push # should fail
+        git push --force # override what's in GitHub's copy of the branch/pull request
diff --git a/doc/dev/hackathon.rst b/doc/dev/hackathon.rst
index a74a0f9..d67aee7 100644
--- a/doc/dev/hackathon.rst
+++ b/doc/dev/hackathon.rst
@@ -1,3 +1,40 @@
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2014-2015 Michigan State University
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+
 Hackathon information (July 2014)
 =================================
 
diff --git a/doc/dev/index.rst b/doc/dev/index.rst
index cead1c3..398c1af 100644
--- a/doc/dev/index.rst
+++ b/doc/dev/index.rst
@@ -1,3 +1,41 @@
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2014-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+
 The khmer developer documentation
 =================================
 
diff --git a/doc/dev/release.rst b/doc/dev/release.rst
index cb3da63..9f14505 100644
--- a/doc/dev/release.rst
+++ b/doc/dev/release.rst
@@ -1,4 +1,40 @@
-.. vim: set filetype=rst
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2013-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
 
 ================================
 Releasing a new version of khmer
@@ -40,7 +76,7 @@ release makers, following this checklist by MRC.
 #. Review the issue list for any new bugs that will not be fixed in this
    release. Add them to ``doc/known-issues.txt``
 
-#. Verify that the build is clean: http://ci.ged.msu.edu/job/khmer-master/
+#. Verify that the build is clean: http://ci.oxli.org/job/khmer-master/
 
 #. Submit a build to Coverity Scan if it hasn't been done
    recently. You can get the token from
@@ -221,7 +257,7 @@ cross-platform testing environment.
 Setuptools Bootstrap
 --------------------
 
-ez_setup.py is from https://bitbucket.org/pypa/setuptools/raw/bootstrap/
+`ez_setup.py` is from https://bitbucket.org/pypa/setuptools/raw/bootstrap/
 
 Before major releases it should be examined to see if there are new
 versions available and if the change would be useful
diff --git a/doc/dev/scripts-and-sandbox.rst b/doc/dev/scripts-and-sandbox.rst
index 0fbab08..ed311c6 100644
--- a/doc/dev/scripts-and-sandbox.rst
+++ b/doc/dev/scripts-and-sandbox.rst
@@ -1,3 +1,41 @@
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+
 Command line scripts, ``scripts/``, and ``sandbox/``
 ====================================================
 
@@ -58,23 +96,31 @@ All scripts in scripts/ should have the following options, if they could apply:
 * ``--version`` - should always apply
 * ``--help`` - should always apply
 * ``--force`` - override any sanity checks that may prevent the script from running
-* ``--loadtable`` and ``--savetable`` - where appropriate (see khmer_args.py)
+* ``--loadgraph`` and ``--savegraph`` - where appropriate (see khmer_args.py)
+
+If an option is of type ``type=argparse.FileType('w')`` then you need to also
+specify a ``metavar`` for the documentation and help formatting. Example::
+
+    parser.add_argument('-R', '--report', metavar='report_filename',
+        type=argparse.FileType('w'))
 
 Copyright message
 ~~~~~~~~~~~~~~~~~
 
-Our current Copyright message is::
+The copyright message should be of the form::
 
    #
    # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-   # Copyright (C) Michigan State University, 2009-2015. It is licensed under
+   # Copyright (C) ___WHO___, ___YEAR(s)___. It is licensed under
    # the three-clause BSD license; see doc/LICENSE.txt.
    # Contact: khmer-project at idyll.org
    #
 
-The beginning year should be the first year that this file existed in
-the repo; the end year should be the last year a coding change was
-made in the file.
+Where ___WHO___ is replaced with one or more of "Michigan State University" or
+"The Regents of the University of California" and ___YEAR(s)___ is replaced
+with the year or years the file was created or modified. The copyright
+statement for new files should only refer to "The Regents of the University of
+California".
 
 Upgrading a script from 'sandbox' to 'scripts'
 ----------------------------------------------
diff --git a/doc/index.rst b/doc/index.rst
index 47fcf72..f419c86 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -1,50 +1,103 @@
-.. khmer documentation master file, created by
-   sphinx-quickstart on Wed Aug  4 10:20:23 2010.
-   You can adapt this file completely to your liking, but it should at least
-   contain the root `toctree` directive.
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2010-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
 
-khmer -- k-mer counting & filtering FTW
-=======================================
+###################################################################
+The khmer software for advanced biological sequencing data analysis
+###################################################################
 
-:Authors: Michael R. Crusoe, Greg Edvenson, Jordan Fish, Adina Howe,
-          Luiz Irber, Eric McDonald, Joshua Nahum, Kaben Nanlohy, Humberto
-          Ortiz-Zuazaga, Jason Pell, Jared Simpson, Camille Scott, Ramakrishnan
-          Rajaram Srinivasan, Qingpeng Zhang, and C. Titus Brown
+What is khmer?
+==============
 
-:Contact: khmer-project at idyll.org
-:GitHub: https://github.com/dib-lab/khmer
-:Chat: https://gitter.im/dib-lab/khmer
-:License: BSD
+The khmer software is a set of command-line tools for working with DNA
+shotgun sequencing data from genomes, transcriptomes, metagenomes, and
+single cells.  khmer can make *de novo* assemblies faster, and
+sometimes better. khmer can also identify (and fix) problems with
+shotgun data.  You can read more about khmer in `our software paper
+<https://dx.doi.org/10.12688/f1000research.6924.1>`__.
 
+khmer is free and open source software.
 
-khmer is a library and suite of command line tools for working with
-DNA sequence.  It is primarily aimed at short-read sequencing data
-such as that produced by the Illumina platform.  khmer takes a k-mer-centric
-approach to sequence analysis, hence the name.
+**To install khmer**, you will need a Linux or Mac computer, together with
+Python 2.7 or Python 3.x.   See :doc:`our installation docs <user/install>`
+for detailed instructions.
 
-:doc:`user/install`
+**To use khmer**, you will generally need to work at the UNIX command
+line.  See :doc:`our command line documentation <user/scripts>`.
 
-:doc:`user/getting-help`
+We have **additional documentation** in several places, including
+`protocols for metagenome and mRNAseq assembly
+<https://khmer-protocols.readthedocs.org/>`__ and `recipes for several
+common research tasks <https://khmer-recipes.readthedocs.org/>`__.
+You might also be interested in :doc:`papers using or citing khmer
+<user/biblio>`.
 
-There are two mailing lists dedicated to khmer, an announcements-only list and
-a discussion list. To search their archives and sign-up for them, please visit
-the following URLs:
-    
-    * Discussion: http://lists.idyll.org/listinfo/khmer
+**To get help**, please ask questions on `the khmer mailing list
+<http://lists.idyll.org/listinfo/khmer>`__ or `post an issue on
+GitHub <https://github.com/dib-lab/khmer/issues/new>`__.
 
-    * Announcements: http://lists.idyll.org/listinfo/khmer-announce
+We welcome contributions to the khmer project!  We are friendly and
+supportive of new contributors, and have a :doc:`code of conduct
+<dev/CODE_OF_CONDUCT>`.  Please see our :doc:`docs on getting
+started on khmer development <dev/getting-started>`.
 
-The archives for the khmer list are available at: http://lists.idyll.org/pipermail/khmer/
+Details
+=======
 
-khmer development has largely been supported by AFRI Competitive Grant
-no.  `2010-65205-20361
-<http://ged.msu.edu/downloads/2009-usda-vertex.pdf>`__ from the USDA
-NIFA, and is now funded by the National Human Genome Research
-Institute of the National Institutes of Health under Award Number
-`R01HG007513 <http://ged.msu.edu/downloads/2012-bigdata-nsf.pdf>`__ through
-May 2016, both to C. Titus Brown.
+:Authors: Michael R. Crusoe, Hussien F. Alameldin, Sherine Awad, Elmar
+        Bucher, Adam Caldwell, Reed Cartwright, Amanda Charbonneau, Bede
+        Constantinides, Greg Edvenson, Scott Fay, Jacob Fenton, Thomas Fenzl,
+        Jordan Fish, Leonor Garcia-Gutierrez, Phillip Garland, Jonathan Gluck,
+        Iván González, Sarah Guermond, Jiarong Guo, Aditi Gupta, Joshua R.
+        Herr, Adina Howe, Alex Hyer, Andreas Härpfer, Luiz Irber, Rhys Kidd,
+        David Lin, Justin Lippi, Tamer Mansour, Pamela McA'Nulty, Eric
+        McDonald, Jessica Mizzi, Kevin D. Murray, Joshua R. Nahum, Kaben
+        Nanlohy, Alexander Johan Nederbragt, Humberto Ortiz-Zuazaga, Jeramia
+        Ory, Jason Pell, Charles Pepe-Ranney, Zachary N Russ, Erich Schwarz,
+        Camille Scott, Josiah Seaman, Scott Sievert, Jared Simpson, Connor T.
+        Skennerton, James Spencer, Ramakrishnan Srinivasan, Daniel Standage,
+        James A. Stapleton, Joe Stein, Susan R Steinman, Benjamin Taylor, Will
+        Trimble, Heather L. Wiencko, Michael Wright, Brian Wyss, Qingpeng
+        Zhang, en zyme, C. Titus Brown
 
-Contents:
+:Contact: khmer-project at idyll.org
+:GitHub: https://github.com/dib-lab/khmer
+:Chat: https://gitter.im/dib-lab/khmer
+:License: BSD
 
 .. toctree::
    :maxdepth: 1
@@ -58,3 +111,24 @@ Contents:
    dev/index
    roadmap
    LICENSE
+
+There are two mailing lists dedicated to khmer, an announcements-only list and
+a discussion list. To search their archives and sign-up for them, please visit
+the following URLs:
+    
+    * Discussion: http://lists.idyll.org/listinfo/khmer
+
+    * Announcements: http://lists.idyll.org/listinfo/khmer-announce
+
+The archives for the khmer mailing list are available at: 
+http://lists.idyll.org/pipermail/khmer/
+
+khmer development was initially supported by AFRI Competitive Grant
+no.  `2010-65205-20361
+<http://ged.msu.edu/downloads/2009-usda-vertex.pdf>`__ from the USDA
+NIFA, and is now funded by the National Human Genome Research
+Institute of the National Institutes of Health under Award Number
+`R01HG007513 <http://ged.msu.edu/downloads/2012-bigdata-nsf.pdf>`__
+through May 2016, both to C. Titus Brown.  More recently, we have
+received support from the Gordon and Betty Moore Foundation under
+Award number GBMF4551.
diff --git a/doc/introduction.rst b/doc/introduction.rst
index a3f0382..8d395b1 100644
--- a/doc/introduction.rst
+++ b/doc/introduction.rst
@@ -1,8 +1,44 @@
-.. vim: set filetype=rst
-
-=====================
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2011-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+
+*********************
 Introduction to khmer
-=====================
+*********************
 
 Introduction
 ============
@@ -11,7 +47,7 @@ khmer is a library and toolkit for doing k-mer-based dataset analysis and
 transformations.  Our focus in developing it has been on scaling assembly of 
 metagenomes and mRNA.
 
-khmer can be used for a number of transformations, include inexact 
+khmer can be used for a number of transformations, including inexact 
 transformations (abundance filtering and error trimming) and exact 
 transformations (graph-size filtering, to throw away disconnected reads; and 
 partitioning, to split reads into disjoint sets).  Of these, only partitioning 
@@ -34,16 +70,16 @@ will never incorrectly report a k-mer as being absent when it *is* present.
 This one-sided error makes the Bloom filter very useful for certain kinds of 
 operations.
 
-khmer is also independent of K, and currently works for K <= 32.  We will be 
-integrating code for up to K=64 soon.
+khmer is also independent of a specific k-size (K), and currently works for 
+K <= 32.  We will be integrating code for K<=64 soon.
 
 khmer is implemented in C++ with a Python wrapper, which is what all of the 
 scripts use.
 
-Some important documentation for khmer is provided on the Web sites for 
+Documentation for khmer is provided on the Web sites for 
 `khmer-protocols <http://khmer-protocols.readthedocs.org>`__ and `khmer-recipes 
 <http://khmer-recipes.readthedocs.org>`__. khmer-protocols provides detailed 
-protocols for using khmer to analyze either a transcriptome or a metagenome; 
+protocols for using khmer to analyze either a transcriptome or a metagenome. 
 khmer-recipes provides individual recipes for using khmer in a variety of 
 sequence-oriented tasks such as extracting reads by coverage, estimating a 
 genome or metagenome size from unassembled reads, and error-trimming reads via 
@@ -71,7 +107,7 @@ immediately useful for a few different operations, including:
 
  - optimizing assemblies on various parameters;
 
- - converting FASTA to FASTQ;
+ - converting FASTQ to FASTA;
 
 and a few other random functions.
 
@@ -94,6 +130,7 @@ Copyright and license
 =====================
 
 Portions of khmer are Copyright California Institute of Technology,
-where the exact counting code was first developed; the remainder is
-Copyright Michigan State University.  The code is freely available for
-use and re-use under the BSD License.
+where the exact counting code was first developed. All other code developed
+through 2014 is copyright Michigan State University. Portions are copyright
+Michigan State University and Regents of the University of California.  
+All the code is freely available for use and re-use under the BSD License.
diff --git a/doc/release-notes/index.rst b/doc/release-notes/index.rst
index 340e2cf..48b9800 100644
--- a/doc/release-notes/index.rst
+++ b/doc/release-notes/index.rst
@@ -1,3 +1,41 @@
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+
 Release notes
 =============
 
@@ -9,4 +47,5 @@ Contents:
    :titlesonly:
 
    release-1.*
+   release-2.*
 
diff --git a/doc/release-notes/release-1.0.1.md b/doc/release-notes/release-1.0.1.md
index e2121bc..533a058 100644
--- a/doc/release-notes/release-1.0.1.md
+++ b/doc/release-notes/release-1.0.1.md
@@ -1,3 +1,41 @@
+<!--
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2014 Michigan State University
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+-->
+
 # khmer v1.0.1 release notes
 
 This is bugfix release. Note: the installation instructions have been slightly simplified.
diff --git a/doc/release-notes/release-1.0.1.rst b/doc/release-notes/release-1.0.1.rst
index d491759..dd3e847 100644
--- a/doc/release-notes/release-1.0.1.rst
+++ b/doc/release-notes/release-1.0.1.rst
@@ -1,3 +1,43 @@
+.. raw:: html
+
+   <!--
+      This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+      Copyright (C) 2014 Michigan State University
+      It is licensed under the three-clause BSD license; see LICENSE.
+      Contact: khmer-project at idyll.org
+      
+      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 the Michigan State University 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 THE COPYRIGHT
+      HOLDER OR CONTRIBUTORS 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.
+      
+      Contact: khmer-project at idyll.org
+   -->
+
 khmer v1.0.1 release notes
 ==========================
 
diff --git a/doc/release-notes/release-1.0.md b/doc/release-notes/release-1.0.md
index 598a2c5..ee6d066 100644
--- a/doc/release-notes/release-1.0.md
+++ b/doc/release-notes/release-1.0.md
@@ -1,3 +1,41 @@
+<!--
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2014 Michigan State University
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+-->
+
 # khmer v1.0 release notes
 
 582 changed files with 40,527 additions and 31,772 deletions.
diff --git a/doc/release-notes/release-1.0.rst b/doc/release-notes/release-1.0.rst
index 7b7b3ab..b79da64 100644
--- a/doc/release-notes/release-1.0.rst
+++ b/doc/release-notes/release-1.0.rst
@@ -1,3 +1,43 @@
+.. raw:: html
+
+   <!--
+      This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+      Copyright (C) 2014 Michigan State University
+      It is licensed under the three-clause BSD license; see LICENSE.
+      Contact: khmer-project at idyll.org
+      
+      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 the Michigan State University 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 THE COPYRIGHT
+      HOLDER OR CONTRIBUTORS 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.
+      
+      Contact: khmer-project at idyll.org
+   -->
+
 khmer v1.0 release notes
 ========================
 
diff --git a/doc/release-notes/release-1.1.md b/doc/release-notes/release-1.1.md
index cd01bcb..ac51896 100644
--- a/doc/release-notes/release-1.1.md
+++ b/doc/release-notes/release-1.1.md
@@ -1,3 +1,41 @@
+<!--
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2014 Michigan State University
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+-->
+
 # khmer v1.1 release notes
 
 This is v1.1, a minor version release; this version adds several new scripts.
diff --git a/doc/release-notes/release-1.1.rst b/doc/release-notes/release-1.1.rst
index d08da5c..3bca90f 100644
--- a/doc/release-notes/release-1.1.rst
+++ b/doc/release-notes/release-1.1.rst
@@ -1,3 +1,43 @@
+.. raw:: html
+
+   <!--
+      This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+      Copyright (C) 2014 Michigan State University
+      It is licensed under the three-clause BSD license; see LICENSE.
+      Contact: khmer-project at idyll.org
+      
+      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 the Michigan State University 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 THE COPYRIGHT
+      HOLDER OR CONTRIBUTORS 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.
+      
+      Contact: khmer-project at idyll.org
+   -->
+
 khmer v1.1 release notes
 ========================
 
diff --git a/doc/release-notes/release-1.2.md b/doc/release-notes/release-1.2.md
index 22a6dac..b7f9a13 100644
--- a/doc/release-notes/release-1.2.md
+++ b/doc/release-notes/release-1.2.md
@@ -1,3 +1,41 @@
+<!--
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2014 Michigan State University
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+-->
+
 # khmer v1.2 release notes
 
 This is the v1.2 release of khmer: minor new features and bug fixes. The start
diff --git a/doc/release-notes/release-1.2.rst b/doc/release-notes/release-1.2.rst
index 9a2ee66..89a8dc8 100644
--- a/doc/release-notes/release-1.2.rst
+++ b/doc/release-notes/release-1.2.rst
@@ -1,3 +1,43 @@
+.. raw:: html
+
+   <!--
+      This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+      Copyright (C) 2014 Michigan State University
+      It is licensed under the three-clause BSD license; see LICENSE.
+      Contact: khmer-project at idyll.org
+      
+      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 the Michigan State University 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 THE COPYRIGHT
+      HOLDER OR CONTRIBUTORS 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.
+      
+      Contact: khmer-project at idyll.org
+   -->
+
 khmer v1.2 release notes
 ========================
 
diff --git a/doc/release-notes/release-1.3.md b/doc/release-notes/release-1.3.md
index 9d21c0d..24d8ef7 100644
--- a/doc/release-notes/release-1.3.md
+++ b/doc/release-notes/release-1.3.md
@@ -1,3 +1,40 @@
+<!--
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2015 Michigan State University
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+-->
 # khmer v1.3 release notes
 
 This is the v1.3 release of khmer featuring a new FAST[AQ] parser from the
diff --git a/doc/release-notes/release-1.3.rst b/doc/release-notes/release-1.3.rst
index 5b0b317..67b7c3b 100644
--- a/doc/release-notes/release-1.3.rst
+++ b/doc/release-notes/release-1.3.rst
@@ -1,3 +1,43 @@
+.. raw:: html
+
+   <!--
+      This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+      Copyright (C) 2015 Michigan State University
+      It is licensed under the three-clause BSD license; see LICENSE.
+      Contact: khmer-project at idyll.org
+      
+      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 the Michigan State University 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 THE COPYRIGHT
+      HOLDER OR CONTRIBUTORS 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.
+      
+      Contact: khmer-project at idyll.org
+   -->
+
 khmer v1.3 release notes
 ========================
 
diff --git a/doc/release-notes/release-1.4.md b/doc/release-notes/release-1.4.md
index 793172e..447fe94 100644
--- a/doc/release-notes/release-1.4.md
+++ b/doc/release-notes/release-1.4.md
@@ -1,3 +1,40 @@
+<!--
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2015 Michigan State University
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+-->
 # khmer v1.4 release notes
 
 This is the v1.4 release of khmer featuring the results of our March and April
@@ -75,7 +112,7 @@ The example script for the STAMPS database has been fixed to run correctly #781
 `split-paired-reads.py`: added `-o` option to allow specification of an output
 directory #752 @bede 
 
-Fixed a string formatting and a boundry error in `sample-reads-randomly.py`
+Fixed a string formatting and a boundary error in `sample-reads-randomly.py`
 \#773 @qingpeng #995 @ctb 
 
 CSV output added to `abundance-dist.py`, `abundance-dist-single.py`, and
diff --git a/doc/release-notes/release-1.4.rst b/doc/release-notes/release-1.4.rst
index b9abf6c..1b16026 100644
--- a/doc/release-notes/release-1.4.rst
+++ b/doc/release-notes/release-1.4.rst
@@ -1,3 +1,43 @@
+.. raw:: html
+
+   <!--
+      This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+      Copyright (C) 2015 Michigan State University
+      It is licensed under the three-clause BSD license; see LICENSE.
+      Contact: khmer-project at idyll.org
+      
+      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 the Michigan State University 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 THE COPYRIGHT
+      HOLDER OR CONTRIBUTORS 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.
+      
+      Contact: khmer-project at idyll.org
+   -->
+
 khmer v1.4 release notes
 ========================
 
diff --git a/doc/release-notes/release-2.0.md b/doc/release-notes/release-2.0.md
new file mode 100644
index 0000000..71613fb
--- /dev/null
+++ b/doc/release-notes/release-2.0.md
@@ -0,0 +1,340 @@
+# khmer v2.0 release notes
+
+This is the v2.0 release of khmer and the first from our new lab at the
+University of California, Davis. It features Python 3 compatibility, streaming
+I/O from Unix Pipes, mixed-pair sequence file format support, and a new
+parameter to simplify memory usage. We also have a software paper in-press
+describing the project and the citation reminders have been updated to reflect
+that.
+
+Overall there are an additional 2,380 lines of Python code (mostly tests) and
+283 less lines of C++ (despite adding features). This release is the product of
+over 1,000 commits to the codebase since v1.4.
+
+Documentation is at https://khmer.readthedocs.org/en/v2.0/
+
+## New items of note:
+
+New behavior
+------------
+
+### Streaming I/O from Unix Pipes
+
+All scripts now accept input from named (like `/dev/stdin`, or that
+created using `<( list )` process substituion) and unnamed pipes (like
+output piped in from another program with `|`). The STDIN stream can
+also be specified using a single dash: `-`. #1186 @mr-c #1042 #763 @SherineAwad
+\#1085 @ctb
+
+### New parameter for memory usage, and/or tablesize/number of table parameters.
+
+There is now a `-M`/`--max-memory-usage` parameter that sets the number of
+tables (`-N`/`--n\_tables`) and tablesize (`-x`/`--max-tablesize`) parameters
+automatically to match the desired memory usage. #1106 #621 #1126 #390 #1117
+\#1055 #1050 #1214 #1179 #1133 #1145 @ctb @qingpeng @bocajnotnef  
+
+### Digital normalization script now supports mixed paired and unpaired read input
+
+`normalize-by-median.py` now supports mixed paired and unpaired (or
+"broken-paired") input. Behavior can be forced to either treat all reads
+as singletons or to require all reads be properly paired
+using `--force\_single` or `--paired`, respectively. If `--paired` is
+set, `--unpaired-reads` can be used to include a file of unpaired reads. The
+unpaired reads will be examined after all of the other sequence files.
+`normalize-by-median.py` now has a `--quiet` option to reduce the amount of
+output. #1200 @bocajnotnef
+
+### Mixed-pair sequence file format support
+
+`split-paired-reads.py` `--output-orphaned`/`-0` has been added to allow for
+orphaned reads and give them a file to be sorted into. #847 #1164 @ctb
+
+### Scripts now output columnar data in CSV format by default
+
+All scripts that output any kind of columnar data now do so in CSV
+format, with headers. Previously this had to be enabled with `--csv`.
+(Affects `abundance-dist-single.py`, `abundance-dist.py`, `count-median.py`,
+and `count-overlap.py`.) `normalize-by-median.py --report` also now outputs
+in CSV format. #1011 #1180 @ctb
+
+### Reservoir sampling script extracts paired reads by default
+
+`sample-reads-randomly.py` now retains pairs in the output, by default.
+This can be overridden to match previous behavior with `--force\_single`.
+
+### Most input and output files can be compressed
+
+We support gzip and bzip2 input and output file compression everywhere that it
+makes sense #505 #747 @bocajnotnef
+
+New scripts
+-----------
+
+### Estimate number of unique kmers
+
+`unique-kmers.py` estimates the k-mer cardinality of a dataset using the
+HyperLogLog probabilistic data structure. This allows very low memory
+consumption, which can be configured through an expected error rate.
+Even with low error rate (and higher memory consumption), it is still
+much more efficient than exact counting and alternative methods. It
+supports multicore processing (using OpenMP) and streaming, and so can
+be used in conjunction with other scripts (like `normalize-by-median.py`
+and `filter-abund.py`). This script is the work of @luizirber and the subject
+of a paper in draft. #390 #1239 #1252 #1053 #1072 #1145 #1176 #1207 #1204 #1245
+
+Incompatible changes
+--------------------
+
+### New datastructure and script names
+
+For clarity the Count-Min Sketch based data structure previously known
+as "counting\_hash" or "counting\_table" and variations of these is now
+known as `countgraph`. Likewise with the Bloom Filter based data
+structure previously known at "hashbits", "presence\_table" and
+variations of these is now known as `nodegraph`. Many options relating
+to `table` have been changed to `graph`. #1112 #1209 @mr-c
+
+### Binary file formats have changed
+
+All binary khmer formats (presence tables, counting tables, tag sets,
+stop tags, and partition subsets) have changed. Files are now pre-pended
+with the string `OXLI` to indicate that they are from this project. #519 #1031
+ at mr-c #1159 @luizirber
+
+Files of the above types made in previous versions of khmer are not
+compatible with v2.0; the reverse is also true.
+
+In addition to the `OXLI` string, the Nodegraph and Countgraph file
+format now includes the number of occupied bins. See
+http://khmer.readthedocs.org/en/v2.0/dev/binary-file-formats for details. #1093
+ at ctb @mr-c #1101 #1103 @kdmurray91
+
+### load-graph.py no longer appends .pt to the specified filename
+
+Previously, `load-graph.py` appended a `.pt` extension to the specified
+output filename and partition-graph.py appended a `.pt` to the given
+input filename. Now, `load-graph.py` writes to the specified output
+filename and `partition-graph.py` does not append a `.pt` to the given
+input filename. #1189 #747 @bocajnotnef
+
+### Some reporting options have been turned always on
+
+The total number of unique k-mers will always be reported every time a
+new countgraph is made. The `--report-total-kmers` option has been
+removed from `abundance-dist-single.py`, `filter-abund-single.py`, and
+`normalize-by-median.py` to reflect this. Likewise with `--write-fp-rate`
+for `load-into-counting.py` and `load-graph.py`; the false positive rate
+will always be written to the `.info` files. #1097 #1180 @ctb
+
+### An uncommon error recovery routine was removed
+
+To simplify the codebase `--save-on-failure` and its helper option
+`--dump-frequency` have been removed from `normalize-by-median.py`.
+
+### Single file output option names have been normalized
+
+`--out` is now `--output` for both `normalize-by-median.py` and 
+`trim-low-abund.py`. #1188 #1164 @ctb
+
+### Miscellaneous changes
+
+The common option `--min-tablesize` was renamed to `--max-tablesize` to reflect
+this more desirable behavior.
+
+In conjuction with the new `split-paired-reads.py` `--output-orphaned`
+option, the option `--force-paired`/`-p` has been eliminated.
+
+As CSV format is now the default, the `--csv` option has been removed.
+
+### Removed script
+
+[count-overlap.py](http://khmer.readthedocs.org/en/v1.4.1/user/scripts.html#count-overlap-py)
+has been removed.
+
+## Notable bugs fixed/issues closed:
+
+When `normalize-by-median.py` decides to keep both parts of a pair of reads it
+was only adding the k-mers & counts from one to the countgraph. #1000 #1010
+ at drtamermansour @bocajnotnef
+
+The partition map file format was not robust to truncation and would hang
+waiting for more data. #437 #1037 #1048 @ctb
+
+`extract-paired-reads.py` and `split-paired-reads.py` no longer create default
+files when the user supplies filename(s). #1005 #1132 @kdmurray91
+
+## Additional fixes/features
+
+`find-knots.py` was missing a `--force` option and unit tests. #358 #1078 @ctb
+The check for excessively high false-positive rate has also received a
+`--force` option #1168 @bocajnotnef
+
+A bug leading to an infinite loop with large gzipped countgraphs was found
+\#1038 #1043 @kdmurray91
+
+All scripts that create nodegraphs or countgraphs report the total number of
+unique k-mers. #491 #609 #429 @mr-c
+
+Read pairs from SRA are fully supported. Reported by @macmanes in #1027, fixed
+by @kdmurray91 @SherineAwad in #1173 #1088
+
+### Of interest to users:
+
+Added `Hashtable::get_kmers()`, `get_kmer_hashes()`, and `get_kmer_counts()`
+with corresponding CPython functions. #1047 #1049 @ctb 
+
+The `DEFAULT_DESIRED_COVERAGE` for `normalize-by-median.py` is now 20. #1073
+\#1081 @ctb
+
+FIFOs are no longer seen as empty. #1147 #1163 @bocajnotnef
+
+When the k-size is requested to be larger than 32 (which is unsupported) a
+helpful error message is reported. #1094 #1050 @ctb
+
+We try to report more helpfully during errors, such as suggesting the `--force`
+option when outputs files already exist. #1162 #1170 @bocajnotnef
+
+There is a paper related to `trim-low-abund.py`: "Crossing the streams: a
+framework for streaming analysis of short DNA sequencing reads" and it has been
+added to the CITATION file and program output. #1180 #1130 @ctb
+
+We have dropped support for Python 2.6 #1009 #1180 @ctb
+
+Our user documentation got a bit out of date and has been updated. #1156 #1247
+ at bocajnotnef @mr-c #1104 @kdmurray91 #1267 @ctb Links to lists of publications
+that use khmer have been added #1063 #1222 @mr-c The help text from the scripts
+has also had a thorough cleanup for formatting. #1268 @mr-c
+
+`fastq-to-fasta.py`'s `--n_keep` option has incorrect help text. We now point
+out that all reads with Ns will be dropped by default unless this option is
+supplied. #657 #814 #1208 @ACharbonneau @bocajnotnef
+
+We've updated the URL to the '88m-reads.fa.gz' file. #1242 #1269 @mr-c
+
+ at camillescott designed and implemented an optimization for
+`normalize-by-median.py` #862
+
+`abundance-dist.py` can now be used without counts over 255 with
+`--no-bigcount`. #1067 #909 @drtamermansour @bocajnotnef Its input file
+requirement can no longer be overridden #1201 #1202 @bocajnotnef
+
+khmer v2.0 will be released as a package for the Debian GNU/Linux operating
+system. Big thanks to @kdmurray91 for his assistance. #1148 #1240 The C++
+library, now named liboxli, will have its own package as well.
+
+`sandbox/multi-rename.py` now wraps long FASTA sequences at 80 columns. #450
+\#1136 @SherineAwad
+
+### Of interest to developers:
+
+The khmer project is now a Python 3 codebase with backwards compatibility to
+Python 2.7. Huge credit to @luizirber #978 #922 #1045 #1066 #1089 #1157 #1191
+\#1108 Many developer impacting changes including the file
+`khmer/\_khmermodule.cc` is now `khmer/\_khmer.cc`. #169 #904
+
+ at camillescott did an extensive refactor of the C++ graph traversal code which
+removed a considerable amount of redundant code and will be very useful for
+future work. #1231 #1080
+
+We now use some and allow all C++11 features in the codebase. #598 #1122 @mr-c 
+
+`normalize-by-median.py` was extensively refactored. #1006 #1010 #1057 #1039
+\#1135 #1182 @bocajnotnef @ctb @camillescott
+
+The CPython glue was refactored so that CountingHash and Hashbits inherit from
+Hashtable. #1044 @ctb
+
+The tests no longer stop on the first failed test. #1124 #1134 @ctb and some
+noisy tests were silenced #1125 #1137 @bocajnotnef
+
+The `check_space()` calls were cleaned up. #1167 #1166 #1170 #993 
+
+Developer docs have been expanded #737 #1184 @bocajnotnef #1083 #1282 @ctb
+ at mr-c #1269
+
+A lot of code was deleted: TRACE related code in #274 #1180 @ctb 
+`hashtable_collect_high_abundance_kmers` in #1142 #1044 @ctb `lib/ht-diff.cc`,
+`lib/test-HashTables.cc`, `lib/test-Parser.cc` #1144, @mr-c `bink.ipynb`,
+`lib/graphtest.cc`, `lib/primes.hh` #1289 @mr-c
+
+ at bocajnotnef deleted more unused code and added new tests elsewhere to increase
+testing coverage in #1236. @mr-c had his own go in #1279
+
+cppcheck installation for OSX has been documented #777 #952 #945 @elmbeech
+
+ccache and git-merge-changelog has been documented for Linux users #610 #1122
+\#614 @mr-c
+
+The graphalign parameters can be saved/loaded from disk. In addition the
+`align_forward` method has been introduced. #755 #750 @mr-c @ctb
+
+`labelhash` is now known as `graphlabels` #1032 #1209 @mr-c It is also now a
+'friend' of Hashtable and one can make either a nodegraph or countgraph
+version. These graphlabels can now be saved & loaded from disk. #1021 @ctb
+
+Spelling is hard; we've added instructions on how to run codespell to the
+developer docs. #890 #1203 @bocajnotnef
+
+A redundant and contradictory named test has been removed. Reported by @jgluck
+in #662 fixed by @bocajnotnef in #1220 @SherineAwad contributed some additional
+tests #809 #615.
+
+The new oxli command, while disabled in the v2.0 release, has been added to all
+the QA makefile targets as we continue to refactor the codebase. #1199 #1218
+ at bocajnotnef
+
+The CPython code was audited to ensure that all possible C++ exceptions were
+caught and dealt with. The exception hierarchy was also simplified #1016 #1015
+\#1017 #1151 @kdmurray91 @mr-c
+
+`get_kadian_count` has been removed. #1034 #1194 @ctb
+
+We use argparse's `metavar`s to aid with autogenerated documentation for the
+scripts. This has been documented in the dev docs. #620 #1222 @mr-c
+
+Sometimes one makes a lot of commits while refining a feature or pull request.
+We've documented a field-tested way to turn a pile of commits into a single
+commit without the pain of `git rebase`. #1013 #660 #1222 @mr-c
+
+We use Coverity to test for various issues with our C++ code. The Makefile
+target has been updated for changes on their side. #1007 #1222 @mr-c
+
+There is a new `update()` function to merge two nodegraphs of the same size and
+ksize. #1051 @ctb
+
+Despite the checklist, formatting errors still occur. We must be vigilant!
+\#1075 @luizirber
+
+There is a new `filter_on_median` function. #862 #1077 @camillescott
+
+There are new scripts in the `sandbox/` which output k-mer counts:
+sandbox/{count-kmers.py,count-kmers-single.py}. #983 @ctb
+
+A large effort to make the codebase 'pylint clean' has begun with #1175
+ at bocajnotnef Likewise the cpychecker tool was re-run on the CPython code and
+issues found there were addressed #1196 @mr-c
+
+As repeatedly promised, we've updated our list of contributors to include
+everyone with a commit in git. #1023 @mr-c
+
+`thread_utils.is_pair()` has been dropped in favor of `utils.check_is_pair()`
+\#1284 @mr-c
+
+The Doxygen produced documentation is improving. The location of included
+headers is now autodetected for Doxygen and cppcheck.
+
+## Known issues:
+
+``load-graph.py`` in multithreaded mode will find slightly different number of
+unique kmers. This is being investigated in #1248
+
+## Contributors
+
+ at ctb, @bocajnotnef, @mr-c, @luizirber, @kdmurray91, @SherineAwad,
+ at camillescott, \*@ACharbonneau
+
+\* Indicates new contributors
+
+## Issue reporters
+
+ at jgluck, @ACharbonneau, @macmanes
diff --git a/doc/release-notes/release-2.0.rst b/doc/release-notes/release-2.0.rst
new file mode 100644
index 0000000..97d6eef
--- /dev/null
+++ b/doc/release-notes/release-2.0.rst
@@ -0,0 +1,386 @@
+khmer v2.0 release notes
+========================
+
+This is the v2.0 release of khmer and the first from our new lab at the
+University of California, Davis. It features Python 3 compatibility,
+streaming I/O from Unix Pipes, mixed-pair sequence file format support,
+and a new parameter to simplify memory usage. We also have a software
+paper in-press describing the project and the citation reminders have
+been updated to reflect that.
+
+Overall there are an additional 2,380 lines of Python code (mostly
+tests) and 283 less lines of C++ (despite adding features). This release
+is the product of over 1,000 commits to the codebase since v1.4.
+
+Documentation is at https://khmer.readthedocs.org/en/v2.0/
+
+New items of note:
+------------------
+
+New behavior
+------------
+
+Streaming I/O from Unix Pipes
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+All scripts now accept input from named (like ``/dev/stdin``, or that
+created using ``<( list )`` process substituion) and unnamed pipes (like
+output piped in from another program with ``|``). The STDIN stream can
+also be specified using a single dash: ``-``. #1186 @mr-c #1042 #763
+ at SherineAwad #1085 @ctb
+
+New parameter for memory usage, and/or tablesize/number of table parameters.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+There is now a ``-M``/``--max-memory-usage`` parameter that sets the
+number of tables (``-N``/``--n\_tables``) and tablesize
+(``-x``/``--max-tablesize``) parameters automatically to match the
+desired memory usage. #1106 #621 #1126 #390 #1117 #1055 #1050 #1214
+#1179 #1133 #1145 @ctb @qingpeng @bocajnotnef
+
+Digital normalization script now supports mixed paired and unpaired read input
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+``normalize-by-median.py`` now supports mixed paired and unpaired (or
+"broken-paired") input. Behavior can be forced to either treat all reads
+as singletons or to require all reads be properly paired using
+``--force\_single`` or ``--paired``, respectively. If ``--paired`` is
+set, ``--unpaired-reads`` can be used to include a file of unpaired
+reads. The unpaired reads will be examined after all of the other
+sequence files. ``normalize-by-median.py`` now has a ``--quiet`` option
+to reduce the amount of output. #1200 @bocajnotnef
+
+Mixed-pair sequence file format support
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+``split-paired-reads.py`` ``--output-orphaned``/``-0`` has been added to
+allow for orphaned reads and give them a file to be sorted into. #847
+#1164 @ctb
+
+Scripts now output columnar data in CSV format by default
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+All scripts that output any kind of columnar data now do so in CSV
+format, with headers. Previously this had to be enabled with ``--csv``.
+(Affects ``abundance-dist-single.py``, ``abundance-dist.py``,
+``count-median.py``, and ``count-overlap.py``.)
+``normalize-by-median.py --report`` also now outputs in CSV format.
+#1011 #1180 @ctb
+
+Reservoir sampling script extracts paired reads by default
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+``sample-reads-randomly.py`` now retains pairs in the output, by
+default. This can be overridden to match previous behavior with
+``--force\_single``.
+
+Most input and output files can be compressed
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+We support gzip and bzip2 input and output file compression everywhere
+that it makes sense #505 #747 @bocajnotnef
+
+New scripts
+-----------
+
+Estimate number of unique kmers
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+``unique-kmers.py`` estimates the k-mer cardinality of a dataset using
+the HyperLogLog probabilistic data structure. This allows very low
+memory consumption, which can be configured through an expected error
+rate. Even with low error rate (and higher memory consumption), it is
+still much more efficient than exact counting and alternative methods.
+It supports multicore processing (using OpenMP) and streaming, and so
+can be used in conjunction with other scripts (like
+``normalize-by-median.py`` and ``filter-abund.py``). This script is the
+work of @luizirber and the subject of a paper in draft. #390 #1239 #1252
+#1053 #1072 #1145 #1176 #1207 #1204 #1245
+
+Incompatible changes
+--------------------
+
+New datastructure and script names
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+For clarity the Count-Min Sketch based data structure previously known
+as "counting\_hash" or "counting\_table" and variations of these is now
+known as ``countgraph``. Likewise with the Bloom Filter based data
+structure previously known at "hashbits", "presence\_table" and
+variations of these is now known as ``nodegraph``. Many options relating
+to ``table`` have been changed to ``graph``. #1112 #1209 @mr-c
+
+Binary file formats have changed
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+All binary khmer formats (presence tables, counting tables, tag sets,
+stop tags, and partition subsets) have changed. Files are now pre-pended
+with the string ``OXLI`` to indicate that they are from this project.
+#519 #1031 @mr-c #1159 @luizirber
+
+Files of the above types made in previous versions of khmer are not
+compatible with v2.0; the reverse is also true.
+
+In addition to the ``OXLI`` string, the Nodegraph and Countgraph file
+format now includes the number of occupied bins. See
+http://khmer.readthedocs.org/en/v2.0/dev/binary-file-formats for
+details. #1093 @ctb @mr-c #1101 #1103 @kdmurray91
+
+load-graph.py no longer appends .pt to the specified filename
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Previously, ``load-graph.py`` appended a ``.pt`` extension to the
+specified output filename and partition-graph.py appended a ``.pt`` to
+the given input filename. Now, ``load-graph.py`` writes to the specified
+output filename and ``partition-graph.py`` does not append a ``.pt`` to
+the given input filename. #1189 #747 @bocajnotnef
+
+Some reporting options have been turned always on
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The total number of unique k-mers will always be reported every time a
+new countgraph is made. The ``--report-total-kmers`` option has been
+removed from ``abundance-dist-single.py``, ``filter-abund-single.py``,
+and ``normalize-by-median.py`` to reflect this. Likewise with
+``--write-fp-rate`` for ``load-into-counting.py`` and ``load-graph.py``;
+the false positive rate will always be written to the ``.info`` files.
+#1097 #1180 @ctb
+
+An uncommon error recovery routine was removed
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To simplify the codebase ``--save-on-failure`` and its helper option
+``--dump-frequency`` have been removed from ``normalize-by-median.py``.
+
+Single file output option names have been normalized
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+``--out`` is now ``--output`` for both ``normalize-by-median.py`` and
+``trim-low-abund.py``. #1188 #1164 @ctb
+
+Miscellaneous changes
+~~~~~~~~~~~~~~~~~~~~~
+
+The common option ``--min-tablesize`` was renamed to ``--max-tablesize``
+to reflect this more desirable behavior.
+
+In conjuction with the new ``split-paired-reads.py``
+``--output-orphaned`` option, the option ``--force-paired``/``-p`` has
+been eliminated.
+
+As CSV format is now the default, the ``--csv`` option has been removed.
+
+Removed script
+~~~~~~~~~~~~~~
+
+`count-overlap.py <http://khmer.readthedocs.org/en/v1.4.1/user/scripts.html#count-overlap-py>`__
+has been removed.
+
+Notable bugs fixed/issues closed:
+---------------------------------
+
+When ``normalize-by-median.py`` decides to keep both parts of a pair of
+reads it was only adding the k-mers & counts from one to the countgraph.
+#1000 #1010 @drtamermansour @bocajnotnef
+
+The partition map file format was not robust to truncation and would
+hang waiting for more data. #437 #1037 #1048 @ctb
+
+``extract-paired-reads.py`` and ``split-paired-reads.py`` no longer
+create default files when the user supplies filename(s). #1005 #1132
+ at kdmurray91
+
+Additional fixes/features
+-------------------------
+
+``find-knots.py`` was missing a ``--force`` option and unit tests. #358
+#1078 @ctb The check for excessively high false-positive rate has also
+received a ``--force`` option #1168 @bocajnotnef
+
+A bug leading to an infinite loop with large gzipped countgraphs was
+found #1038 #1043 @kdmurray91
+
+All scripts that create nodegraphs or countgraphs report the total
+number of unique k-mers. #491 #609 #429 @mr-c
+
+Read pairs from SRA are fully supported. Reported by @macmanes in #1027,
+fixed by @kdmurray91 @SherineAwad in #1173 #1088
+
+Of interest to users:
+~~~~~~~~~~~~~~~~~~~~~
+
+Added ``Hashtable::get_kmers()``, ``get_kmer_hashes()``, and
+``get_kmer_counts()`` with corresponding CPython functions. #1047 #1049
+ at ctb
+
+The ``DEFAULT_DESIRED_COVERAGE`` for ``normalize-by-median.py`` is now
+20. #1073 #1081 @ctb
+
+FIFOs are no longer seen as empty. #1147 #1163 @bocajnotnef
+
+When the k-size is requested to be larger than 32 (which is unsupported)
+a helpful error message is reported. #1094 #1050 @ctb
+
+We try to report more helpfully during errors, such as suggesting the
+``--force`` option when outputs files already exist. #1162 #1170
+ at bocajnotnef
+
+There is a paper related to ``trim-low-abund.py``: "Crossing the
+streams: a framework for streaming analysis of short DNA sequencing
+reads" and it has been added to the CITATION file and program output.
+#1180 #1130 @ctb
+
+We have dropped support for Python 2.6 #1009 #1180 @ctb
+
+Our user documentation got a bit out of date and has been updated. #1156
+#1247 @bocajnotnef @mr-c #1104 @kdmurray91 #1267 @ctb Links to lists of
+publications that use khmer have been added #1063 #1222 @mr-c The help
+text from the scripts has also had a thorough cleanup for formatting.
+#1268 @mr-c
+
+``fastq-to-fasta.py``'s ``--n_keep`` option has incorrect help text. We
+now point out that all reads with Ns will be dropped by default unless
+this option is supplied. #657 #814 #1208 @ACharbonneau @bocajnotnef
+
+We've updated the URL to the '88m-reads.fa.gz' file. #1242 #1269 @mr-c
+
+ at camillescott designed and implemented an optimization for
+``normalize-by-median.py`` #862
+
+``abundance-dist.py`` can now be used without counts over 255 with
+``--no-bigcount``. #1067 #909 @drtamermansour @bocajnotnef Its input
+file requirement can no longer be overridden #1201 #1202 @bocajnotnef
+
+khmer v2.0 will be released as a package for the Debian GNU/Linux
+operating system. Big thanks to @kdmurray91 for his assistance. #1148
+#1240 The C++ library, now named liboxli, will have its own package as
+well.
+
+``sandbox/multi-rename.py`` now wraps long FASTA sequences at 80
+columns. #450 #1136 @SherineAwad
+
+Of interest to developers:
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The khmer project is now a Python 3 codebase with backwards
+compatibility to Python 2.7. Huge credit to @luizirber #978 #922 #1045
+#1066 #1089 #1157 #1191 #1108 Many developer impacting changes including
+the file ``khmer/\_khmermodule.cc`` is now ``khmer/\_khmer.cc``. #169
+#904
+
+ at camillescott did an extensive refactor of the C++ graph traversal code
+which removed a considerable amount of redundant code and will be very
+useful for future work. #1231 #1080
+
+We now use some and allow all C++11 features in the codebase. #598 #1122
+ at mr-c
+
+``normalize-by-median.py`` was extensively refactored. #1006 #1010 #1057
+#1039 #1135 #1182 @bocajnotnef @ctb @camillescott
+
+The CPython glue was refactored so that CountingHash and Hashbits
+inherit from Hashtable. #1044 @ctb
+
+The tests no longer stop on the first failed test. #1124 #1134 @ctb and
+some noisy tests were silenced #1125 #1137 @bocajnotnef
+
+The ``check_space()`` calls were cleaned up. #1167 #1166 #1170 #993
+
+Developer docs have been expanded #737 #1184 @bocajnotnef #1083 #1282
+ at ctb @mr-c #1269
+
+A lot of code was deleted: TRACE related code in #274 #1180 @ctb
+``hashtable_collect_high_abundance_kmers`` in #1142 #1044 @ctb
+``lib/ht-diff.cc``, ``lib/test-HashTables.cc``, ``lib/test-Parser.cc``
+#1144, @mr-c ``bink.ipynb``, ``lib/graphtest.cc``, ``lib/primes.hh``
+#1289 @mr-c
+
+ at bocajnotnef deleted more unused code and added new tests elsewhere to
+increase testing coverage in #1236. @mr-c had his own go in #1279
+
+cppcheck installation for OSX has been documented #777 #952 #945
+ at elmbeech
+
+ccache and git-merge-changelog has been documented for Linux users #610
+#1122 #614 @mr-c
+
+The graphalign parameters can be saved/loaded from disk. In addition the
+``align_forward`` method has been introduced. #755 #750 @mr-c @ctb
+
+``labelhash`` is now known as ``graphlabels`` #1032 #1209 @mr-c It is
+also now a 'friend' of Hashtable and one can make either a nodegraph or
+countgraph version. These graphlabels can now be saved & loaded from
+disk. #1021 @ctb
+
+Spelling is hard; we've added instructions on how to run codespell to
+the developer docs. #890 #1203 @bocajnotnef
+
+A redundant and contradictory named test has been removed. Reported by
+ at jgluck in #662 fixed by @bocajnotnef in #1220 @SherineAwad contributed
+some additional tests #809 #615.
+
+The new oxli command, while disabled in the v2.0 release, has been added
+to all the QA makefile targets as we continue to refactor the codebase.
+#1199 #1218 @bocajnotnef
+
+The CPython code was audited to ensure that all possible C++ exceptions
+were caught and dealt with. The exception hierarchy was also simplified
+#1016 #1015 #1017 #1151 @kdmurray91 @mr-c
+
+``get_kadian_count`` has been removed. #1034 #1194 @ctb
+
+We use argparse's ``metavar``\ s to aid with autogenerated documentation
+for the scripts. This has been documented in the dev docs. #620 #1222
+ at mr-c
+
+Sometimes one makes a lot of commits while refining a feature or pull
+request. We've documented a field-tested way to turn a pile of commits
+into a single commit without the pain of ``git rebase``. #1013 #660
+#1222 @mr-c
+
+We use Coverity to test for various issues with our C++ code. The
+Makefile target has been updated for changes on their side. #1007 #1222
+ at mr-c
+
+There is a new ``update()`` function to merge two nodegraphs of the same
+size and ksize. #1051 @ctb
+
+Despite the checklist, formatting errors still occur. We must be
+vigilant! #1075 @luizirber
+
+There is a new ``filter_on_median`` function. #862 #1077 @camillescott
+
+There are new scripts in the ``sandbox/`` which output k-mer counts:
+sandbox/{count-kmers.py,count-kmers-single.py}. #983 @ctb
+
+A large effort to make the codebase 'pylint clean' has begun with #1175
+ at bocajnotnef Likewise the cpychecker tool was re-run on the CPython code
+and issues found there were addressed #1196 @mr-c
+
+As repeatedly promised, we've updated our list of contributors to
+include everyone with a commit in git. #1023 @mr-c
+
+``thread_utils.is_pair()`` has been dropped in favor of
+``utils.check_is_pair()`` #1284 @mr-c
+
+The Doxygen produced documentation is improving. The location of
+included headers is now autodetected for Doxygen and cppcheck.
+
+Known issues:
+-------------
+
+``load-graph.py`` in multithreaded mode will find slightly different
+number of unique kmers. This is being investigated in #1248
+
+Contributors
+------------
+
+ at ctb, @bocajnotnef, @mr-c, @luizirber, @kdmurray91, @SherineAwad,
+ at camillescott, \*@ACharbonneau
+
+\* Indicates new contributors
+
+Issue reporters
+---------------
+
+ at jgluck, @ACharbonneau, @macmanes
diff --git a/doc/requirements.txt b/doc/requirements.txt
index b53f76d..43af8b1 100644
--- a/doc/requirements.txt
+++ b/doc/requirements.txt
@@ -1,2 +1,2 @@
-http://athyra.ged.msu.edu/~mcrusoe/autoprogram/sphinxcontrib-autoprogram-0.1.1-khmerdev-20140331.tar.gz#egg=sphinxcontrib-autoprogram==0.1.1-khmerdev-20140331
+http://ci.oxli.org:8080/userContent/sphinxcontrib-autoprogram-0.1.1-khmerdev-20140331.tar.gz#egg=sphinxcontrib-autoprogram==0.1.1-khmerdev-20140331
 setuptools==3.4.1
diff --git a/doc/roadmap.rst b/doc/roadmap.rst
index cc25cfd..45e0c63 100644
--- a/doc/roadmap.rst
+++ b/doc/roadmap.rst
@@ -1,4 +1,40 @@
-.. vim: set filetype=rst
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2014-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
 
 ***************************
 Roadmap to v2.0, v3.0, v4.0
diff --git a/doc/run-corn-50m.sh b/doc/run-corn-50m.sh
index 8ce5a0b..970fcbe 100644
--- a/doc/run-corn-50m.sh
+++ b/doc/run-corn-50m.sh
@@ -1,10 +1,39 @@
 #! /bin/bash
 #
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see doc/LICENSE.txt. 
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 
 #
 # download test data from:
@@ -12,14 +41,16 @@
 #      https://s3.amazonaws.com/public.ged.msu.edu/khmer/iowa-corn-50m.fa.gz
 #
 
+set -e
+set -x
+
 KHMER_PATH=$1
-export PYTHONPATH=$KHMER_PATH/python
 
 SCRIPTPATH=$KHMER_PATH/scripts
 
 # the next command will create a '50m.ht' and a '50m.tagset',
 # representing the de Bruijn graph
-${SCRIPTPATH}/load-graph.py -k 32 -N 4 -x 12e9 50m iowa-corn-50m.fa.gz 
+${SCRIPTPATH}/load-graph.py -k 32 -N 4 -x 12e9 50m iowa-corn-50m.fa.gz
 
 # this will then partition that graph. should take a while.
 # update threads to something higher if you have more cores.
diff --git a/doc/user/biblio.rst b/doc/user/biblio.rst
index c3275cf..9624e82 100644
--- a/doc/user/biblio.rst
+++ b/doc/user/biblio.rst
@@ -1,17 +1,63 @@
-.. vim: set filetype=rst
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2013-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
 
-An incomplete bibliography of papers using khmer
-================================================
+Papers using khmer
+==================
 
-Digital normalization
----------------------
+khmer was first published in `Scaling metagenome sequence assembly
+with probabilistic de Bruijn graphs, Pell et al., 2012
+<http://www.pnas.org/content/109/33/13272.full>`__.
 
-Multiple Single-Cell Genomes Provide Insight into Functions of
-Uncultured Deltaproteobacteria in the Human Oral Cavity.  Campbell et
-al., PLoS One, 2013, doi:10.1371/journal.pone.0059361.  [ `paper link <http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0059361>`__ ]
+Since then, we have `published several additional papers
+<http://www.ncbi.nlm.nih.gov/sites/myncbi/1ruvipqAmaMkN/collections/48107445/public/>`__.
 
-Insights into archaeal evolution and symbiosis from the genomes of a
-nanoarchaeon and its inferred crenarchaeal host from Obsidian Pool,
-Yellowstone National Park.  Podar et al., Biology Direct, 2013
-doi:10.1186/1745-6150-8-9.
-[ `paper link <http://www.biology-direct.com/content/8/1/9/abstract>`__ ]
+Please also see `the instructions for citing our papers and software
+<https://github.com/dib-lab/khmer/blob/master/CITATION>`__.
+
+Biological uses outside of the group
+------------------------------------
+
+See `this list of papers <http://www.ncbi.nlm.nih.gov/sites/myncbi/1ruvipqAmaMkN/collections/48107393/public/>`__ for publications using khmer to analyze
+their sequencing data.
+
+Tools building on khmer concepts
+--------------------------------
+
+Several `research papers
+<http://www.ncbi.nlm.nih.gov/sites/myncbi/1ruvipqAmaMkN/collections/48101567/public/>`__
+have built off of concepts introduced in or elaborated on khmer.
diff --git a/doc/user/blog-posts.rst b/doc/user/blog-posts.rst
index ab939c7..7ab78b3 100644
--- a/doc/user/blog-posts.rst
+++ b/doc/user/blog-posts.rst
@@ -1,4 +1,40 @@
-.. vim: set filetype=rst
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2010-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
 
 =======================================
 Blog posts and additional documentation
@@ -14,7 +50,7 @@ described in this blog post:
 
 A test data set (soil metagenomics, 88m reads, 10gb) is here:
 
-   http://angus.ged.msu.edu.s3.amazonaws.com/88m-reads.fa.gz
+   http://ci.oxli.org/userContent/88m-reads.fa.gz
 
 Illumina read abundance profiles
 ================================
diff --git a/doc/user/choosing-table-sizes.rst b/doc/user/choosing-table-sizes.rst
index caba889..09db715 100644
--- a/doc/user/choosing-table-sizes.rst
+++ b/doc/user/choosing-table-sizes.rst
@@ -1,27 +1,67 @@
-.. vim: set filetype=rst
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2012-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
 
 ==========================
 Setting khmer memory usage
 ==========================
 
 If you look at the documentation for the scripts (:doc:`scripts`) you'll
-see a :option:`-M` parameter that sets the maximum memory usage for
-any script that uses k-mer counting tables or k-mer graphs.  What is this?
+see a :option:`-M <load-into-counting.py -M>` parameter that sets the maximum
+memory usage for any script that uses k-mer counting tables or k-mer graphs. 
+What is this?
 
 khmer uses a special data structure that lets it store counting tables
 and k-mer graphs in very low memory; the trick is that you must fix
 the amount of memory khmer can use before running it. (See `Pell et
 al., 2012 <http://www.ncbi.nlm.nih.gov/pubmed/22847406>`__ and `Zhang
 et al., 2014 <http://www.ncbi.nlm.nih.gov/pubmed/25062443>`__ for the
-details.)  This is what the :option:`-M` parameter does.
+details.)  This is what the :option:`-M <load-into-counting.py -M>` parameter
+does.
 
 If you set it too low, khmer will warn you to set it higher at the end.
 See below for some good choices for various kinds of data.
 
-**Note for khmer 1.x users:** as of khmer 2.0, the :option:`-M`
-parameter sets the :option:`-N`/:option:`--n_tables` and
-:option:`-x`/:option:`--max_tablesize` parameters automatically.
-You can still set these parameters directly if you wish.
+**Note for khmer 1.x users:** As of khmer 2.0, the :option:`-M
+<load-into-counting.py -M>` parameter sets the
+:option:`-N <load-into-counting.py -N>`/:option:`--n_tables
+<load-into-counting.py --n_tables>` and :option:`-x <load-into-counting.py -x>`
+/:option:`--max-tablesize <load-into-counting.py --max-tablesize>` parameters
+automatically. You can still set these parameters directly if you wish.
 
 The really short version
 ========================
@@ -41,7 +81,7 @@ This parameter specifies the maximum memory usage of the primary data
 structure in khmer, which is basically N big hash tables of size x.
 The **product** of the number of hash tables and the size of the hash
 tables specifies the total amount of memory used, which is what the
-:option:`-M` parameter sets.
+:option:`-M <load-into-counting.py -M>` parameter sets.
 
 These tables are used to track k-mers.  If they are too small, khmer
 will fail in various ways (and will complain), but there is no harm
@@ -51,13 +91,13 @@ you of the total memory usage, and (at the end) will complain if it's
 too small.
 
 Life is a bit more complicated than this, however, because some scripts --
-load-into-counting and load-graph -- keep ancillary information that will
-consume memory beyond this table data structure.  So if you run out of
-memory, decrease the table size.
+:program:`load-into-counting.py` and :program:`load-graph.py` -- keep
+ancillary information that will consume memory beyond this table data
+structure.  So if you run out of memory, decrease the table size.
 
 Also see the rules of thumb, below.
 
-The real full version
+The long version
 =====================
 
 khmer's scripts, at their heart, represents k-mers in a very memory
@@ -69,10 +109,11 @@ means that there are false positives: the less memory you use, the
 more likely it is that khmer will think that k-mers are present when
 they are not, in fact, present.
 
-Digital normalization (normalize-by-median and filter-abund) uses
-the Count-Min Sketch data structure.
+Digital normalization (:program:`normalize-by-median.py` and
+:program:`filter-abund.py`) uses the Count-Min Sketch data structure.
 
-Graph partitioning (load-graph etc.) uses the Bloom filter data structure.
+Graph partitioning (:program:`load-graph.py` etc.) uses the Bloom filter data
+structure.
 
 The practical ramifications of this are pretty cool.  For example,
 your digital normalization is guaranteed not to increase in memory
diff --git a/doc/user/examples.rst b/doc/user/examples.rst
index d7443ea..262cb1d 100644
--- a/doc/user/examples.rst
+++ b/doc/user/examples.rst
@@ -1,16 +1,57 @@
-.. vim: set filetype=rst
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2013-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
 
+**************
 A few examples
-==============
+**************
 
-See the 'examples' subdirectory for complete examples.
+See the `examples <https://github.com/dib-lab/khmer/tree/stable/examples>`__
+directory for complete examples.
 
 STAMPS data set
----------------
+===============
 
 The 'stamps' data set is a fake metagenome-like data set containing
 two species, mixed at a 10:1 ratio.  The source genomes are
-in 'data/stamps-genomes.fa'.  The reads file is in 'data/stamps-reads.fa.gz',
+in `data/stamps-genomes.fa
+<https://github.com/dib-lab/khmer/tree/stable/data/stamps-genomes.fa>`__. 
+The reads file is in `data/stamps-reads.fa.gz
+<https://github.com/dib-lab/khmer/tree/stable/data/stamps-reads.fa.gz>`__,
 and consists of 100-base reads with a 1% error rate.
 
 The example shows how to construct k-mer abundance histograms, as well
@@ -18,9 +59,9 @@ as the effect of digital normalization and partitioning on the k-mer
 abundance distribution.
 
 See `the script for running everything
-<https://github.com/dib-lab/khmer/blob/master/examples/stamps/do.sh>`__
+<https://github.com/dib-lab/khmer/blob/stable/examples/stamps/do.sh>`__
 and `the IPython Notebook
-<http://nbviewer.ipython.org/urls/raw.github.com/dib-lab/khmer/master/examples/stamps%2520k-mer%2520distributions.ipynb>`__.
+<http://nbviewer.ipython.org/urls/raw.github.com/dib-lab/khmer/stable/examples/stamps%2520k-mer%2520distributions.ipynb>`__.
 
 For an overall discussion and some slides to explain what's going on,
 visit `the Web site for a 2013 HMP metagenome assembly webinar that
diff --git a/doc/user/galaxy.rst b/doc/user/galaxy.rst
index 763b958..bc3c644 100644
--- a/doc/user/galaxy.rst
+++ b/doc/user/galaxy.rst
@@ -1,4 +1,40 @@
-.. vim: set filetype=rst
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2013-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
 
 Deploying the khmer project tools on Galaxy
 ===========================================
@@ -26,14 +62,14 @@ Single Output Usage
 For one or more files into a single file:
 
 #. Choose 'Normalize By Median' from the 'khmer protocols' section of the
-'Tools' menu.
+   'Tools' menu.
 
 #. Compatible files already uploaded to your Galaxy instance should be listed.
-If not then you may need to `set their datatype manually
-<https://wiki.galaxyproject.org/Learn/Datatypes>`__.
+   If not then you may need to `set their datatype manually
+   <https://wiki.galaxyproject.org/Learn/Datatypes>`__.
 
 #. After selecting the input files specify if they are paired-interleaved
-or not.
+   or not.
 
 #. Specify the sample type or show the advanced parameters to set the tablesize
-yourself. Consult :doc:`../user/choosing-table-sizes` for assistance.
+   yourself. Consult :doc:`../user/choosing-table-sizes` for assistance.
diff --git a/doc/user/getting-help.rst b/doc/user/getting-help.rst
index e84ff67..d335d3e 100644
--- a/doc/user/getting-help.rst
+++ b/doc/user/getting-help.rst
@@ -1,4 +1,40 @@
-.. vim: set filetype=rst
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
 
 ===============
 How to get help
@@ -27,7 +63,8 @@ Mailing List
 ------------
 
 The primary way to get help is through the khmer discussion list:
-http://lists.idyll.org/listinfo/khmer
+http://lists.idyll.org/listinfo/khmer, though we are also available for
+closer-to-realtime support via `Gitter <https://gitter.im/dib-lab/khmer>`_. 
 
 Asking a question
 -----------------
@@ -50,5 +87,5 @@ Asking a question
 GitHub
 ------
 
-You are also welcome to report an issue you are having using GitHub::
+You are also welcome to report an issue you are having using GitHub:
 https://github.com/dib-lab/khmer/issues/new
diff --git a/doc/user/guide.rst b/doc/user/guide.rst
index 8f3714c..d32e45d 100644
--- a/doc/user/guide.rst
+++ b/doc/user/guide.rst
@@ -1,4 +1,40 @@
-.. vim: set filetype=rst
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2011-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
 
 An assembly handbook for khmer - rough draft
 ############################################
@@ -11,7 +47,7 @@ about.  Moreover, our assembly strategies themselves are also under
 constant evolution as we do more research and find ever-wider
 applicability of our approaches.
 
-Note, this is an exact copy of `Titus' blog post, here
+Note, this is modified from `Titus' blog post, here
 <http://ivory.idyll.org/blog/an-assembly-handbook-for-khmer.html>`__
 -- go check the bottom of that for comments.
 
@@ -25,12 +61,6 @@ Pavangadkar, Likit Preeyanon, and others.
 Introduction
 ~~~~~~~~~~~~
 
-khmer is a general `framework for low-memory k-mer counting, filtering,
-and advanced trickery <http://khmer.readthedocs.org/en/latest/>`__.
-
-The latest source is always available `here
-<https://github.com/dib-lab/khmer>`__.
-
 khmer is really focused on short read data, and, more specifically,
 Illumina, because that's where we have a too-much-data problem.
 However, a lot of the prescriptions below can be adapted to longer
@@ -39,51 +69,21 @@ read technologies such as 454 and Ion Torrent without much effort.
 Don't try to use our k-mer approaches with PacBio -- the error rate is
 too high.
 
-There are currently two papers available on khmer: the `partitioning
-paper
-<http://pnas.org/content/early/2012/07/25/1121464109.abstract>`__ and
-the `digital normalization paper <http://arxiv.org/abs/1203.4802>`__.
-
 There are many blog posts about this stuff on `Titus Brown's blog
 <http://ivory.idyll.org/blog/>`__.  We will try to link them in where
 appropriate.
 
-Asking for help
-~~~~~~~~~~~~~~~
-
-There's some documentation here:
-
-   https://khmer.readthedocs.org/en/latest/
-
-There's also a khmer mailing list at lists.idyll.org that you can use to
-get help with khmer.  To sign up, just go to 
-`the khmer lists page <http://lists.idyll.org/listinfo/khmer>`__ and
-subscribe.
-
 Preparing your sequences
 ~~~~~~~~~~~~~~~~~~~~~~~~
 
 Do all the quality filtering, trimming, etc. that you think you should do.
 
-Most of the khmer tools currently work "out of the box" on interleaved
-paired-end data.  Ask on the list if you're not sure.
+The khmer tools work "out of the box" on interleaved paired-end data.
 
 All of our scripts will take in .fq or .fastq files as FASTQ, and all
 other files as FASTA.  gzip files are always accepted.  Let us know if
 not; that's a bug!
 
-Most scripts *output* FASTA, and some mangle headers.  Sorry.  We're
-working on outputting FASTQ for FASTQ input, and removing any header
-mangling.
-
-Picking k-mer table sizes and k parameters
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-For k-mer table sizes, read :doc:`choosing-table-sizes`
-
-For k-mer sizes, we recommend k=20 for digital normalization and k=32
-for partitioning; then assemble with a variety of k parameters.
-
 Genome assembly, including MDA samples and highly polymorphic genomes
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -92,20 +92,24 @@ Genome assembly, including MDA samples and highly polymorphic genomes
 Broadly, normalize each insert library separately, in the following way:
 
 For high-coverage libraries (> ~50x), do three-pass digital
-normalization: run normalize-by-median to C=20 and then run
-filter-abund with C=1.  Now split out the remaining
+normalization: run :program:`normalize-by-median.py` with :option:`--cutoff=20
+<normalize-by-median.py --cutoff>` and then run :program:`filter-abund.py` with
+:option:`--cutoff=1 <filter-abund.py --cutoff>`.  Now split out the remaining
 paired-end/interleaved and single-end reads using
-strip-and-split-for-assembly, and normalize-by-median the paired-end and
-single-end files to C=5 (in that order).
+:program:`extract-paired-reads.py`, and run :program:`normalize-by-median.py`
+on the paired-end and single-end files (using :option:`--unpaired-reads
+<normalize-by-median.py --unpaired-reads>`) with :option:`--cutoff=5
+<normalize-by-median.py --cutoff>`.
 
 For low-coverage libraries (< 50x) do single-pass digital normalization:
-run normalize-by-median to C=10.
+run :program:`normalize-by-median.py` to :option:`--cutoff=10
+<normalize-by-median.py --cutoff>`.
 
 2. Extract any remaining paired-end reads and lump remaining orphan
-reads into singletons using strip-and-split-for-assembly
+   reads into singletons using :program:`extract-paired-reads.py`
 
 3. Then assemble as normal, with appropriate insert size specs
-etc. for the paired end reads.
+   etc. for the paired end reads.
 
 You can read about this process in the `digital normalization paper
 <http://arxiv.org/abs/1203.4802>`__.
@@ -114,14 +118,14 @@ mRNAseq assembly
 ~~~~~~~~~~~~~~~~
 
 1. Apply single-pass digital normalization.
-
-Run normalize-by-median to C=20.
+   Run :program:`normalize-by-median.py` with :option:`--cutoff=20
+   <normalize-by-median.py --cutoff>`.
 
 2. Extract any remaining paired-end reads and lump remaining orphan
-reads into singletons using strip-and-split-for-assembly
+   reads into singletons using :program:`extract-paired-reads.py`
 
 3. Then assemble as normal, with appropriate insert size specs
-etc. for the paired end reads.
+   etc. for the paired end reads.
 
 You can read about this process in the `digital normalization paper
 <http://arxiv.org/abs/1203.4802>`__.
@@ -130,17 +134,22 @@ Metagenome assembly
 ~~~~~~~~~~~~~~~~~~~
 
 1. Apply single-pass digital normalization.
-
-Run normalize-by-median to C=20 (we've also found C=10 works fine).
-
-2. Run filter-below-abund with C=50 (if you diginormed to C=10) or
-C=100 (if you diginormed to C=20);
-
-3. Partition reads with load-graph, etc. etc.
+   Run :program:`normalize-by-median.py` with :option:`--cutoff=20
+   <normalize-by-median.py --cutoff>` (we've also found :option:`--cutoff=10
+   <normalize-by-median.py --cutoff>` works
+   fine).
+
+2. Run ``sandbox/filter-below-abund.py`` with ``--cutoff=50`` (if you
+   ran :program:`normalize-by-median.py` with :option:`--cutoff=10
+   <normalize-by-median.py --cutoff>`) or wiht ``--cutoff=100`` if you ran
+   :program:`normalize-by-median.py` with :option:`--cutoff=20
+   <normalize-by-median.py --cutoff>`)
+ 
+3. Partition reads with :program:`load-graph.py`, etc. etc.
 
 4. Assemble groups as normal, extracting paired-end reads and lumping
-remaining orphan reads into singletons using
-strip-and-split-for-assembly.
+   remaining orphan reads into singletons using
+   :program:`extract-paired-reads.py`.
 
 (We actually use Velvet at this point, but there should be no harm in
 using a metagenome assembler such as MetaVelvet or MetaIDBA or
@@ -156,16 +165,16 @@ Metatranscriptome assembly
 
 (Not tested by us!)
 
-1. Apply single-pass digital normalization.
-
-Run normalize-by-median to C=20.
+1. Apply single-pass digital normalization by running
+   :program:`normalize-by-median.py` with :option:`--cutoff=20
+   <normalize-by-median.py --cutoff>`.
 
 2. Extract any remaining paired-end reads and lump remaining orphan
-reads into singletons using strip-and-split-for-assembly
+   reads into singletons using :program:`extract-paired-reads.py`.
 
 3. Then assemble with a genome or metagenome assembler, *not* an
-mRNAseq assembler. Use appropriate insert size specs etc. for the
-paired end reads.
+   mRNAseq assembler. Use appropriate insert size specs etc. for the
+   paired end reads.
 
 Preprocessing Illumina for other applications
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -179,14 +188,15 @@ correcting PacBio reads
 <http://www.ncbi.nlm.nih.gov/pubmed?term=22750884>`__.
 
 Our suggestion for this, based on no evidence whatsoever, is to
-diginorm the Illumina data to C=20.
+run :program:`normalize-by-median.py` with :option:`--cutoff=20
+<normalize-by-median.py --cutoff>` on the Illumina data.
 
 Quantifying mRNAseq or metagenomes assembled with digital normalization
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 For now, khmer only deals with assembly! So: assemble.  Then, go back
 to your original, unnormalized reads, and map those to your assembly
-with e.g. bowtie.  Then count as you normally would :).
+with e.g. bowtie.  Then count as you normally would).
 
 Philosophy of digital normalization
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -199,16 +209,17 @@ you should load in paired end reads, or longer reads, first.
 Iterative and independent normalization
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-You can use :option:`--loadtable` and :option:`--savetable` to do iterative
+You can use :option:`--loadgraph <normalize-by-median.py --loadgraph>` and
+:option:`--savegraph <normalize-by-median.py --savegraph>` to do iterative
 normalizations on multiple files in multiple steps. For example, break ::
 
   normalize-by-median.py [ ... ] file1.fa file2.fa file3.fa
 
 into multiple steps like so::
 
-  normalize-by-median.py [ ... ] --savetable file1.ct file1.fa
-  normalize-by-median.py [ ... ] --loadtable file1.ct --savetable file2.ct file2.fa
-  normalize-by-median.py [ ... ] --loadtable file2.ct --savetable file3.ct file3.fa
+  normalize-by-median.py [ ... ] --savegraph file1.ct file1.fa
+  normalize-by-median.py [ ... ] --loadgraph file1.ct --savegraph file2.ct file2.fa
+  normalize-by-median.py [ ... ] --loadgraph file2.ct --savegraph file3.ct file3.fa
 
 The results should be identical!
 
@@ -237,10 +248,10 @@ For a cleverer approach that we will someday implement, read `the
 Beachcomber's Dilemma
 <http://ivory.idyll.org/blog/beachcombers-dilemma.html>`__.
 
-Validating and comparing assemblies
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.. Validating and comparing assemblies
+.. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-More here soon :).
+.. More here soon :).
 
 .. Check/validate assembly - look at high abundance kmers.
 .. @@error trimming
diff --git a/doc/user/index.rst b/doc/user/index.rst
index c8f51f4..77fd37d 100644
--- a/doc/user/index.rst
+++ b/doc/user/index.rst
@@ -1,3 +1,41 @@
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2014-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+
 The khmer user documentation
 ============================
 
diff --git a/doc/user/install.rst b/doc/user/install.rst
index c3b49db..5cc1815 100644
--- a/doc/user/install.rst
+++ b/doc/user/install.rst
@@ -1,4 +1,40 @@
-.. vim: set filetype=rst
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2010-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
 
 ============================
 Installing and running khmer
@@ -62,11 +98,13 @@ Installing khmer inside the virtualenv
 Run the tests
 ^^^^^^^^^^^^^
 
-After installing you can run the embedded test suite::
+After installing you can run the embedded test suite. If you are running an
+OSX system you should also add `!linux` to prevent linux-specific tests from
+failing.::
 
-      nosetests khmer --attr '!known_failing'
+      nosetests khmer --attr '!known_failing,!huge'
 
 If the nosetests binary isn't installed then::
 
       pip2 install khmer[tests]
-      nosetests khmer --attr '!known_failing'
+      nosetests khmer --attr '!known_failing,!huge'
diff --git a/doc/user/known-issues.rst b/doc/user/known-issues.rst
index b6ab542..7842237 100644
--- a/doc/user/known-issues.rst
+++ b/doc/user/known-issues.rst
@@ -1,11 +1,44 @@
-.. vim: set filetype=rst
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2014-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
 
 Known Issues
 ============
 
-Some users have reported that normalize-by-median.py will utilize more
-memory than it was configured for. This is being investigated in
-https://github.com/dib-lab/khmer/issues/266
-
-Some scripts only output FASTA even if given a FASTQ file. This issue
-is being tracked in https://github.com/dib-lab/khmer/issues/46
+``load-graph.py`` in multithreaded mode will find slightly different number of
+unique kmers. This is being investigated in
+https://github.com/dib-lab/khmer/issues/1248
diff --git a/doc/user/partitioning-big-data.rst b/doc/user/partitioning-big-data.rst
index 1b5dec7..2b098bc 100644
--- a/doc/user/partitioning-big-data.rst
+++ b/doc/user/partitioning-big-data.rst
@@ -1,4 +1,40 @@
-.. vim: set filetype=rst
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2010-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
 
 =========================================
 Partitioning large data sets (50m+ reads)
@@ -55,7 +91,7 @@ https://s3.amazonaws.com/public.ged.msu.edu/khmer/iowa-corn-50m.fa.gz
   
   # the next command will create a '50m.ct' and a '50m.tagset',
   # representing the de Bruijn graph
-  load-graph.py -k 32 -N 4 -x 16e9 50m iowa-corn-50m.fa.gz 
+  load-graph.py -k 32 -N 4 -x 16e9 50m iowa-corn-50m.fa.gz
   
   # this will then partition that graph. should take a while.
   # update threads to something higher if you have more cores.
@@ -100,7 +136,7 @@ https://s3.amazonaws.com/public.ged.msu.edu/khmer/iowa-corn-50m.fa.gz
   # NOTE: 'load-graph.py' uses the file extension to determine
   # if the file is formatted as FASTA or FASTQ. The default is
   # fasta, therefore if your files are fastq formatted you need
-  # to append 'fastq' to the name so that 'load-graph.py' 
+  # to append 'fastq' to the name so that 'load-graph.py'
   # will parse the file correctly
   load-graph.py -x 8e9 lumpfilt corn-50m.lump.fa.stopfilt
   partition-graph.py -T 4 lumpfilt
diff --git a/doc/user/scripts.rst b/doc/user/scripts.rst
index 8dfbcd5..e805c2d 100644
--- a/doc/user/scripts.rst
+++ b/doc/user/scripts.rst
@@ -1,18 +1,55 @@
-.. vim: set filetype=rst
-
-==============================
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2010-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+
+******************************
 khmer's command-line interface
-==============================
+******************************
 
 The simplest way to use khmer's functionality is through the command
-line scripts, located in the scripts/ directory of the khmer
-distribution.  Below is our documentation for these scripts.  Note
-that all scripts can be given :option:`-h` which will print out
+line scripts, located in the `scripts/
+<https://github.com/dib-lab/khmer/tree/stable/scripts>`__ directory of the
+khmer distribution.  Below is our documentation for these scripts.  Note
+that all scripts can be given ``-h``/``--help`` which will print out
 a list of arguments taken by that script.
 
 Scripts that use k-mer counting tables or k-mer graphs take an
-:option:`-M` parameter, which sets the maximum memory usage in bytes.
-This should generally be set as high as possible; see
+:option:`-M <load-into-counting.py -M>` parameter, which sets the maximum
+memory usage in bytes. This should generally be set as high as possible; see
 :doc:`choosing-table-sizes` for more information.
 
 1. :ref:`scripts-counting`
@@ -23,11 +60,9 @@ This should generally be set as high as possible; see
 .. note::
  
    Almost all scripts take in either FASTA and FASTQ format, and
-   output the same.  Some scripts may only recognize FASTQ if the file
-   ending is '.fq' or '.fastq', at least for now.
+   output the same.
 
-   Files ending with '.gz' will be treated as gzipped files, and
-   files ending with '.bz2' will be treated as bzip2'd files.
+   Gzip and bzip2 compressed files are detected automatically. 
 
 .. _scripts-counting:
 
diff --git a/doc/whats-new-2.0.rst b/doc/whats-new-2.0.rst
index 386d4d3..346fc1c 100644
--- a/doc/whats-new-2.0.rst
+++ b/doc/whats-new-2.0.rst
@@ -1,28 +1,104 @@
-.. vim: set filetype=rst
-
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+
+************************
 What's New In khmer 2.0?
-########################
+************************
 
 New behavior
 ============
 
+Streaming I/O from Unix Pipes
+-----------------------------
+
+All scripts now accept input from named (like ``/dev/stdin``, or that created
+using ``<( list )`` process substituion) and unamed pipes (like output piped in
+from another program with ``|``). The STDIN stream can also be specified using
+a single dash: ``-``.
+
+New parameter for memory usage, and/or tablesize/number of table parameters.
+----------------------------------------------------------------------------
+
+There is now a :option:`-M <load-into-counting.py -M>`/
+:option:`--max-memory-usage <load-into-counting.py --max-memory-usage>`
+parameter that sets the number of tables (
+:option:`-N <load-into-counting.py -N>`/
+:option:`--n_tables <load-into-counting.py --n_tables>`) and tablesize
+(:option:`-x <load-into-counting.py -x>`/:option:`--max-tablesize
+<load-into-counting.py --max-tablesize>`) parameters automatically to match the
+desired memory usage.
+
 Digital normalization script now supports mixed paired and unpaired read input
 ------------------------------------------------------------------------------
 
-`normalize-by-median.py` now supports mixed paired and unpaired (or
+:program:`normalize-by-median.py` now supports mixed paired and unpaired (or
 "broken-paired") input. Behavior can be forced to either treat all
 reads as singletons or to require all reads be properly paired using
-:option:`--force-single` or :option:`--paired`, respectively. If
-:option:`--paired` is set, :option:`--unpaired-reads` can be used to
-include a file of unpaired reads. The unpaired reads will be examined
+:option:`--force_single <normalize-by-median.py --force_single>` or
+:option:`--paired <normalize-by-median.py --paired>`, respectively. If
+:option:`--paired <normalize-by-median.py --paired>` is set,
+:option:`--unpaired-reads <normalize-by-median.py --unpaired-reads>` can be
+used to include a file of unpaired reads. The unpaired reads will be examined
 after all of the other sequence files.
+:option:`normalize-by-median.py --quiet` can be used to reduce the amount of
+diagnostic output.
+
+Mixed-pair sequence file format support
+---------------------------------------
+
+:option:`split-paired-reads.py --output-orphaned`/:option:`-0
+<split-paired-reads.py -0>` has been added to allow for orphaned reads and give
+them a file to be sorted into.
+
+Scripts now output columnar data in CSV format by default
+---------------------------------------------------------
+
+All scripts that output any kind of columnar data now do so in CSV format,
+with headers.  Previously this had to be enabled with ``--csv``.
+(Affects :program:`abundance-dist-single.py`, :program:`abundance-dist.py`,
+:program:`count-median.py`, and :program:`count-overlap.py`.)
+:option:`normalize-by-median.py --report` also now outputs in CSV format.
 
 Reservoir sampling script extracts paired reads by default
 ----------------------------------------------------------
 
-`sample-reads-randomly.py` now retains pairs in the output, by
+:program:`sample-reads-randomly.py` now retains pairs in the output, by
 default.  This can be overridden to match previous behavior
-with :option:`--force_single`.
+with :option:`--force_single <sample-reads-randomly.py --force_single>`.
 
 New scripts
 ===========
@@ -30,31 +106,32 @@ New scripts
 Estimate number of unique kmers
 -------------------------------
 
-`unique-kmers.py` estimates the k-mer cardinality of a dataset using the
-HyperLogLog probabilistic data structure. This allows very low memory
+:program:`unique-kmers.py` estimates the k-mer cardinality of a dataset using
+the HyperLogLog probabilistic data structure. This allows very low memory
 consumption, which can be configured through an expected error rate.
 Even with low error rate (and higher memory consumption), it is still much
 more efficient than exact counting and alternative methods.
 It supports multicore processing (using OpenMP) and streaming,
 and so can be used in conjunction with other scripts (like
-`normalize-by-median.py` and `filter-abund.py`).
+:program:`normalize-by-median.py` and :program:`filter-abund.py`). This is the
+work of Luiz Irber and it is the subject of a paper in draft.
 
 Incompatible changes
 ====================
 
-New parameter for tablesize/number of table parameters.
--------------------------------------------------------
+New datastructure and script names
+----------------------------------
 
-There is now a :option:`-M`/:option:`--max-memory-usage` parameter
-that sets the number of tables (:option:`-N`/:option:`--num_tables`)
-and tablesize (:option:`-x`/:option:`--max-tablesize`) parameters
-automatically to match the desired memory usage.
+For clarity the Count-Min Sketch based data structure previously known as
+"counting_hash" or "counting_table" and variations of these is now known as
+``countgraph``. Likewise with the Bloom Filter based data structure previously
+known at "hashbits", "presence_table" and variations of these is now known as
+``nodegraph``. Many options relating to ``table`` have been changed to
+``graph``.
 
-(:option:`--min-tablesize` was also renamed to
-:option:`--max-tablesize` to reflect this more desirable behavior.)
 
-Binary file formats have changed!
----------------------------------
+Binary file formats have changed
+--------------------------------
 
 All binary khmer formats (presence tables, counting tables, tag sets,
 stop tags, and partition subsets) have changed. Files are now
@@ -64,20 +141,57 @@ this project.
 Files of the above types made in previous versions of khmer are not compatible
 with v2.0; the reverse is also true.
 
-Scripts now output columnar data in CSV format by default
----------------------------------------------------------
-
-All scripts that output any kind of columnar data now do so in CSV format,
-with headers.  Previously this had to be enabled with :option:`--csv`.
-(Affects `abundance-dist-single.py`, `abundance-dist.py`, `count-median.py`,
-and `count-overlap.py`.) `normalize-by-median.py` also now outputs CSV
-when :option:`-R` is used.
+In addition to the ``OXLI`` string, the Nodegraph and Countgraph file format
+now includes the number of occupied bins. See :doc:`dev/binary-file-formats`
+for details.
 
 load-graph.py no longer appends .pt to the specified filename
 -------------------------------------------------------------
 
-Previously, `load-graph.py` appended a `.pt` extension to the
-specified output filename and partition-graph appended a `.pt` to the
-given input filename.  Now, `load-graph.py` writes to the specified
-output filename and `partition-graph.py` does not append a `.pt` to
-the given input filename.
+Previously, :program:`load-graph.py`` appended a ``.pt`` extension to the
+specified output filename and :program:`partition-graph.py` appended a ``.pt``
+to the given input filename.  Now, :program:`load-graph.py` writes to the
+specified output filename and :program:`partition-graph.py` does not append a
+``.pt`` to the given input filename.
+
+Some reporting options have been turned always on
+-------------------------------------------------
+
+The total number of unique k-mers will always be reported every time a new
+countgraph is made. The ``--report-total-kmers`` option has been removed from
+:program:`abundance-dist-single.py`, :program:`filter-abund-single.py`, and
+:program:`normalize-by-median.py` to reflect this. Likewise with
+``write-fp-rate`` for :program:`load-into-counting.py` and
+:program:`load-graph.py`; the false positive rate will always be
+written to the ``.info`` files.
+
+An uncommon error recovery routine was removed
+----------------------------------------------
+
+To simplify the codebase ``--save-on-failure`` and its helper option
+``--dump-frequency`` have been removed from :program:`normalize-by-median.py`.
+
+Single file output option names have been normalized
+----------------------------------------------------
+
+``--out`` is now ``--output`` for both :option:`normalize-by-median.py
+<normalize-by-median.py --output>` and :option:`trim-low-abund.py
+<trim-low-abund.py --output>`.
+
+Miscellaneous changes
+---------------------
+The common option ``--min-tablesize`` was renamed to
+:option:`--max-tablesize <load-into-counting.py --max-tablesize>` to reflect
+this more desirable behavior.
+
+In conjuction with the new :option:`split-paired-reads.py --output-orphaned`
+option, the option ``--force-paired``/``-p`` has been eliminated.
+
+As CSV format is now the default, the ``--csv`` option has been removed.
+
+Removed script
+--------------
+
+`count-overlap.py
+<http://khmer.readthedocs.org/en/v1.4.1/user/scripts.html#count-overlap-py>`__
+has been removed.
diff --git a/examples/stamps/do.sh b/examples/stamps/do.sh
index 8a170c7..527f2b8 100755
--- a/examples/stamps/do.sh
+++ b/examples/stamps/do.sh
@@ -1,8 +1,38 @@
 #!/bin/bash
 #
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
+# Copyright (C) 2013-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
 # Contact: khmer-project at idyll.org
 #
 load-into-counting.py -x 1e8 -k 20 stamps-reads.ct \
diff --git a/ez_setup.py b/ez_setup.py
deleted file mode 100644
index f5fa741..0000000
--- a/ez_setup.py
+++ /dev/null
@@ -1,332 +0,0 @@
-#!/usr/bin/env python
-"""Bootstrap setuptools installation
-
-To use setuptools in your package's setup.py, include this
-file in the same directory and add this to the top of your setup.py::
-
-    from ez_setup import use_setuptools
-    use_setuptools()
-
-To require a specific version of setuptools, set a download
-mirror, or use an alternate download directory, simply supply
-the appropriate options to ``use_setuptools()``.
-
-This file can also be run as a script to install or upgrade setuptools.
-"""
-import os
-import shutil
-import sys
-import tempfile
-import zipfile
-import optparse
-import subprocess
-import platform
-import textwrap
-import contextlib
-
-from distutils import log
-
-try:
-    from site import USER_SITE
-except ImportError:
-    USER_SITE = None
-
-DEFAULT_VERSION = "3.4.1"
-DEFAULT_URL = "https://pypi.python.org/packages/source/s/setuptools/"
-
-def _python_cmd(*args):
-    """
-    Return True if the command succeeded.
-    """
-    args = (sys.executable,) + args
-    return subprocess.call(args) == 0
-
-
-def _install(archive_filename, install_args=()):
-    with archive_context(archive_filename):
-        # installing
-        log.warn('Installing Setuptools')
-        if not _python_cmd('setup.py', 'install', *install_args):
-            log.warn('Something went wrong during the installation.')
-            log.warn('See the error message above.')
-            # exitcode will be 2
-            return 2
-
-
-def _build_egg(egg, archive_filename, to_dir):
-    with archive_context(archive_filename):
-        # building an egg
-        log.warn('Building a Setuptools egg in %s', to_dir)
-        _python_cmd('setup.py', '-q', 'bdist_egg', '--dist-dir', to_dir)
-    # returning the result
-    log.warn(egg)
-    if not os.path.exists(egg):
-        raise IOError('Could not build the egg.')
-
-
-def get_zip_class():
-    """
-    Supplement ZipFile class to support context manager for Python 2.6
-    """
-    class ContextualZipFile(zipfile.ZipFile):
-        def __enter__(self):
-            return self
-        def __exit__(self, type, value, traceback):
-            self.close
-    return zipfile.ZipFile if hasattr(zipfile.ZipFile, '__exit__') else \
-        ContextualZipFile
-
-
- at contextlib.contextmanager
-def archive_context(filename):
-    # extracting the archive
-    tmpdir = tempfile.mkdtemp()
-    log.warn('Extracting in %s', tmpdir)
-    old_wd = os.getcwd()
-    try:
-        os.chdir(tmpdir)
-        with get_zip_class()(filename) as archive:
-            archive.extractall()
-
-        # going in the directory
-        subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0])
-        os.chdir(subdir)
-        log.warn('Now working in %s', subdir)
-        yield
-
-    finally:
-        os.chdir(old_wd)
-        shutil.rmtree(tmpdir)
-
-
-def _do_download(version, download_base, to_dir, download_delay):
-    egg = os.path.join(to_dir, 'setuptools-%s-py%d.%d.egg'
-                       % (version, sys.version_info[0], sys.version_info[1]))
-    if not os.path.exists(egg):
-        archive = download_setuptools(version, download_base,
-                                      to_dir, download_delay)
-        _build_egg(egg, archive, to_dir)
-    sys.path.insert(0, egg)
-
-    # Remove previously-imported pkg_resources if present (see
-    # https://bitbucket.org/pypa/setuptools/pull-request/7/ for details).
-    if 'pkg_resources' in sys.modules:
-        del sys.modules['pkg_resources']
-
-    import setuptools
-    setuptools.bootstrap_install_from = egg
-
-
-def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
-        to_dir=os.curdir, download_delay=15):
-    to_dir = os.path.abspath(to_dir)
-    rep_modules = 'pkg_resources', 'setuptools'
-    imported = set(sys.modules).intersection(rep_modules)
-    try:
-        import pkg_resources
-    except ImportError:
-        return _do_download(version, download_base, to_dir, download_delay)
-    try:
-        pkg_resources.require("setuptools>=" + version)
-        return
-    except pkg_resources.DistributionNotFound:
-        return _do_download(version, download_base, to_dir, download_delay)
-    except pkg_resources.VersionConflict as VC_err:
-        if imported:
-            msg = textwrap.dedent("""
-                The required version of setuptools (>={version}) is not available,
-                and can't be installed while this script is running. Please
-                install a more recent version first, using
-                'easy_install -U setuptools'.
-
-                (Currently using {VC_err.args[0]!r})
-                """).format(VC_err=VC_err, version=version)
-            sys.stderr.write(msg)
-            sys.exit(2)
-
-        # otherwise, reload ok
-        del pkg_resources, sys.modules['pkg_resources']
-        return _do_download(version, download_base, to_dir, download_delay)
-
-def _clean_check(cmd, target):
-    """
-    Run the command to download target. If the command fails, clean up before
-    re-raising the error.
-    """
-    try:
-        subprocess.check_call(cmd)
-    except subprocess.CalledProcessError:
-        if os.access(target, os.F_OK):
-            os.unlink(target)
-        raise
-
-def download_file_powershell(url, target):
-    """
-    Download the file at url to target using Powershell (which will validate
-    trust). Raise an exception if the command cannot complete.
-    """
-    target = os.path.abspath(target)
-    cmd = [
-        'powershell',
-        '-Command',
-        "(new-object System.Net.WebClient).DownloadFile(%(url)r, %(target)r)" % vars(),
-    ]
-    _clean_check(cmd, target)
-
-def has_powershell():
-    if platform.system() != 'Windows':
-        return False
-    cmd = ['powershell', '-Command', 'echo test']
-    devnull = open(os.path.devnull, 'wb')
-    try:
-        try:
-            subprocess.check_call(cmd, stdout=devnull, stderr=devnull)
-        except Exception:
-            return False
-    finally:
-        devnull.close()
-    return True
-
-download_file_powershell.viable = has_powershell
-
-def download_file_curl(url, target):
-    cmd = ['curl', url, '--silent', '--output', target]
-    _clean_check(cmd, target)
-
-def has_curl():
-    cmd = ['curl', '--version']
-    devnull = open(os.path.devnull, 'wb')
-    try:
-        try:
-            subprocess.check_call(cmd, stdout=devnull, stderr=devnull)
-        except Exception:
-            return False
-    finally:
-        devnull.close()
-    return True
-
-download_file_curl.viable = has_curl
-
-def download_file_wget(url, target):
-    cmd = ['wget', url, '--quiet', '--output-document', target]
-    _clean_check(cmd, target)
-
-def has_wget():
-    cmd = ['wget', '--version']
-    devnull = open(os.path.devnull, 'wb')
-    try:
-        try:
-            subprocess.check_call(cmd, stdout=devnull, stderr=devnull)
-        except Exception:
-            return False
-    finally:
-        devnull.close()
-    return True
-
-download_file_wget.viable = has_wget
-
-def download_file_insecure(url, target):
-    """
-    Use Python to download the file, even though it cannot authenticate the
-    connection.
-    """
-    try:
-        from urllib.request import urlopen
-    except ImportError:
-        from urllib2 import urlopen
-    src = dst = None
-    try:
-        src = urlopen(url)
-        # Read/write all in one block, so we don't create a corrupt file
-        # if the download is interrupted.
-        data = src.read()
-        dst = open(target, "wb")
-        dst.write(data)
-    finally:
-        if src:
-            src.close()
-        if dst:
-            dst.close()
-
-download_file_insecure.viable = lambda: True
-
-def get_best_downloader():
-    downloaders = [
-        download_file_powershell,
-        download_file_curl,
-        download_file_wget,
-        download_file_insecure,
-    ]
-
-    for dl in downloaders:
-        if dl.viable():
-            return dl
-
-def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
-        to_dir=os.curdir, delay=15, downloader_factory=get_best_downloader):
-    """
-    Download setuptools from a specified location and return its filename
-
-    `version` should be a valid setuptools version number that is available
-    as an egg for download under the `download_base` URL (which should end
-    with a '/'). `to_dir` is the directory where the egg will be downloaded.
-    `delay` is the number of seconds to pause before an actual download
-    attempt.
-
-    ``downloader_factory`` should be a function taking no arguments and
-    returning a function for downloading a URL to a target.
-    """
-    # making sure we use the absolute path
-    to_dir = os.path.abspath(to_dir)
-    zip_name = "setuptools-%s.zip" % version
-    url = download_base + zip_name
-    saveto = os.path.join(to_dir, zip_name)
-    if not os.path.exists(saveto):  # Avoid repeated downloads
-        log.warn("Downloading %s", url)
-        downloader = downloader_factory()
-        downloader(url, saveto)
-    return os.path.realpath(saveto)
-
-def _build_install_args(options):
-    """
-    Build the arguments to 'python setup.py install' on the setuptools package
-    """
-    return ['--user'] if options.user_install else []
-
-def _parse_args():
-    """
-    Parse the command line for options
-    """
-    parser = optparse.OptionParser()
-    parser.add_option(
-        '--user', dest='user_install', action='store_true', default=False,
-        help='install in user site package (requires Python 2.6 or later)')
-    parser.add_option(
-        '--download-base', dest='download_base', metavar="URL",
-        default=DEFAULT_URL,
-        help='alternative URL from where to download the setuptools package')
-    parser.add_option(
-        '--insecure', dest='downloader_factory', action='store_const',
-        const=lambda: download_file_insecure, default=get_best_downloader,
-        help='Use internal, non-validating downloader'
-    )
-    parser.add_option(
-        '--version', help="Specify which version to download",
-        default=DEFAULT_VERSION,
-    )
-    options, args = parser.parse_args()
-    # positional arguments are ignored
-    return options
-
-def main():
-    """Install or upgrade setuptools and EasyInstall"""
-    options = _parse_args()
-    archive = download_setuptools(
-        version=options.version,
-        download_base=options.download_base,
-        downloader_factory=options.downloader_factory,
-    )
-    return _install(archive, _build_install_args(options))
-
-if __name__ == '__main__':
-    sys.exit(main())
diff --git a/jenkins-build.sh b/jenkins-build.sh
index 54042e9..dc5ce1d 100755
--- a/jenkins-build.sh
+++ b/jenkins-build.sh
@@ -1,4 +1,38 @@
 #!/bin/bash
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2013-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 
 make clean
 
diff --git a/khmer/__init__.py b/khmer/__init__.py
index 9847e6f..72b8580 100644
--- a/khmer/__init__.py
+++ b/khmer/__init__.py
@@ -1,11 +1,40 @@
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2010-2015. It is licensed under
-# the three-clause BSD license; see doc/LICENSE.txt.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 """This is khmer; please see http://khmer.readthedocs.org/."""
 
+
 from __future__ import print_function
 from math import log
 import json
diff --git a/khmer/_khmer.cc b/khmer/_khmer.cc
index 47121d4..7f89ecd 100644
--- a/khmer/_khmer.cc
+++ b/khmer/_khmer.cc
@@ -1,9 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see doc/LICENSE.txt.
-// Contact: khmer-project at idyll.org
-//
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2010-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 
 //
 // A module for Python that exports khmer C++ library functions.
@@ -4441,25 +4472,28 @@ static PyObject * hllcounter_consume_fasta(khmer_KHLLCounter_Object * me,
         PyObject * args, PyObject * kwds)
 {
     const char * filename;
-    PyObject * output_records_o = NULL;
-    char * kwlist[] = {"filename", "stream_out", NULL};
+    PyObject * stream_records_o = NULL;
+
+    static const char* const_kwlist[] = {"filename", "stream_records", NULL};
+    static char** kwlist = const_cast<char**>(const_kwlist);
 
-    bool output_records = false;
+    bool stream_records = false;
 
     if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|O", kwlist,
-          &filename, &output_records_o)) {
+                                     &filename, &stream_records_o)) {
         return NULL;
     }
 
-    if (output_records_o != NULL && PyObject_IsTrue(output_records_o)) {
-       output_records = true;
+    if (stream_records_o != NULL && PyObject_IsTrue(stream_records_o)) {
+        stream_records = true;
     }
 
     // call the C++ function, and trap signals => Python
     unsigned long long  n_consumed    = 0;
     unsigned int        total_reads   = 0;
     try {
-        me->hllcounter->consume_fasta(filename, output_records, total_reads, n_consumed);
+        me->hllcounter->consume_fasta(filename, stream_records, total_reads,
+                                      n_consumed);
     } catch (khmer_file_exception &exc) {
         PyErr_SetString(PyExc_OSError, exc.what());
         return NULL;
diff --git a/khmer/_version.py b/khmer/_version.py
index 5d68898..e7a72b4 100644
--- a/khmer/_version.py
+++ b/khmer/_version.py
@@ -16,8 +16,8 @@ import subprocess
 import sys
 
 # these strings will be replaced by git during git-archive
-git_refnames = " (tag: v2.0-rc3)"
-git_full = "14f741fd4fc27c7fae0b5cd6e3df020d5628a89b"
+git_refnames = " (HEAD -> master, tag: v2.0-rc6)"
+git_full = "4c759652ff29dba715bca71f516c6cf6eb756114"
 
 # these strings are filled in when 'setup.py versioneer' creates _version.py
 tag_prefix = "v"
diff --git a/khmer/kfile.py b/khmer/kfile.py
index 7e049f0..5962b8c 100644
--- a/khmer/kfile.py
+++ b/khmer/kfile.py
@@ -1,10 +1,37 @@
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2014-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2014-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
 #
-
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 """File handling/checking utilities for command-line scripts."""
 
 from __future__ import print_function, unicode_literals
diff --git a/khmer/khmer_args.py b/khmer/khmer_args.py
index 0bfeeb8..d8e43df 100644
--- a/khmer/khmer_args.py
+++ b/khmer/khmer_args.py
@@ -1,10 +1,38 @@
-#
 # vim: set encoding=utf-8
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2014-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 
 from __future__ import unicode_literals
 from __future__ import print_function
@@ -13,6 +41,7 @@ import sys
 import os
 import argparse
 import math
+import textwrap
 from argparse import _VersionAction
 from collections import namedtuple
 
@@ -391,9 +420,30 @@ def add_threading_args(parser):
     parser.add_argument('--threads', '-T', default=DEFAULT_N_THREADS, type=int,
                         help='Number of simultaneous threads to execute')
 
+
+def sanitize_help(parser):
+    """Remove Sphinx directives & reflow text to width of 79 characters."""
+    wrapper = textwrap.TextWrapper(width=79)
+    parser.description = wrapper.fill(parser.description)
+    if not parser.epilog:
+        return parser
+    cleanlog = parser.epilog.replace(':option:', '').replace(
+        ':program:', '').replace('::', ':').replace('``', '"')
+    newlog = prev_section = ""
+    for section in cleanlog.split('\n\n'):
+        if section.startswith('    '):
+            newlog += section + '\n'
+        else:
+            if prev_section.startswith('    '):
+                newlog += '\n'
+            newlog += wrapper.fill(section) + '\n\n'
+        prev_section = section
+    parser.epilog = newlog
+    return parser
+
 _algorithms = {
     'software': 'MR Crusoe et al., '
-    '2014. http://dx.doi.org/10.6084/m9.figshare.979190',
+    '2015. http://dx.doi.org/10.12688/f1000research.6924.1',
     'diginorm': 'CT Brown et al., arXiv:1203.4802 [q-bio.GN]',
     'streaming': 'Q Zhang, S Awad, CT Brown, '
     'https://dx.doi.org/10.7287/peerj.preprints.890v1',
diff --git a/khmer/khmer_logger.py b/khmer/khmer_logger.py
index 8b2f0aa..9644869 100644
--- a/khmer/khmer_logger.py
+++ b/khmer/khmer_logger.py
@@ -1,10 +1,37 @@
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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.
 #
-# Lightweight logging framework for khmer
+#     * 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+'''Lightweight logging framework for khmer'''
 
 from __future__ import print_function, unicode_literals
 import sys
diff --git a/khmer/thread_utils.py b/khmer/thread_utils.py
index e732b9f..f71efc1 100644
--- a/khmer/thread_utils.py
+++ b/khmer/thread_utils.py
@@ -1,10 +1,37 @@
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
 #
-
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 """Utilities for dealing with multithreaded processing of short reads."""
 
 from __future__ import print_function, unicode_literals
@@ -12,8 +39,7 @@ from __future__ import print_function, unicode_literals
 import threading
 import sys
 import screed
-from khmer import utils
-from khmer.utils import write_record
+from khmer.utils import write_record, check_is_pair
 # stdlib queue module was renamed on Python 3
 try:
     import queue
@@ -42,13 +68,6 @@ class SequenceGroup(object):
         self.seqlist = seqlist
 
 
-def is_pair(r1, r2):
-    a = r1['name'].split('/')[0]
-    b = r2['name'].split('/')[0]
-
-    return (a == b)
-
-
 class ThreadedSequenceProcessor(object):
     QUEUESIZE = 50
 
@@ -109,7 +128,7 @@ class ThreadedSequenceProcessor(object):
         for record in inputiter:
             if i >= self.group_size:
                 # keep pairs together in batches, to retain the interleaving.
-                if is_pair(record, last_record):
+                if check_is_pair(last_record, record):
                     batch.append(record)
                     g = SequenceGroup(0, batch)
                     self.inqueue.put(g)
diff --git a/khmer/utils.py b/khmer/utils.py
index 6896e83..7d37a33 100644
--- a/khmer/utils.py
+++ b/khmer/utils.py
@@ -1,12 +1,41 @@
-from __future__ import print_function, unicode_literals
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2013-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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.
 #
-# Convenience functions for performing common argument-checking tasks in
-# scripts.
+#     * Neither the name of the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+'''Convenience functions for performing common argument-checking tasks in
+scripts.'''
+
+from __future__ import print_function, unicode_literals
 
 
 def print_error(msg):
diff --git a/lib/.check_openmp.cc b/lib/.check_openmp.cc
index 52dfdd5..9be34a6 100644
--- a/lib/.check_openmp.cc
+++ b/lib/.check_openmp.cc
@@ -1,9 +1,39 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2015. It is licensed under
-// the three-clause BSD license; see doc/LICENSE.txt.
-// Contact: khmer-project at idyll.org
-//
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2015, Michigan State University.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 
 // File to be used to check for openmp
 #include <omp.h>
diff --git a/lib/Makefile b/lib/Makefile
index da02e8d..7797f34 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -1,3 +1,38 @@
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+
 # Should we use the standard system zlib and libbz2?
 
 USE_SYSTEM_ZLIB ?= false
@@ -118,24 +153,22 @@ else
 VERSION = $(shell ./get_version.py)
 endif
 
-MAJOR_VERSION = $(shell echo $(VERSION) | sed -e 's/^\([^-\.]*\)\.\([^-\.]*\).*/\1/')
-MINOR_VERSION = $(shell echo $(VERSION) | sed -e 's/^\([^-\.]*\)\.\([^-\.]*\).*/\2/')
-
-LIB_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION)
+# The ABI version of liboxli
+LIB_VERSION = 1
 
 ifeq ($(shell uname), Darwin)
 SHARED_EXT   = dylib
-SONAME       = liboxli.$(SHARED_EXT).$(MAJOR_VERSION)
-SONAME_FLAGS = -install_name $(PREFIX)/lib/$(SONAME) -compatibility_version $(MAJOR_VERSION) -current_version $(LIB_VERSION)
+SONAME       = liboxli.$(SHARED_EXT).$(LIB_VERSION)
+SONAME_FLAGS = -install_name $(PREFIX)/lib/$(SONAME) \
+	       -compatibility_version $(LIB_VERSION) \
+	       -current_version $(LIB_VERSION)
 else
 SHARED_EXT   = so
-SONAME       = liboxli.$(SHARED_EXT).$(MAJOR_VERSION)
+SONAME       = liboxli.$(SHARED_EXT).$(LIB_VERSION)
 SONAME_FLAGS = -Wl,-soname=$(SONAME)
 endif
 
-# The ABI version of liboxli
-LIBVERSION = 1
-LIBKHMERSO=liboxli.$(SHARED_EXT).$(LIB_VERSION)
+LIBKHMERSO=$(SONAME)
 
 CXXFLAGS += -DVERSION=$(VERSION)
 
@@ -225,7 +258,6 @@ KHMER_HEADERS= \
 	kmer_hash.hh \
 	labelhash.hh \
 	traversal.hh \
-	primes.hh \
 	read_aligner.hh \
 	read_parsers.hh \
 	subset.hh \
@@ -250,8 +282,7 @@ install: $(LIBKHMERSO) liboxli.a oxli.pc $(KHMER_HEADERS)
 		$(PREFIX)/include/oxli/
 	cp oxli.pc $(PREFIX)/lib/pkgconfig/
 	cp $(LIBKHMERSO) liboxli.a $(PREFIX)/lib
-	ln -sf $(PREFIX)/lib/$(LIBKHMERSO) $(PREFIX)/lib/$(SONAME)
-	ln -sf $(PREFIX)/lib/$(SONAME) $(PREFIX)/lib/liboxli.$(SHARED_EXT)
+	ln -sf $(PREFIX)/lib/$(LIBKHMERSO) $(PREFIX)/lib/liboxli.$(SHARED_EXT)
 
 oxli.pc: oxli.pc.in
 	sed -e 's, at prefix@,$(PREFIX),'  -e 's, at VERSION@,$(VERSION),' $< >$@
@@ -271,7 +302,6 @@ murmur3.o: ../third-party/smhasher/MurmurHash3.cc
 
 $(LIBKHMERSO): $(LIBKHMER_OBJS)
 	$(CXX) $(CXXFLAGS) $(LDFLAGS) $(SONAME_FLAGS) -shared -o $@ $^
-	ln -sf $(LIBKHMERSO) $(SONAME)
 	ln -sf $(SONAME) liboxli.$(SHARED_EXT)
 
 liboxli.a: $(LIBKHMER_OBJS)
diff --git a/lib/counting.cc b/lib/counting.cc
index ba87770..1b7736c 100644
--- a/lib/counting.cc
+++ b/lib/counting.cc
@@ -1,9 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2010-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 
 #include <errno.h>
 #include <algorithm>
@@ -249,13 +280,14 @@ void CountingHash::fasta_dump_kmers_by_abundance(
             for (unsigned int i = 0; i < seq.length() - _ksize + 1; i++) {
                 string kmer = seq.substr(i, i + _ksize);
                 BoundedCounterType n = get_count(kmer.c_str());
-                char ss[_ksize + 1];
+                char * ss = new char[_ksize + 1];
                 strncpy(ss, kmer.c_str(), _ksize);
                 ss[_ksize] = 0;
 
                 if (n == limit_by_count) {
-                    cout << ss << endl;
+                    cout << *ss << endl;
                 }
+                delete[] ss;
             }
         }
 
@@ -686,7 +718,7 @@ CountingHashGzFileReader::CountingHashGzFileReader(
             if (to_read_ll > INT_MAX) {
                 to_read_int = INT_MAX;
             } else {
-                to_read_int = to_read_ll;
+                to_read_int = (unsigned int) to_read_ll;
             }
             read_b = gzread(infile, (char *) ht._counts[i], to_read_int);
 
@@ -862,7 +894,7 @@ CountingHashGzFileWriter::CountingHashGzFileWriter(
             if (to_write_ll > INT_MAX) {
                 to_write_int = INT_MAX;
             } else {
-                to_write_int = to_write_ll;
+                to_write_int = (unsigned int) to_write_ll;
             }
             gz_result = gzwrite(outfile, (const char *) ht._counts[i],
                                 to_write_int);
diff --git a/lib/counting.hh b/lib/counting.hh
index 9eaf351..779755b 100644
--- a/lib/counting.hh
+++ b/lib/counting.hh
@@ -1,10 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2010-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #ifndef COUNTING_HH
 #define COUNTING_HH
 
@@ -135,7 +165,7 @@ public:
     }
 
     virtual const HashIntoType n_unique_kmers() const
-    { 
+    {
         return _n_unique_kmers;
     }
 
@@ -180,7 +210,7 @@ public:
                 if (current_count == 0) {
                     is_new_kmer = true;
                     if (i == 0) {
-                       __sync_add_and_fetch(&_occupied_bins, 1);
+                        __sync_add_and_fetch(&_occupied_bins, 1);
                     }
                 }
             }
@@ -311,7 +341,7 @@ public:
     CountingHashGzFileWriter(const std::string &outfilename,
                              const CountingHash &ht);
 };
-};
+}
 
 #endif // COUNTING_HH
 
diff --git a/lib/get_version.py b/lib/get_version.py
index 929a1b8..8d69266 100755
--- a/lib/get_version.py
+++ b/lib/get_version.py
@@ -1,8 +1,48 @@
 #!/usr/bin/env python
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2014-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+
 from __future__ import print_function
 import sys
-sys.path.insert(0, '../')
+import os
+sys.path.insert(
+    0, os.path.abspath(os.path.join(
+        os.path.dirname(os.path.abspath(__file__)),
+        os.pardir)))
 import versioneer
+
 versioneer.VCS = 'git'
 versioneer.versionfile_source = '../khmer/_version.py'
 versioneer.versionfile_build = '../khmer/_version.py'
diff --git a/lib/graphtest.cc b/lib/graphtest.cc
deleted file mode 100644
index c4ad3f7..0000000
--- a/lib/graphtest.cc
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
-#include <iostream>
-#include "hashtable.hh"
-
-using namespace std;
-
-int main()
-{
-#if 0
-    khmer::Hashtable ht(5, 1024);
-
-    ht.count("AAAAA");
-    ht.count("AAAAT");
-    ht.count("AAATG");
-    ht.count("AATGG");
-
-    ht.count("CCCCC");
-
-    std::string k = "AATGG";
-    ht.mark_connected_graph(k);
-
-    std::cout << "a\n";
-
-    ht.dump_kmers_and_counts();
-
-    std::cout << "b\n";
-
-    ht.empty_bins(false);
-    ht.dump_kmers_and_counts();
-
-    std::cout << "c\n";
-
-    ht.count("CCCCC");
-    ht.empty_bins(true);
-    ht.dump_kmers_and_counts();
-
-    std::cout << "d\n";
-    ht.count("AAAAA");
-    ht.count("AAAAT");
-    ht.count("AAATG");
-    ht.count("AATGG");
-    ht.count("CCCCC");
-
-    std::cout << ht.calc_connected_graph_size("AAAAA") << "\n";
-    std::cout << ht.calc_connected_graph_size("AAAAA") << "\n";
-    ht.clear_marks();
-    std::cout << ht.calc_connected_graph_size("AAAAA") << "\n";
-    ht.clear_marks();
-    std::cout << ht.calc_connected_graph_size("AAAAT") << "\n";
-    ht.clear_marks();
-    std::cout << ht.calc_connected_graph_size("AAATG") << "\n";
-    ht.clear_marks();
-    std::cout << ht.calc_connected_graph_size("AATGG") << "\n";
-    ht.clear_marks();
-    std::cout << ht.calc_connected_graph_size("CCCCC") << "\n";
-
-    std::cout << "e\n";
-    ht.clear_marks();
-    std::cout << ht.calc_connected_graph_size("AAAAT") << "\n";
-    std::cout << ht.calc_connected_graph_size("CCCCC") << "\n";
-    ht.clear_marks();
-    ht.trim_graphs(2);
-
-#endif
-
-    std::string filename = "../foo.fa";
-    unsigned int total_reads;
-    unsigned long long n_consumed;
-    khmer::Hashtable ht2(16, 4294967296);
-    ht2.consume_fasta(filename, total_reads, n_consumed);
-    ht2.trim_graphs(100);
-
-    return 0;
-}
diff --git a/lib/hashbits.cc b/lib/hashbits.cc
index 2b62399..7feae6d 100644
--- a/lib/hashbits.cc
+++ b/lib/hashbits.cc
@@ -1,10 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2010-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #include <errno.h>
 #include <sstream> // IWYU pragma: keep
 
diff --git a/lib/hashbits.hh b/lib/hashbits.hh
index 4620a92..c20ad6e 100644
--- a/lib/hashbits.hh
+++ b/lib/hashbits.hh
@@ -1,10 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2010-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #ifndef HASHBITS_HH
 #define HASHBITS_HH
 
@@ -127,7 +157,7 @@ public:
             unsigned char bits_orig = __sync_fetch_and_or( *(_counts + i) + byte, bit );
             if (!(bits_orig & bit)) {
                 if (i == 0) {
-                  __sync_add_and_fetch( &_occupied_bins, 1 );
+                    __sync_add_and_fetch( &_occupied_bins, 1 );
                 }
                 is_new_kmer = true;
             }
@@ -176,7 +206,7 @@ public:
 
     void update_from(const Hashbits &other);
 };
-};
+}
 
 #include "counting.hh"
 #include "labelhash.hh"
diff --git a/lib/hashtable.cc b/lib/hashtable.cc
index 5a1258a..aefddcf 100644
--- a/lib/hashtable.cc
+++ b/lib/hashtable.cc
@@ -1,10 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2010-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #include <errno.h>
 #include <math.h>
 #include <algorithm>
@@ -730,36 +760,38 @@ const
     node_q.push(start);
 
     // Avoid high-circumference k-mers
-    auto filter = [&] (Kmer& n) { return !(break_on_circum &&
-                                  traverser.degree(n) > 4); };
+    auto filter = [&] (Kmer& n) {
+        return !(break_on_circum &&
+                 traverser.degree(n) > 4);
+    };
 
     while(!node_q.empty()) {
-      Kmer node = node_q.front();
-      node_q.pop();
+        Kmer node = node_q.front();
+        node_q.pop();
 
-      // have we already seen me? don't count; exit.
-      if (set_contains(keeper, node)) {
-          continue;
-      }
+        // have we already seen me? don't count; exit.
+        if (set_contains(keeper, node)) {
+            continue;
+        }
 
-      // is this in stop_tags?
-      if (set_contains(stop_tags, node)) {
-          continue;
-      }
+        // is this in stop_tags?
+        if (set_contains(stop_tags, node)) {
+            continue;
+        }
 
-      // keep track of both seen kmers, and counts.
-      keeper.insert(node);
+        // keep track of both seen kmers, and counts.
+        keeper.insert(node);
 
-      count += 1;
+        count += 1;
 
-      // are we past the threshold? truncate search.
-      if (threshold && count >= threshold) {
-          return;
-      }
+        // are we past the threshold? truncate search.
+        if (threshold && count >= threshold) {
+            return;
+        }
 
-      // otherwise, explore in all directions.
-      traverser.traverse_right(node, node_q, filter);
-      traverser.traverse_left(node, node_q, filter);
+        // otherwise, explore in all directions.
+        traverser.traverse_right(node, node_q, filter);
+        traverser.traverse_left(node, node_q, filter);
     }
 }
 
@@ -909,7 +941,9 @@ const
     unsigned int total = 0;
     unsigned int nfound = 0;
 
-    auto filter = [&] (Kmer& n) { return !set_contains(keeper, n); };
+    auto filter = [&] (Kmer& n) {
+        return !set_contains(keeper, n);
+    };
 
     node_q.push(start);
     breadth_q.push(0);
@@ -949,10 +983,14 @@ const
         }
 
         nfound = traverser.traverse_right(node, node_q, filter);
-        for (unsigned int i = 0; i<nfound; ++i) breadth_q.push(breadth + 1);
+        for (unsigned int i = 0; i<nfound; ++i) {
+            breadth_q.push(breadth + 1);
+        }
 
         nfound = traverser.traverse_left(node, node_q, filter);
-        for (unsigned int i = 0; i<nfound; ++i) breadth_q.push(breadth + 1);
+        for (unsigned int i = 0; i<nfound; ++i) {
+            breadth_q.push(breadth + 1);
+        }
     }
 
     return total;
diff --git a/lib/hashtable.hh b/lib/hashtable.hh
index 03ab615..22d8e84 100644
--- a/lib/hashtable.hh
+++ b/lib/hashtable.hh
@@ -1,10 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2010-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #ifndef HASHTABLE_HH
 #define HASHTABLE_HH
 
@@ -55,7 +85,8 @@ struct IParser;
 namespace khmer
 {
 
-class Hashtable: public KmerFactory  		// Base class implementation of a Bloom ht.
+class Hashtable: public
+    KmerFactory  		// Base class implementation of a Bloom ht.
 {
     friend class SubsetPartition;
     friend class LabelHash;
@@ -300,7 +331,7 @@ public:
                                     unsigned int radius,
                                     KmerSet &keeper,
                                     unsigned int max_count = MAX_KEEPER_SIZE)
-                                    const;
+    const;
 
     unsigned int count_and_transfer_to_stoptags(KmerSet &keeper,
             unsigned int threshold,
@@ -344,7 +375,7 @@ public:
     void get_kmer_counts(const std::string &s,
                          std::vector<BoundedCounterType> &counts) const;
 };
-};
+}
 
 
 
diff --git a/lib/hllcounter.cc b/lib/hllcounter.cc
index 790a38f..47abb1c 100644
--- a/lib/hllcounter.cc
+++ b/lib/hllcounter.cc
@@ -1,10 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2014-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2014-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #include <math.h>
 #include <stdlib.h>
 #include <algorithm>
@@ -347,20 +377,20 @@ unsigned int HLLCounter::consume_string(const std::string &inp)
 
 void HLLCounter::consume_fasta(
     std::string const &filename,
-    bool output_records,
+    bool stream_records,
     unsigned int &total_reads,
     unsigned long long &n_consumed)
 {
     read_parsers::IParser * parser = read_parsers::IParser::get_parser(filename);
 
-    consume_fasta(parser, output_records, total_reads, n_consumed);
+    consume_fasta(parser, stream_records, total_reads, n_consumed);
 
     delete parser;
 }
 
 void HLLCounter::consume_fasta(
     read_parsers::IParser *parser,
-    bool output_records,
+    bool stream_records,
     unsigned int &      total_reads,
     unsigned long long &    n_consumed)
 {
@@ -398,7 +428,7 @@ void HLLCounter::consume_fasta(
                     break;
                 }
 
-                if (output_records) {
+                if (stream_records) {
                     read.write_to(std::cout);
                 }
 
diff --git a/lib/hllcounter.hh b/lib/hllcounter.hh
index 5210ed3..92f450d 100644
--- a/lib/hllcounter.hh
+++ b/lib/hllcounter.hh
@@ -1,10 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2014-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2014-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #ifndef HLLCOUNTER_HH
 #define HLLCOUNTER_HH
 
@@ -83,7 +113,7 @@ private:
     void init(int p, WordLength ksize);
 };
 
-};
+}
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/lib/khmer.hh b/lib/khmer.hh
index ea50a48..68cab2b 100644
--- a/lib/khmer.hh
+++ b/lib/khmer.hh
@@ -1,10 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2010-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #ifndef KHMER_HH
 #   define KHMER_HH
 
diff --git a/lib/khmer_exception.hh b/lib/khmer_exception.hh
index 5c524cd..3e4b40d 100644
--- a/lib/khmer_exception.hh
+++ b/lib/khmer_exception.hh
@@ -1,10 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2014-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #ifndef KHMER_EXCEPTION_HH
 #define KHMER_EXCEPTION_HH
 
diff --git a/lib/kmer_hash.cc b/lib/kmer_hash.cc
index fce6799..03702fb 100644
--- a/lib/kmer_hash.cc
+++ b/lib/kmer_hash.cc
@@ -1,10 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2010-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #include <stddef.h>
 #include <stdint.h>
 #include <string.h>
@@ -160,7 +190,7 @@ HashIntoType _hash_murmur_forward(const std::string& kmer)
 
 KmerIterator::KmerIterator(const char * seq,
                            unsigned char k) :
-                           KmerFactory(k), _seq(seq)
+    KmerFactory(k), _seq(seq)
 {
     bitmask = 0;
     for (unsigned char i = 0; i < _ksize; i++) {
@@ -225,4 +255,4 @@ Kmer KmerIterator::next(HashIntoType& f, HashIntoType& r)
     return build_kmer(_kmer_f, _kmer_r);
 }
 
-};
+}
diff --git a/lib/kmer_hash.hh b/lib/kmer_hash.hh
index adf67e5..f601cdc 100644
--- a/lib/kmer_hash.hh
+++ b/lib/kmer_hash.hh
@@ -1,10 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2010-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #ifndef KMER_HASH_HH
 #define KMER_HASH_HH
 
@@ -120,26 +150,31 @@ public:
     }
 
     /// @warning The default constructor builds an invalid k-mer.
-	Kmer()
-	{
-		kmer_f = kmer_r = kmer_u = 0;
-	}
+    Kmer()
+    {
+        kmer_f = kmer_r = kmer_u = 0;
+    }
 
     /// Allows complete backwards compatibility
-    operator HashIntoType() const { return kmer_u; }
+    operator HashIntoType() const
+    {
+        return kmer_u;
+    }
 
-    bool operator< (const Kmer &other) const {
+    bool operator< (const Kmer &other) const
+    {
         return kmer_u < other.kmer_u;
     }
 
-    std::string get_string_rep(WordLength K) {
+    std::string get_string_rep(WordLength K)
+    {
         return _revhash(kmer_u, K);
     }
 
 };
 
 /**
- * \Class KmerFactory
+ * \class KmerFactory
  *
  * \brief Build complete Kmer objects.
  *
@@ -150,7 +185,7 @@ public:
  * between the (kmer_u, K) and (kmer_f, kmer_r) cases. This
  * implementation also allows a logical architecture wherein
  * KmerIterator and Hashtable inherit directly from KmerFactory,
- * extending the latter's purpose of "create k-mers" to 
+ * extending the latter's purpose of "create k-mers" to
  * "emit k-mers from a sequence" and "create and store k-mers".
  *
  * \author Camille Scott
@@ -173,7 +208,7 @@ public:
     Kmer build_kmer(HashIntoType kmer_u)
     {
         HashIntoType kmer_f, kmer_r;
-		std:: string kmer_s = _revhash(kmer_u, _ksize);
+        std:: string kmer_s = _revhash(kmer_u, _ksize);
         _hash(kmer_s.c_str(), _ksize, kmer_f, kmer_r);
         return Kmer(kmer_f, kmer_r, kmer_u);
     }
@@ -208,7 +243,7 @@ public:
      *
      *  @param[in]  kmer_c The character array representation of a k-mer.
      *  @return A complete Kmer object hashed from the given char array.
-     */ 
+     */
     Kmer build_kmer(const char * kmer_c)
     {
         HashIntoType kmer_f, kmer_r, kmer_u;
@@ -218,7 +253,7 @@ public:
 };
 
 /**
- * \Class KmerIterator
+ * \class KmerIterator
  *
  * \brief Emit Kmer objects generated from the given sequence.
  *
@@ -290,6 +325,6 @@ public:
     }
 }; // class KmerIterator
 
-};
+}
 
 #endif // KMER_HASH_HH
diff --git a/lib/labelhash.cc b/lib/labelhash.cc
index 6323751..23d88d8 100644
--- a/lib/labelhash.cc
+++ b/lib/labelhash.cc
@@ -1,10 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2013-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #include <errno.h>
 #include <string.h>
 #include <iostream>
diff --git a/lib/labelhash.hh b/lib/labelhash.hh
index da2ee47..6a4d96a 100644
--- a/lib/labelhash.hh
+++ b/lib/labelhash.hh
@@ -1,10 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2013-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #ifndef LABELHASH_HH
 #define LABELHASH_HH
 
@@ -169,7 +199,7 @@ public:
     void load_labels_and_tags(std::string);
 
 };
-};
+}
 
 #define ACQUIRE_TAG_COLORS_SPIN_LOCK \
   while(!__sync_bool_compare_and_swap( &_tag_labels_spin_lock, 0, 1));
diff --git a/lib/primes.hh b/lib/primes.hh
deleted file mode 100644
index ba806e4..0000000
--- a/lib/primes.hh
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
-#ifndef PRIMES_HH
-#define PRIMES_HH
-
-#include <math.h>
-#include "hashtable.hh"
-
-/* Primes is a class for generating prime numbers. */
-
-namespace khmer
-{
-class Primes
-{
-
-private:
-    HashIntoType n;
-
-    /* Returns true if n is prime, false otherwise */
-    bool is_prime()
-    {
-        if (n < 2) {
-            return false;
-        }
-        if (n == 2) {
-            return true;
-        }
-        if ((n % 2) == 0) {
-            return false;
-        }
-
-        HashIntoType max = (HashIntoType)pow(n, 0.5);
-        for (HashIntoType x = 3; x <= max; x+=2)
-            if ((n % x) == 0) {
-                return false;
-            }
-        return true;
-    }
-
-public:
-    Primes(HashIntoType num)
-    {
-        /* Make sure that the initial number to start from is odd
-         * and strictly greater than num */
-        n = ++num;
-        if ((n % 2) == 0) {
-            n++;
-        }
-    }
-
-    /* Returns the next prime >= n */
-    HashIntoType get_next_prime()
-    {
-        for (;;) {
-            if (is_prime()) {
-                /* If n is prime, we need to make sure to increment
-                 * n by 2 before returning, otherwise we will always
-                 * return the same prime number */
-                HashIntoType prime = n;
-                n += 2;
-                return prime;
-            }
-            n += 2;
-        }
-    }
-};
-};
-
-#endif
-
diff --git a/lib/read_aligner.cc b/lib/read_aligner.cc
index f739cb5..fd65dd3 100644
--- a/lib/read_aligner.cc
+++ b/lib/read_aligner.cc
@@ -1,8 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE. Contact: ctb at msu.edu
-//
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2013-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #include <ctype.h>
 #include <algorithm>
 #include <limits>
diff --git a/lib/read_aligner.hh b/lib/read_aligner.hh
index 05374b5..eb03d04 100644
--- a/lib/read_aligner.hh
+++ b/lib/read_aligner.hh
@@ -1,9 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE. Contact: ctb at msu.edu
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2013-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #ifndef READ_ALIGNER_HH
 #define READ_ALIGNER_HH
 
diff --git a/lib/read_aligner_test.sh b/lib/read_aligner_test.sh
deleted file mode 100755
index de88fcd..0000000
--- a/lib/read_aligner_test.sh
+++ /dev/null
@@ -1 +0,0 @@
-make read_aligner.o && g++ -o test_read_aligner test_read_aligner.cc *.o bzip2/*.o zlib/*.o && gdb ./test_read_aligner
\ No newline at end of file
diff --git a/lib/read_parsers.cc b/lib/read_parsers.cc
index 47166c6..b74448c 100644
--- a/lib/read_parsers.cc
+++ b/lib/read_parsers.cc
@@ -1,10 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2012-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #include <seqan/seq_io.h> // IWYU pragma: keep
 #include <seqan/sequence.h> // IWYU pragma: keep
 #include <seqan/stream.h> // IWYU pragma: keep
diff --git a/lib/read_parsers.hh b/lib/read_parsers.hh
index 5325acc..932d5f8 100644
--- a/lib/read_parsers.hh
+++ b/lib/read_parsers.hh
@@ -1,10 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2012-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #ifndef READ_PARSERS_HH
 #define READ_PARSERS_HH
 
diff --git a/lib/subset.cc b/lib/subset.cc
index 610815e..254c468 100644
--- a/lib/subset.cc
+++ b/lib/subset.cc
@@ -1,10 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2010-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #include <assert.h>
 #include <errno.h>
 #include <string.h>
@@ -53,7 +83,7 @@ static void print_tag_set(SeenSet& p)
 #endif //0
 
 SubsetPartition::SubsetPartition(Hashtable * ht) :
-                                 next_partition_id(2), _ht(ht)
+    next_partition_id(2), _ht(ht)
 {
 }
 
@@ -412,10 +442,14 @@ void SubsetPartition::find_all_tags(
         }
 
         nfound = traverser.traverse_right(node, node_q, filter);
-        for (unsigned int i = 0; i<nfound; ++i) breadth_q.push(breadth + 1);
+        for (unsigned int i = 0; i<nfound; ++i) {
+            breadth_q.push(breadth + 1);
+        }
 
         nfound = traverser.traverse_left(node, node_q, filter);
-        for (unsigned int i = 0; i<nfound; ++i) breadth_q.push(breadth + 1);
+        for (unsigned int i = 0; i<nfound; ++i) {
+            breadth_q.push(breadth + 1);
+        }
 
 
         first = false;
@@ -504,10 +538,14 @@ unsigned int SubsetPartition::sweep_for_tags(
         }
 
         nfound = traverser.traverse_right(node, node_q, filter);
-        for (unsigned int i = 0; i<nfound; ++i) breadth_q.push(breadth + 1);
+        for (unsigned int i = 0; i<nfound; ++i) {
+            breadth_q.push(breadth + 1);
+        }
 
         nfound = traverser.traverse_left(node, node_q, filter);
-        for (unsigned int i = 0; i<nfound; ++i) breadth_q.push(breadth + 1);
+        for (unsigned int i = 0; i<nfound; ++i) {
+            breadth_q.push(breadth + 1);
+        }
     }
 
     return total;
@@ -603,10 +641,14 @@ void SubsetPartition::find_all_tags_truncate_on_abundance(
         }
 
         nfound = traverser.traverse_right(node, node_q, filter);
-        for (unsigned int i = 0; i<nfound; ++i) breadth_q.push(breadth + 1);
+        for (unsigned int i = 0; i<nfound; ++i) {
+            breadth_q.push(breadth + 1);
+        }
 
         nfound = traverser.traverse_left(node, node_q, filter);
-        for (unsigned int i = 0; i<nfound; ++i) breadth_q.push(breadth + 1);
+        for (unsigned int i = 0; i<nfound; ++i) {
+            breadth_q.push(breadth + 1);
+        }
 
         first = false;
     }
diff --git a/lib/subset.hh b/lib/subset.hh
index 9a51151..92df78f 100644
--- a/lib/subset.hh
+++ b/lib/subset.hh
@@ -1,10 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2009-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2010-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #ifndef SUBSET_HH
 #define SUBSET_HH
 
diff --git a/lib/test-Colors.cc b/lib/test-Colors.cc
index 92e14d4..bcafd84 100644
--- a/lib/test-Colors.cc
+++ b/lib/test-Colors.cc
@@ -1,10 +1,40 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2013-2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2013-2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
 
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #include "khmer.hh"
 #include "hashtable.hh"
 #include "hashbits.hh"
diff --git a/lib/test-compile.cc b/lib/test-compile.cc
index 285801f..124ac9a 100644
--- a/lib/test-compile.cc
+++ b/lib/test-compile.cc
@@ -1,11 +1,41 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) Michigan State University, 2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
-// Author:  Kevin Murray, spam at kdmurray.id.au
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2015, Michigan State University.
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
+
 // This file is used to test compilation with libkhmer.a/libkhmer.so, after
 // installation
 
diff --git a/lib/test-read-aligner.cc b/lib/test-read-aligner.cc
deleted file mode 100644
index 9d2b6a8..0000000
--- a/lib/test-read-aligner.cc
+++ /dev/null
@@ -1,63 +0,0 @@
-#include <iostream>
-#include <vector>
-#include <string>
-#include <algorithm>
-
-#include "read_aligner.hh"
-#include "khmer.hh"
-#include "hashbits.hh"
-#include "primes.hh"
-
-using namespace khmer;
-
-// testing Hashbits parameters
-const unsigned int ht_size = 1000000;
-const unsigned int ht_count = 5;
-const WordLength ksize = 30;
-
-const unsigned int num_test_seqs = 1;
-const std::string test_seqs[] = { "TTAAATGCCCAATTTTTCCCTCTTTTCTTCTATATGTTTGATTATCAATTTTGCCGCTTTAACTGGGTCTGTTTCTACTGCAAACTTTCCACCAACAAGTTTTTCTGCATCCTGTGTTGCAATCTTAACAACCTCTTTAC" };
-
-//const std::string toalign = "TTAAATGCCCAATTTTTCCCTCTTTTCTTCTATATGTTTGATTATCAATTTTGCCGCTTTAACTGGGTCTGTTTCTACTGCAAACTTTCCACCAACAAGTTTTTCTGCATCCTGTGTTGCAATCTTAACAACCTCTTTAC"; //perfect alignment
-//const std::string toalign = "TTAAATGCCCAATTTTTCCCTCTTTTCTTCTATATGTTTGATTATCAA"; //short perfect alignment
-//const std::string toalign = "TTAAATGCCCAATTTTTCCCTCTTTTCTTCTAGATGTTTGATTATCAA"; //short mismatch alignment
-//const std::string toalign = "TTAAATGCCCAATTTTTCCCTCTTTTCTTCTATATGTATTGATTATCAA"; //short insert alignment
-//const std::string toalign = "TTAAATGCCCAATTTTTCCCTCTTTTCTTCTATTGTTTGATTATCAA"; //short delete alignment
-//const std::string toalign = "TTAAATGCCCAATTTTTCCCTCTTTTCTTCTATATGTATTGATTATCAA"; //short insert and delete alignment
-//const std::string toalign = "TTAAATGCCCAATTTTTCCCTCTTTTCTTCTATATGTATAGATTATCAA"; //short insert, delete, mismatch alignment
-const std::string toalign =
-    "TTAAATGCCCAATTTTTCCCTCTTTTCTTCTATATGTTTGATTATAATTTTGCCGCTTTAACTGGGTCTAGTTTCTACTGCAAACTTTCCACCAACTAGTTTTTCTGCATCCTTTGTTGCAATCTTAACAACCTCTTTAC"; //hard alignment
-
-int main(void)
-{
-    Primes primetab( ht_size );
-    std::vector<HashIntoType> ht_sizes;
-    for ( unsigned int i = 0; i < ht_count; ++i ) {
-        ht_sizes.push_back( primetab.get_next_prime( ) );
-    }
-    CountingHash ht(ksize, ht_sizes);
-
-    for(unsigned int index = 0; index < num_test_seqs; index++) {
-        std::cout << "Loading test sequence " << index << ": " << test_seqs[index] <<
-                  std::endl;
-        ht.consume_string(test_seqs[index]);
-    }
-
-    std::cout << std::endl << test_seqs[0] << std::endl << toalign << std::endl <<
-              std::endl;
-
-    ReadAligner aligner = ReadAligner(&ht, 1, 1.0);
-    for(unsigned int i = 0; i < 100; i++) {
-        Alignment* alignment = aligner.Align(toalign);
-        if(i % 10 == 0) {
-            std::cout << i << std::endl;
-            std::cout << "Alignment Score: " << alignment->score << std::endl;
-            std::cout << "Read alignment:  " << alignment->read_alignment << std::endl;
-            std::cout << "Graph alignment: " << alignment->graph_alignment << std::endl;
-        }
-        delete alignment;
-    }
-    //Alignment* alignment = aligner.align_test(test_seqs[0]);
-    std::cout << "Bloom read:      " << test_seqs[0] << std::endl;
-    std::cout << "Query read:      " << toalign << std::endl;
-}
diff --git a/lib/traversal.cc b/lib/traversal.cc
index 535a893..f4693be 100644
--- a/lib/traversal.cc
+++ b/lib/traversal.cc
@@ -1,10 +1,39 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) University of California Davis, 2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #include "hashtable.hh"
 #include "traversal.hh"
 
@@ -39,8 +68,8 @@ Kmer Traverser::get_right(Kmer& node, const char ch)
 }
 
 unsigned int Traverser::traverse_left(Kmer& node,
-                                       KmerQueue & node_q,
-                                       std::function<bool (Kmer&)> filter)
+                                      KmerQueue & node_q,
+                                      std::function<bool (Kmer&)> filter)
 {
     unsigned int found = 0;
 
diff --git a/lib/traversal.hh b/lib/traversal.hh
index 6f6a3a4..8f41e75 100644
--- a/lib/traversal.hh
+++ b/lib/traversal.hh
@@ -1,10 +1,39 @@
-//
-// This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-// Copyright (C) University of California Davis, 2015. It is licensed under
-// the three-clause BSD license; see LICENSE.
-// Contact: khmer-project at idyll.org
-//
-
+/*
+This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+Copyright (C) 2015, The Regents of the University of California.
+
+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 the Michigan State University 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 THE COPYRIGHT
+HOLDER OR CONTRIBUTORS 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.
+LICENSE (END)
+
+Contact: khmer-project at idyll.org
+*/
 #ifndef TRAVERSAL_HH
 #define TRAVERSAL_HH
 
@@ -18,7 +47,8 @@
 #include "kmer_hash.hh"
 #include "hashtable.hh"
 
-namespace khmer {
+namespace khmer
+{
 
 class Hashtable;
 
@@ -52,5 +82,5 @@ public:
     unsigned int degree(Kmer& node);
 };
 
-};
+}
 #endif
diff --git a/oxli/__init__.py b/oxli/__init__.py
index 077f291..821703b 100755
--- a/oxli/__init__.py
+++ b/oxli/__init__.py
@@ -1,10 +1,38 @@
 #!/usr/bin/env python
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
 #
-# This file is a part of khmer, http://github.com/ged-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2015. It is licensed under the
-# three-clause BSD license; see doc/LICENSE.txt.
-# Contact: khmer-project at idyll.org
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 
 """
 Single entry point script for khmer
@@ -13,7 +41,7 @@ Single entry point script for khmer
 import argparse
 import sys
 import textwrap
-from khmer import khmer_args
+from khmer.khmer_args import build_nodegraph_args
 from oxli import build_graph
 
 
@@ -28,17 +56,14 @@ def get_parser():
 
     subparsers = parser.add_subparsers()
 
-    # build-graph (formerly load-graph) parsers here
+    # build-graph (formerly load-graph.py) parsers here
     parser_build_graph = \
-        subparsers.add_parser('build-graph',
-                              help="Load sequences into the compressible graph"
-                              "format plus optional tagset",
-                              description="Load sequences into the "
-                              "compressible graph format plus optional tagset")
-
-    khmer_args.build_nodegraph_args("Load sequences into the compressible"
-                                    "graph format plus optional tagset.",
-                                    None, parser=parser_build_graph)
+        subparsers.add_parser(
+            name='build-graph',
+            help="Load sequences into the compressible graph format "
+            "plus optional tagset")
+
+    parser_build_graph = build_nodegraph_args(parser=parser_build_graph)
     build_graph.build_parser(parser_build_graph)
     parser_build_graph.set_defaults(func=build_graph.main)
 
diff --git a/oxli/build_graph.py b/oxli/build_graph.py
index 022e64b..119fb92 100644
--- a/oxli/build_graph.py
+++ b/oxli/build_graph.py
@@ -1,10 +1,39 @@
 #! /usr/bin/env python
 #
-# This file is part of khmer, http://github.com/ged-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see doc/LICENSE.txt.
-# Contact: khmer-project at idyll.org
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring
 """
 Build a graph from the given sequences, save in <ptname>.
@@ -43,8 +72,6 @@ def build_parser(parser):
 
 
 def main(args):
-    info('build-graph.py', ['graph', 'SeqAn'])
-
     report_on_config(args, graphtype='nodegraph')
     base = args.output_filename
     filenames = args.input_filenames
diff --git a/oxli/functions.py b/oxli/functions.py
index ac5ccb8..de06475 100644
--- a/oxli/functions.py
+++ b/oxli/functions.py
@@ -1,14 +1,41 @@
-"""
-A collection of functions for use throughout khmer/oxli
-"""
-
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
 #
-# This file is part of khmer, http://github.com/ged-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see doc/LICENSE.txt.
-# Contact: khmer-project at idyll.org
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 
+"""
+A collection of functions for use throughout khmer/oxli
+"""
 
 from __future__ import print_function
 from collections import namedtuple
diff --git a/sandbox/Makefile.read_aligner_training b/sandbox/Makefile.read_aligner_training
index 2c2419c..f793ff6 100644
--- a/sandbox/Makefile.read_aligner_training
+++ b/sandbox/Makefile.read_aligner_training
@@ -1,3 +1,38 @@
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+
 KHMER= ../khmer
 
 KSIZE= 30
diff --git a/sandbox/README.rst b/sandbox/README.rst
index 79a7f13..9735ea5 100644
--- a/sandbox/README.rst
+++ b/sandbox/README.rst
@@ -1,3 +1,41 @@
+..
+   This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+   Copyright (C) 2014-2015 Michigan State University
+   Copyright (C) 2015 The Regents of the University of California.
+   It is licensed under the three-clause BSD license; see LICENSE.
+   Contact: khmer-project at idyll.org
+   
+   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 the Michigan State University 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 THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS 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.
+   
+   Contact: khmer-project at idyll.org
+
 Sandbox scripts
 ===============
 
diff --git a/sandbox/abundance-hist-by-position.py b/sandbox/abundance-hist-by-position.py
index 5a2125f..43c5768 100755
--- a/sandbox/abundance-hist-by-position.py
+++ b/sandbox/abundance-hist-by-position.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 from __future__ import division
 from __future__ import print_function
 import sys
diff --git a/sandbox/assembly-diff-2.py b/sandbox/assembly-diff-2.py
index ca5b67b..7485615 100755
--- a/sandbox/assembly-diff-2.py
+++ b/sandbox/assembly-diff-2.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 from __future__ import print_function
 import sys
 import khmer
diff --git a/sandbox/assembly-diff.py b/sandbox/assembly-diff.py
index c884d54..501c774 100755
--- a/sandbox/assembly-diff.py
+++ b/sandbox/assembly-diff.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 from __future__ import division
 from __future__ import print_function
 import sys
diff --git a/sandbox/assemstats3.py b/sandbox/assemstats3.py
index 3b7ae42..7100927 100755
--- a/sandbox/assemstats3.py
+++ b/sandbox/assemstats3.py
@@ -1,25 +1,45 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 '''
 assemstats.py
 
 Uses screed to calculate various assembly statistics.
 
-You can obtain screed at github by running
-   git clone git://github.com/acr/screed.git
-
-Then, install by running
-   python setup.py install
-in the newly created screed directory.
-
-Once completed, you should be able to run this script as is.
-
-Author: Jason Pell (pelljaso at cse.msu.edu)
+You can obtain screed by running
+   pip install screed
 '''
 from __future__ import division
 from __future__ import print_function
diff --git a/sandbox/bloom-count.py b/sandbox/bloom-count.py
index 5b32b12..622356b 100755
--- a/sandbox/bloom-count.py
+++ b/sandbox/bloom-count.py
@@ -1,13 +1,39 @@
-from __future__ import print_function
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
 #
-# using bloom filter to count unique kmers
-
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+from __future__ import print_function
 import khmer
 import sys
 import screed
diff --git a/sandbox/build-sparse-graph.py b/sandbox/build-sparse-graph.py
index 6c9e734..8a88f36 100755
--- a/sandbox/build-sparse-graph.py
+++ b/sandbox/build-sparse-graph.py
@@ -1,11 +1,40 @@
-from __future__ import print_function
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2013-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2013-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+
+from __future__ import print_function
 import khmer
 import sys
 import screed
diff --git a/sandbox/calc-best-assembly.py b/sandbox/calc-best-assembly.py
index e370647..cc11a9b 100755
--- a/sandbox/calc-best-assembly.py
+++ b/sandbox/calc-best-assembly.py
@@ -1,9 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE. Contact: ctb at msu.edu
+# Copyright (C) 2013-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
 #
+# Contact: khmer-project at idyll.org
 from __future__ import print_function
 import screed
 import argparse
diff --git a/sandbox/calc-error-profile.py b/sandbox/calc-error-profile.py
index 10225ee..e4d122a 100755
--- a/sandbox/calc-error-profile.py
+++ b/sandbox/calc-error-profile.py
@@ -1,14 +1,43 @@
 #! /usr/bin/env python
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2013-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
 #
-# This script is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE. Contact: ctb at msu.edu
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 """
 Calculate the mismatch error profile for shotgun data, using a subset of
 reads.  The output is placed in <infile>.errhist in the cwd by default.
 
-% scripts/calc-error-profile.py [ -o outfile ] <infile>
+% sandbox/calc-error-profile.py [ -o outfile ] <infile>
 
 Reads FASTQ and FASTA input.
 """
diff --git a/sandbox/calc-median-distribution.py b/sandbox/calc-median-distribution.py
index 9cd6e52..78b8e7e 100755
--- a/sandbox/calc-median-distribution.py
+++ b/sandbox/calc-median-distribution.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2012-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 from __future__ import division
 from __future__ import print_function
 import sys
diff --git a/sandbox/collect-reads.py b/sandbox/collect-reads.py
index ddf1c25..007be70 100755
--- a/sandbox/collect-reads.py
+++ b/sandbox/collect-reads.py
@@ -1,8 +1,37 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2014-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
 # Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring,invalid-name
 """
@@ -22,7 +51,7 @@ import textwrap
 import khmer
 from khmer import khmer_args
 from khmer.khmer_args import (build_counting_args, report_on_config, info,
-                              calculate_graphsize)
+                              calculate_graphsize, sanitize_help)
 from khmer.kfile import check_input_files, check_space
 from khmer.kfile import check_space_for_graph
 import argparse
@@ -68,7 +97,7 @@ def get_parser():
 def main():
 
     info('collect-reads.py', ['counting'])
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
     report_on_config(args)
 
     base = args.output_countgraph_filename
diff --git a/sandbox/collect-variants.py b/sandbox/collect-variants.py
index 3a6c892..990c0f9 100755
--- a/sandbox/collect-variants.py
+++ b/sandbox/collect-variants.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2013-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 """
 % python scripts/collect-variants.py [ -C <cutoff> ] <data1> <data2> ...
 
diff --git a/sandbox/correct-reads.py b/sandbox/correct-reads.py
index 46e70d9..ce0181f 100755
--- a/sandbox/correct-reads.py
+++ b/sandbox/correct-reads.py
@@ -1,16 +1,44 @@
-#! /usr/bin/env python2
+#! /usr/bin/env python
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2012-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
 #
-# This file is part of khmer, http://github.com/ged-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 """
 Semi-streaming error correction.
 
 Output sequences will be placed in 'infile.corr'.
 
-% python scripts/correct-reads.py [ <data1> [ <data2> [ ... ] ] ]
+% python sandbox/correct-reads.py [ <data1> [ <data2> [ ... ] ] ]
 
 Use -h for parameter help.
 
@@ -26,7 +54,7 @@ import textwrap
 import argparse
 
 from khmer.khmer_args import (build_counting_args, info, add_loadgraph_args,
-                              report_on_config)
+                              report_on_config, sanitize_help)
 from khmer.utils import write_record, write_record_pair, broken_paired_reader
 from khmer.kfile import (check_space, check_space_for_graph,
                          check_valid_file_exists)
@@ -114,8 +142,7 @@ def get_parser():
 
 def main():
     info('correct-reads.py', ['streaming'])
-    parser = get_parser()
-    args = parser.parse_args()
+    args = sanitize_help(get_parser()).parse_args()
 
     ###
 
diff --git a/sandbox/count-kmers-single.py b/sandbox/count-kmers-single.py
index 267eadc..7fc929f 100755
--- a/sandbox/count-kmers-single.py
+++ b/sandbox/count-kmers-single.py
@@ -1,10 +1,37 @@
-#! /usr/bin/env python2
+#! /usr/bin/env python
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2015, The Regents of the University of California.
 #
-# This file is part of khmer, http://github.com/ged-lab/khmer/, and is
-# Copyright (C) University of California, Davis, 2015. It is licensed under
-# the three-clause BSD license; see doc/LICENSE.txt.
-# Contact: khmer-project at idyll.org
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring,invalid-name
 """
 Produce k-mer counts for all the k-mers in the given sequence file,
diff --git a/sandbox/count-kmers.py b/sandbox/count-kmers.py
index 302b618..d17a762 100644
--- a/sandbox/count-kmers.py
+++ b/sandbox/count-kmers.py
@@ -1,10 +1,37 @@
-#! /usr/bin/env python2
+#! /usr/bin/env python
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2015, The Regents of the University of California.
 #
-# This file is part of khmer, http://github.com/ged-lab/khmer/, and is
-# Copyright (C) University of California, Davis, 2015. It is licensed under
-# the three-clause BSD license; see doc/LICENSE.txt.
-# Contact: khmer-project at idyll.org
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring,invalid-name
 """
 Produce k-mer counts for all the k-mers in the given sequence file,
diff --git a/sandbox/error-correct-pass2.py b/sandbox/error-correct-pass2.py
index a21ab38..b8ec61f 100755
--- a/sandbox/error-correct-pass2.py
+++ b/sandbox/error-correct-pass2.py
@@ -1,10 +1,38 @@
-#! /usr/bin/env python2
+#! /usr/bin/env python
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
 #
-# This file is part of khmer, http://github.com/ged-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2013. It is licensed under
-# the three-clause BSD license; see doc/LICENSE.txt.
-# Contact: khmer-project at idyll.org
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 """
 Error correct reads based on a counting hash from a diginorm step.
 Output sequences will be put in @@@.
diff --git a/sandbox/estimate_optimal_hash.py b/sandbox/estimate_optimal_hash.py
index 2b8d450..8c31a7c 100755
--- a/sandbox/estimate_optimal_hash.py
+++ b/sandbox/estimate_optimal_hash.py
@@ -1,10 +1,38 @@
-#! /usr/bin/env python2
+#! /usr/bin/env python
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2014, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
 #
-# This file is part of khmer, http://github.com/ged-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see doc/LICENSE.txt.
-# Contact: khmer-project at idyll.org
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring,invalid-name
 """
 Estimate optimal choice of hash table parameters
@@ -29,7 +57,7 @@ Use '-h' for parameter help.
 from __future__ import print_function
 import argparse
 import khmer, oxli
-from khmer.khmer_args import info, optimal_size
+from khmer.khmer_args import info, optimal_size, sanitize_help
 import textwrap
 import sys
 
@@ -70,7 +98,7 @@ def get_parser():
 
 def main():
     info('estimate_optimal_hash.py', ['counting'])
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
     N = args.N
     if args.M:
         M = args.M
diff --git a/sandbox/extract-single-partition.py b/sandbox/extract-single-partition.py
index 4e64b3f..deb84ee 100755
--- a/sandbox/extract-single-partition.py
+++ b/sandbox/extract-single-partition.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 from __future__ import print_function
 import sys
 from screed.fasta import fasta_iter
diff --git a/sandbox/fasta-to-abundance-hist.py b/sandbox/fasta-to-abundance-hist.py
index 034a894..639561a 100755
--- a/sandbox/fasta-to-abundance-hist.py
+++ b/sandbox/fasta-to-abundance-hist.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 from __future__ import print_function
 import sys
 import khmer
diff --git a/sandbox/filter-below-abund.py b/sandbox/filter-below-abund.py
index ed902c3..16a03ba 100755
--- a/sandbox/filter-below-abund.py
+++ b/sandbox/filter-below-abund.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 from __future__ import print_function
 import sys
 import os
diff --git a/sandbox/filter-median-and-pct.py b/sandbox/filter-median-and-pct.py
index a345871..20047d5 100755
--- a/sandbox/filter-median-and-pct.py
+++ b/sandbox/filter-median-and-pct.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2012-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 """
 Accept or discard sequences XXX, based on the given counting
 hash table.  Output sequences will be placed in 'infile.medpctfilt'.
diff --git a/sandbox/filter-median.py b/sandbox/filter-median.py
index 8df398e..c6a4aa2 100755
--- a/sandbox/filter-median.py
+++ b/sandbox/filter-median.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 """
 Accept or discard sequences XXX, based on the given counting
 hash table.  Output sequences will be placed in 'infile.medfilt'.
diff --git a/sandbox/find-high-abund-kmers.py b/sandbox/find-high-abund-kmers.py
index 81ae02b..07ed044 100755
--- a/sandbox/find-high-abund-kmers.py
+++ b/sandbox/find-high-abund-kmers.py
@@ -1,13 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 from __future__ import print_function
 
 import sys
diff --git a/sandbox/graph-size.py b/sandbox/graph-size.py
index 8ca066a..1c981ba 100755
--- a/sandbox/graph-size.py
+++ b/sandbox/graph-size.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 from __future__ import print_function
 import khmer
 import sys
diff --git a/sandbox/hi-lo-abundance-by-position.py b/sandbox/hi-lo-abundance-by-position.py
index 3072d1f..c651387 100755
--- a/sandbox/hi-lo-abundance-by-position.py
+++ b/sandbox/hi-lo-abundance-by-position.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 from __future__ import print_function
 import sys
 import os
diff --git a/sandbox/make-coverage.py b/sandbox/make-coverage.py
index fb4ce39..87767a5 100755
--- a/sandbox/make-coverage.py
+++ b/sandbox/make-coverage.py
@@ -1,11 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.txt.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2013-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
 #
-
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 from __future__ import print_function
 
 import screed
diff --git a/sandbox/memusg b/sandbox/memusg
deleted file mode 100755
index 9044a99..0000000
--- a/sandbox/memusg
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/env bash
-# memusg -- Measure memory usage of processes
-# Usage: memusg COMMAND [ARGS]...
-#
-# Author: Jaeho Shin <netj at sparcs.org>
-# Created: 2010-08-16
-set -um
-
-# check input
-[ $# -gt 0 ] || { sed -n '2,/^#$/ s/^# //p' <"$0"; exit 1; }
-
-# TODO support more options: peak, footprint, sampling rate, etc.
-
-pgid=`ps -o pgid= $$`
-# make sure we're in a separate process group
-if [ $pgid = $(ps -o pgid= $(ps -o ppid= $$)) ]; then
-    cmd=
-    set -- "$0" "$@"
-    for a; do cmd+="'${a//"'"/"'\\''"}' "; done
-    exec bash -i -c "$cmd"
-fi
-
-# detect operating system and prepare measurement
-case `uname` in
-    Darwin|*BSD) sizes() { /bin/ps -o rss= -g $1; } ;;
-    Linux) sizes() { /bin/ps -o rss= -$1; } ;;
-    *) echo "`uname`: unsupported operating system" >&2; exit 2 ;;
-esac
-
-# monitor the memory usage in the background.
-(
-peak=0
-while sizes=`sizes $pgid`
-do
-    set -- $sizes
-    sample=$((${@/#/+}))
-    let peak="sample > peak ? sample : peak"
-    sleep 0.1
-done
-echo "memusg: peak=$peak" >&2
-) &
-monpid=$!
-
-
-# run the given command
-exec "$@"
diff --git a/sandbox/multi-rename.py b/sandbox/multi-rename.py
index 5261953..ea8f595 100755
--- a/sandbox/multi-rename.py
+++ b/sandbox/multi-rename.py
@@ -1,10 +1,39 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2012-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+
 from __future__ import print_function
 import screed
 import sys
diff --git a/sandbox/normalize-by-median-pct.py b/sandbox/normalize-by-median-pct.py
index f82834b..9c03e68 100755
--- a/sandbox/normalize-by-median-pct.py
+++ b/sandbox/normalize-by-median-pct.py
@@ -1,15 +1,43 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 """
 Eliminate reads with median k-mer abundance higher than
 DESIRED_COVERAGE.  Output sequences will be placed in 'infile.keep'.
 
-% python scripts/normalize-by-median.py [ -C <cutoff> ] <data1> <data2> ...
+% python sandbox/normalize-by-median-pct.py [ -C <cutoff> ] <data1> <data2> ...
 
 Use '-h' for parameter help.
 """
diff --git a/sandbox/optimal_args_hashbits.py b/sandbox/optimal_args_hashbits.py
index ad68b92..4aae527 100644
--- a/sandbox/optimal_args_hashbits.py
+++ b/sandbox/optimal_args_hashbits.py
@@ -1,10 +1,38 @@
-#! /usr/bin/env python2
+#! /usr/bin/env python
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
 #
-# This file is part of khmer, http://github.com/ged-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see doc/LICENSE.txt.
-# Contact: khmer-project at idyll.org
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=invalid-name,missing-docstring
 """
 Estimate optimal arguments using nodegraph counting.
diff --git a/sandbox/print-stoptags.py b/sandbox/print-stoptags.py
index 0729629..169ee99 100755
--- a/sandbox/print-stoptags.py
+++ b/sandbox/print-stoptags.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 import khmer
 import sys
 import os
diff --git a/sandbox/print-tagset.py b/sandbox/print-tagset.py
index ea52e26..19a950c 100755
--- a/sandbox/print-tagset.py
+++ b/sandbox/print-tagset.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 from __future__ import print_function
 import khmer
 import sys
diff --git a/sandbox/readaligner_pairhmm_train.py b/sandbox/readaligner_pairhmm_train.py
index 7a14e3e..45658f7 100644
--- a/sandbox/readaligner_pairhmm_train.py
+++ b/sandbox/readaligner_pairhmm_train.py
@@ -1,4 +1,38 @@
 #!/usr/bin/env python
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 from __future__ import division
 from __future__ import print_function
 import khmer
diff --git a/sandbox/renumber-partitions.py b/sandbox/renumber-partitions.py
index 92d3134..895cbc2 100755
--- a/sandbox/renumber-partitions.py
+++ b/sandbox/renumber-partitions.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 from __future__ import print_function
 import sys
 import screed
diff --git a/sandbox/saturate-by-median.py b/sandbox/saturate-by-median.py
index 0578470..9c04719 100755
--- a/sandbox/saturate-by-median.py
+++ b/sandbox/saturate-by-median.py
@@ -1,10 +1,39 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+
 # pylint: disable=invalid-name,missing-docstring
 """
 Count saturation curve for reads with a coverage of 1, but collect
@@ -21,7 +50,8 @@ import khmer
 import textwrap
 
 from khmer.khmer_args import (build_counting_args, add_loadgraph_args,
-                              report_on_config, info, create_countgraph)
+                              report_on_config, info, create_countgraph,
+                              sanitize_help)
 import argparse
 from khmer.kfile import (check_space, check_space_for_graph,
                          check_valid_file_exists)
@@ -177,7 +207,8 @@ def get_parser():
 
 def main():  # pylint: disable=too-many-branches,too-many-statements
     info('saturate-by-median.py', ['diginorm'])
-    args = get_parser().parse_args()
+    parser = sanitize_help(get_parser())
+    args = parser.parse_args()
 
     report_on_config(args)
 
diff --git a/sandbox/shuffle-reverse-rotary.py b/sandbox/shuffle-reverse-rotary.py
index 70d4d92..4b0bd57 100755
--- a/sandbox/shuffle-reverse-rotary.py
+++ b/sandbox/shuffle-reverse-rotary.py
@@ -1,11 +1,39 @@
-from __future__ import print_function
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2012-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+from __future__ import print_function
 import sys
 import screed
 import os.path
diff --git a/sandbox/slice-reads-by-coverage.py b/sandbox/slice-reads-by-coverage.py
index 978891b..61e91c0 100755
--- a/sandbox/slice-reads-by-coverage.py
+++ b/sandbox/slice-reads-by-coverage.py
@@ -1,9 +1,38 @@
 #! /usr/bin/env python
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2014-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
+# Copyright (C) 2014-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
 # Contact: khmer-project at idyll.org
-
 from __future__ import print_function
 import argparse
 import screed
diff --git a/sandbox/split-fasta.py b/sandbox/split-fasta.py
index bf395da..b2f15c3 100755
--- a/sandbox/split-fasta.py
+++ b/sandbox/split-fasta.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 from __future__ import print_function
 import sys
 import screed
diff --git a/sandbox/split-sequences-by-length.py b/sandbox/split-sequences-by-length.py
index 8e5aeb3..fafa927 100755
--- a/sandbox/split-sequences-by-length.py
+++ b/sandbox/split-sequences-by-length.py
@@ -1,15 +1,43 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 """
 Trim sequences at k-mers of the given abundance, based on the given counting
 hash table.  Output sequences will be placed in 'infile.abundfilt'.
 
-% python scripts/filter-abund.py <counting.ct> <data1> [ <data2> <...> ]
+% python sandbox/split-sequences-by-length.py <counting.ct> <data1> [ <data2> <...> ]
 
 Use '-h' for parameter help.
 """
diff --git a/sandbox/stoptag-abundance-hist.py b/sandbox/stoptag-abundance-hist.py
index b430133..a43a484 100755
--- a/sandbox/stoptag-abundance-hist.py
+++ b/sandbox/stoptag-abundance-hist.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 from __future__ import print_function
 import sys
 import khmer
diff --git a/sandbox/stoptags-by-position.py b/sandbox/stoptags-by-position.py
index 09c232d..21f0839 100755
--- a/sandbox/stoptags-by-position.py
+++ b/sandbox/stoptags-by-position.py
@@ -1,11 +1,39 @@
-from __future__ import print_function
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+from __future__ import print_function
 import khmer
 import sys
 import screed
diff --git a/sandbox/strip-partition.py b/sandbox/strip-partition.py
index ab972ab..14c1008 100755
--- a/sandbox/strip-partition.py
+++ b/sandbox/strip-partition.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 from __future__ import print_function
 import screed
 import sys
diff --git a/sandbox/subset-report.py b/sandbox/subset-report.py
index b8aa060..081ae40 100755
--- a/sandbox/subset-report.py
+++ b/sandbox/subset-report.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 from __future__ import print_function
 import khmer
 import sys
diff --git a/sandbox/sweep-files.py b/sandbox/sweep-files.py
index 4f12d43..47bf30c 100755
--- a/sandbox/sweep-files.py
+++ b/sandbox/sweep-files.py
@@ -1,9 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE. Contact: ctb at msu.edu
+# Copyright (C) 2014-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
 #
+# Contact: khmer-project at idyll.org
 # pylint: disable=invalid-name,missing-docstring,no-member
 
 """
@@ -36,7 +65,8 @@ from collections import defaultdict, deque
 import os
 import time
 import khmer
-from khmer.khmer_args import (build_nodegraph_args, report_on_config, info)
+from khmer.khmer_args import (build_nodegraph_args, report_on_config, info,
+                              sanitize_help)
 
 DEFAULT_OUT_PREF = 'reads'
 DEFAULT_RANGE = -1
@@ -100,7 +130,7 @@ class IODeque(deque):
 
 def main():
     #info('sweep-files.py', ['sweep'])
-    parser = get_parser()
+    parser = sanitize_help(get_parser())
     args = parser.parse_args()
 
     if args.max_tablesize < MIN_HSIZE:
diff --git a/sandbox/sweep-out-reads-with-contigs.py b/sandbox/sweep-out-reads-with-contigs.py
index afd0cf7..4f74758 100755
--- a/sandbox/sweep-out-reads-with-contigs.py
+++ b/sandbox/sweep-out-reads-with-contigs.py
@@ -1,10 +1,39 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+
 from __future__ import print_function
 import sys
 import khmer
diff --git a/sandbox/sweep-reads.py b/sandbox/sweep-reads.py
index fa878e6..cd1faae 100755
--- a/sandbox/sweep-reads.py
+++ b/sandbox/sweep-reads.py
@@ -1,11 +1,40 @@
-from __future__ import print_function, unicode_literals
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE. Contact: ctb at msu.edu
+# Copyright (C) 2013-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=invalid-name,missing-docstring,no-member
+from __future__ import print_function, unicode_literals
 
 from io import open
 
@@ -38,7 +67,8 @@ from collections import defaultdict
 import os
 import time
 import khmer
-from khmer.khmer_args import (build_nodegraph_args, report_on_config, info)
+from khmer.khmer_args import (build_nodegraph_args, report_on_config, info,
+                              sanitize_help)
 from khmer.kfile import (check_input_files, check_valid_file_exists,
                          check_space)
 
@@ -205,7 +235,7 @@ def get_parser():
 
 def main():
     info('sweep-reads-buffered.py', ['sweep'])
-    parser = get_parser()
+    parser = sanitize_help(get_parser())
     args = parser.parse_args()
 
     if args.max_tablesize < MAX_HSIZE:
diff --git a/sandbox/sweep-reads2.py b/sandbox/sweep-reads2.py
index 528dd87..943b735 100755
--- a/sandbox/sweep-reads2.py
+++ b/sandbox/sweep-reads2.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2012-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 """
 Use a set of query reads to sweep out overlapping reads from another file.
 
diff --git a/sandbox/sweep-reads3.py b/sandbox/sweep-reads3.py
index fd4b82b..0fa7571 100755
--- a/sandbox/sweep-reads3.py
+++ b/sandbox/sweep-reads3.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2012-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 """
 Use a set of query reads to sweep out overlapping reads from multiple files.
 
diff --git a/sandbox/write-trimmomatic.py b/sandbox/write-trimmomatic.py
index 5ab61e0..e18aaf6 100755
--- a/sandbox/write-trimmomatic.py
+++ b/sandbox/write-trimmomatic.py
@@ -1,10 +1,39 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2013-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+
 from __future__ import print_function
 import glob
 
diff --git a/scripts/README.txt b/scripts/README.txt
deleted file mode 100644
index 0c21597..0000000
--- a/scripts/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-See ../doc/scripts.txt for basic documentation.
diff --git a/scripts/abundance-dist-single.py b/scripts/abundance-dist-single.py
index a032e8a..4bbf991 100755
--- a/scripts/abundance-dist-single.py
+++ b/scripts/abundance-dist-single.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2010-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=invalid-name,missing-docstring
 """
 Produce the k-mer abundance distribution for the given file.
@@ -24,19 +52,25 @@ import threading
 import textwrap
 from khmer import khmer_args
 from khmer.khmer_args import (build_counting_args, add_threading_args,
-                              report_on_config, info, calculate_graphsize)
+                              report_on_config, info, calculate_graphsize,
+                              sanitize_help)
 from khmer.kfile import (check_input_files, check_space_for_graph)
 
 
 def get_parser():
-    epilog = '''
-    Note that with :option:`-b` this script is constant memory; in exchange,
-    k-mer counts will stop at 255. The memory usage of this script with
-    :option:`-b` will be about 1.15x the product of the :option:`-x` and
-    :option:`-N` numbers.
+    epilog = '''\
+    Note that with :option:`-b`/:option:`--no-bigcount` this script is constant
+    memory; in exchange, k-mer counts will stop at 255. The memory usage of
+    this script with :option:`-b` will be about 1.15x the product of the
+    :option:`-x` and :option:`-N` numbers.
 
     To count k-mers in multiple files use :program:`load_into_counting.py` and
     :program:`abundance_dist.py`.
+
+    Example::
+
+        abundance-dist-single.py -x 1e7 -N 2 -k 17 \\
+                tests/test-data/test-abund-read-2.fa test-dist
     '''
     parser = build_counting_args(
         descr="Calculate the abundance distribution of k-mers from a "
@@ -51,7 +85,7 @@ def get_parser():
                         '(4) fraction of total distinct k-mers.')
     parser.add_argument('-z', '--no-zero', dest='output_zero', default=True,
                         action='store_false',
-                        help='Do not output 0-count bins')
+                        help='Do not output zero-count bins')
     parser.add_argument('-b', '--no-bigcount', dest='bigcount', default=True,
                         action='store_false',
                         help='Do not count k-mers past 255')
@@ -68,7 +102,7 @@ def get_parser():
 
 def main():  # pylint: disable=too-many-locals,too-many-branches
     info('abundance-dist-single.py', ['counting', 'SeqAn'])
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
     report_on_config(args)
 
     check_input_files(args.input_sequence_filename, args.force)
diff --git a/scripts/abundance-dist.py b/scripts/abundance-dist.py
index ebbeedf..001d54d 100755
--- a/scripts/abundance-dist.py
+++ b/scripts/abundance-dist.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2010-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring
 """
 Produce the k-mer abundance distribution for the given file.
@@ -19,16 +47,26 @@ import sys
 import csv
 import khmer
 import argparse
+import textwrap
 import os
+from khmer import __version__
 from khmer.kfile import check_input_files
-from khmer.khmer_args import info
+from khmer.khmer_args import (info, sanitize_help, ComboFormatter,
+                              _VersionStdErrAction)
 
 
 def get_parser():
+    epilog = """\
+    Example::
+
+        load-into-countgraph.py -x 1e7 -N 2 -k 17 counts \\
+                tests/test-data/test-abund-read-2.fa
+        abundance-dist.py counts tests/test-data/test-abund-read-2.fa test-dist
+    """
     parser = argparse.ArgumentParser(
         description="Calculate abundance distribution of the k-mers in "
         "the sequence file using a pre-made k-mer countgraph.",
-        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+        formatter_class=ComboFormatter, epilog=textwrap.dedent(epilog))
 
     parser.add_argument('input_count_graph_filename', help='The name of the'
                         ' input k-mer countgraph file.')
@@ -39,15 +77,15 @@ def get_parser():
                         'count, (4) fraction of total distinct k-mers.')
     parser.add_argument('-z', '--no-zero', dest='output_zero', default=True,
                         action='store_false',
-                        help='Do not output 0-count bins')
+                        help='Do not output zero-count bins')
     parser.add_argument('-s', '--squash', dest='squash_output', default=False,
                         action='store_true',
                         help='Overwrite existing output_histogram_filename')
     parser.add_argument('-b', '--no-bigcount', dest='bigcount', default=True,
                         action='store_false',
                         help='Do not count k-mers past 255')
-    parser.add_argument('--version', action='version', version='%(prog)s ' +
-                        khmer.__version__)
+    parser.add_argument('--version', action=_VersionStdErrAction,
+                        version='khmer {v}'.format(v=__version__))
     parser.add_argument('-f', '--force', default=False, action='store_true',
                         help='Continue even if specified input files '
                         'do not exist or are empty.')
@@ -56,7 +94,7 @@ def get_parser():
 
 def main():
     info('abundance-dist.py', ['counting'])
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
 
     infiles = [args.input_count_graph_filename,
                args.input_sequence_filename]
diff --git a/scripts/annotate-partitions.py b/scripts/annotate-partitions.py
index a5e6d71..88cd669 100755
--- a/scripts/annotate-partitions.py
+++ b/scripts/annotate-partitions.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=invalid-name,missing-docstring
 """
 Annotate sequences with partition numbers.
@@ -20,20 +48,21 @@ from __future__ import print_function
 import os
 import argparse
 import textwrap
-import khmer
 import sys
+from khmer import __version__, Nodegraph
 from khmer.kfile import check_input_files, check_space
-from khmer.khmer_args import info
+from khmer.khmer_args import (info, sanitize_help, ComboFormatter,
+                              _VersionStdErrAction)
 
 DEFAULT_K = 32
 
 
 def get_parser():
-    epilog = """
-    Load in a partitionmap (generally produced by partition-graph.py or
-    merge-partitions.py) and annotate the sequences in the given files with
-    their partition IDs. Use :program:`extract-partitions.py` to extract
-    sequences into separate group files.
+    epilog = """\
+    Load in a partitionmap (generally produced by :program:`partition-graph.py`
+    or :program:`merge-partitions.py`) and annotate the sequences in the given
+    files with their partition IDs. Use :program:`extract-partitions.py` to
+    extract sequences into separate group files.
 
     Example (results will be in ``random-20-a.fa.part``)::
 
@@ -44,8 +73,7 @@ def get_parser():
     """
     parser = argparse.ArgumentParser(
         description="Annotate sequences with partition IDs.",
-        epilog=textwrap.dedent(epilog),
-        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+        epilog=textwrap.dedent(epilog), formatter_class=ComboFormatter)
 
     parser.add_argument('--ksize', '-k', type=int, default=DEFAULT_K,
                         help="k-mer size (default: %d)" % DEFAULT_K)
@@ -54,8 +82,8 @@ def get_parser():
     parser.add_argument('input_filenames', metavar='input_sequence_filename',
                         nargs='+', help='input FAST[AQ] sequences to '
                         'annotate.')
-    parser.add_argument('--version', action='version', version='%(prog)s ' +
-                        khmer.__version__)
+    parser.add_argument('--version', action=_VersionStdErrAction,
+                        version='khmer {v}'.format(v=__version__))
     parser.add_argument('-f', '--force', default=False, action='store_true',
                         help='Overwrite output file if it exists')
     return parser
@@ -63,11 +91,11 @@ def get_parser():
 
 def main():
     info('annotate-partitions.py', ['graph'])
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
 
     ksize = args.ksize
     filenames = args.input_filenames
-    nodegraph = khmer.Nodegraph(ksize, 1, 1)
+    nodegraph = Nodegraph(ksize, 1, 1)
 
     partitionmap_file = args.graphbase + '.pmap.merged'
 
diff --git a/scripts/count-median.py b/scripts/count-median.py
index 76714b3..8f41ae1 100755
--- a/scripts/count-median.py
+++ b/scripts/count-median.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2012-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring,invalid-name
 """
 Count the median/avg k-mer abundance for each sequence in the input file.
@@ -28,13 +56,14 @@ import sys
 import csv
 import textwrap
 
-import khmer
+from khmer import __version__, load_countgraph
 from khmer.kfile import check_input_files, check_space
-from khmer.khmer_args import info
+from khmer.khmer_args import (info, sanitize_help, ComboFormatter,
+                              _VersionStdErrAction)
 
 
 def get_parser():
-    epilog = """
+    epilog = """\
     Count the median/avg k-mer abundance for each sequence in the input file,
     based on the k-mer counts in the given k-mer countgraph.  Can be used
     to estimate expression levels (mRNAseq) or coverage (genomic/metagenomic).
@@ -44,13 +73,14 @@ def get_parser():
 
     Example::
 
-       count-median.py counts.ct tests/test-data/test-reads.fq.gz medians.txt
+        load-into-countgraph.py counts tests/test-data/test-reads.fq.gz
+        count-median.py counts tests/test-data/test-reads.fq.gz medians.txt
 
     NOTE: All 'N's in the input sequences are converted to 'A's.
     """
     parser = argparse.ArgumentParser(
         description='Count k-mers summary stats for sequences',
-        epilog=textwrap.dedent(epilog))
+        epilog=textwrap.dedent(epilog), formatter_class=ComboFormatter)
 
     parser.add_argument('countgraph', metavar='input_count_graph_filename',
                         help='input k-mer countgraph filename')
@@ -59,8 +89,8 @@ def get_parser():
     parser.add_argument('output', metavar='output_summary_filename',
                         help='output summary filename',
                         type=argparse.FileType('w'))
-    parser.add_argument('--version', action='version', version='%(prog)s ' +
-                        khmer.__version__)
+    parser.add_argument('--version', action=_VersionStdErrAction,
+                        version='khmer {v}'.format(v=__version__))
     parser.add_argument('-f', '--force', default=False, action='store_true',
                         help='Overwrite output file if it exists')
     return parser
@@ -68,12 +98,11 @@ def get_parser():
 
 def main():
     info('count-median.py', ['diginorm'])
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
 
     htfile = args.countgraph
     input_filename = args.input
     output = args.output
-    output_filename = str(output)
 
     infiles = [htfile, input_filename]
     for infile in infiles:
@@ -82,9 +111,9 @@ def main():
     check_space(infiles, args.force)
 
     print('loading k-mer countgraph from', htfile, file=sys.stderr)
-    countgraph = khmer.load_countgraph(htfile)
+    countgraph = load_countgraph(htfile)
     ksize = countgraph.ksize()
-    print('writing to', output_filename, file=sys.stderr)
+    print('writing to', output.name, file=sys.stderr)
 
     output = csv.writer(output)
     # write headers:
diff --git a/scripts/do-partition.py b/scripts/do-partition.py
index f74109f..e21584b 100755
--- a/scripts/do-partition.py
+++ b/scripts/do-partition.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring,invalid-name
 """
 Do all the partition steps in one script.
@@ -24,7 +52,7 @@ import os
 import textwrap
 from khmer import khmer_args
 from khmer.khmer_args import (build_nodegraph_args, report_on_config, info,
-                              add_threading_args)
+                              add_threading_args, sanitize_help)
 import glob
 from khmer.kfile import check_input_files, check_space
 import re
@@ -41,10 +69,10 @@ DEFAULT_N_THREADS = 4
 DEFAULT_K = 32
 
 
-def worker(queue, basename, stop_big_traversals):
+def worker(tasks, basename, stop_big_traversals):
     while True:
         try:
-            (nodegraph, index, start, stop) = queue.get(False)
+            (nodegraph, index, start, stop) = tasks.get(False)
         except queue.Empty:
             print('exiting', file=sys.stderr)
             return
@@ -68,15 +96,20 @@ def worker(queue, basename, stop_big_traversals):
 
 
 def get_parser():
-    epilog = """
+    epilog = """\
     Load in a set of sequences, partition them, merge the partitions, and
     annotate the original sequences files with the partition information.
 
-    This script combines the functionality of :program:`load-graph.py`,
-    :program:`partition-graph.py`, :program:`merge-partitions.py`, and
-    :program:`annotate-partitions.py` into one script. This is convenient
-    but should probably not be used for large data sets, because
-    :program:`do-partition.py` doesn't provide save/resume functionality.
+    This script combines the functionality of
+    :program:`load-graph.py`, :program:`partition-graph.py`,
+    :program:`merge-partitions.py`, and :program:`annotate-partitions.py` into
+    one script. This is convenient but should probably not be used for large
+    data sets, because :program:`do-partition.py` doesn't provide save/resume
+    functionality.
+
+    Example::
+
+        do-partition.py -k 20 example tests/test-data/random-20-a.fa
     """
     parser = build_nodegraph_args(
         descr='Load, partition, and annotate FAST[AQ] sequences',
@@ -102,7 +135,7 @@ def get_parser():
 # pylint: disable=too-many-branches
 def main():  # pylint: disable=too-many-locals,too-many-statements
     info('do-partition.py', ['graph'])
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
 
     report_on_config(args, graphtype='nodegraph')
 
@@ -120,7 +153,7 @@ def main():  # pylint: disable=too-many-locals,too-many-statements
     print('N THREADS', args.threads, file=sys.stderr)
     print('--', file=sys.stderr)
 
-    # load-graph
+    # load-graph.py
 
     print('making nodegraph', file=sys.stderr)
     nodegraph = khmer_args.create_nodegraph(args)
diff --git a/scripts/extract-long-sequences.py b/scripts/extract-long-sequences.py
index 46680d8..0656c48 100755
--- a/scripts/extract-long-sequences.py
+++ b/scripts/extract-long-sequences.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=invalid-name,missing-docstring
 
 """
@@ -21,16 +49,25 @@ Use '-h' for parameter help.
 from __future__ import print_function
 import argparse
 import screed
+import textwrap
 import sys
+from khmer import __version__
 from khmer.utils import write_record
 from khmer.kfile import add_output_compression_type, get_file_writer
+from khmer.khmer_args import (ComboFormatter, sanitize_help, info,
+                              _VersionStdErrAction)
 
 
 def get_parser():
+    epilog = """\
+    Example::
+
+        extract-long-sequences.py --length 10 tests/test-data/paired-mixed.fa
+    """
     parser = argparse.ArgumentParser(
         description='Extract FASTQ or FASTA sequences longer than'
         ' specified length (default: 200 bp).',
-        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+        formatter_class=ComboFormatter, epilog=textwrap.dedent(epilog))
 
     parser.add_argument('input_filenames', help='Input FAST[AQ]'
                         ' sequence filename.', nargs='+')
@@ -40,12 +77,15 @@ def get_parser():
     parser.add_argument('-l', '--length', help='The minimum length of'
                         ' the sequence file.',
                         type=int, default=200)
+    parser.add_argument('--version', action=_VersionStdErrAction,
+                        version='khmer {v}'.format(v=__version__))
     add_output_compression_type(parser)
     return parser
 
 
 def main():
-    args = get_parser().parse_args()
+    info('extract-long-sequences.py')
+    args = sanitize_help(get_parser()).parse_args()
     outfp = get_file_writer(args.output, args.gzip, args.bzip)
     for filename in args.input_filenames:
         for record in screed.open(filename):
diff --git a/scripts/extract-paired-reads.py b/scripts/extract-paired-reads.py
index ba750dc..0f3ff9a 100755
--- a/scripts/extract-paired-reads.py
+++ b/scripts/extract-paired-reads.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2013-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
 #
-# This script is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
 #
+# Contact: khmer-project at idyll.org
 # pylint: disable=invalid-name,missing-docstring
 """
 Split up pairs and singletons.
@@ -22,9 +50,11 @@ import sys
 import os.path
 import textwrap
 import argparse
-import khmer
+
+from khmer import __version__
 from khmer.kfile import check_input_files, check_space
-from khmer.khmer_args import info
+from khmer.khmer_args import (info, sanitize_help, ComboFormatter,
+                              _VersionStdErrAction)
 from khmer.kfile import add_output_compression_type
 from khmer.kfile import get_file_writer
 
@@ -32,7 +62,7 @@ from khmer.utils import broken_paired_reader, write_record, write_record_pair
 
 
 def get_parser():
-    epilog = """
+    epilog = """\
     Many read-handling programs (assemblers, mappers, etc.) require
     that you give them either perfectly interleaved files, or files
     containing only single reads. This script takes files that were
@@ -41,8 +71,8 @@ def get_parser():
     normalization in non-paired mode, or partitioning) and separates
     the interleaved reads from the orphaned reads.
 
-    The default output is two files, <input file>.pe and <input
-    file>.se, placed in the current directory. The .pe file contains
+    The default output is two files, `<input file>.pe` and `<input
+    file>.se`, placed in the current directory. The .pe file contains
     interleaved and properly paired sequences, while the .se file
     contains orphan sequences.
 
@@ -61,15 +91,14 @@ def get_parser():
     """
     parser = argparse.ArgumentParser(
         description='Take a mixture of reads and split into pairs and '
-        'orphans.', epilog=textwrap.dedent(epilog))
+        'orphans.', epilog=textwrap.dedent(epilog),
+        formatter_class=ComboFormatter)
     parser.add_argument('infile', nargs='?', default='/dev/stdin')
-    parser.add_argument('--version', action='version', version='%(prog)s ' +
-                        khmer.__version__)
-
+    parser.add_argument('--version', action=_VersionStdErrAction,
+                        version='khmer {v}'.format(v=__version__))
     parser.add_argument('-d', '--output-dir', default='', help='Output '
                         'split reads to specified directory. Creates '
                         'directory if necessary')
-
     parser.add_argument('--output-paired', '-p', metavar="filename",
                         type=argparse.FileType('wb'),
                         default=None, help='Output paired reads to this '
@@ -85,7 +114,7 @@ def get_parser():
 
 def main():
     info('extract-paired-reads.py')
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
 
     infile = args.infile
     check_input_files(infile, args.force)
diff --git a/scripts/extract-partitions.py b/scripts/extract-partitions.py
index 9d7093d..000cb3a 100755
--- a/scripts/extract-partitions.py
+++ b/scripts/extract-partitions.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=invalid-name,missing-docstring
 """
 Extract partitioned sequences into files grouped by partition size.
@@ -24,11 +52,12 @@ import sys
 import screed
 import argparse
 import textwrap
-import khmer
+from khmer import __version__
 from khmer.kfile import (check_input_files, check_space,
                          add_output_compression_type,
                          get_file_writer)
-from khmer.khmer_args import info
+from khmer.khmer_args import (info, sanitize_help, ComboFormatter,
+                              _VersionStdErrAction)
 from khmer.utils import write_record
 
 DEFAULT_MAX_SIZE = int(1e6)
@@ -42,7 +71,7 @@ def read_partition_file(filename):
 
 
 def get_parser():
-    epilog = """
+    epilog = """\
     Example (results will be in ``example.group0000.fa``)::
 
         load-graph.py -k 20 example tests/test-data/random-20-a.fa
@@ -51,15 +80,15 @@ def get_parser():
         annotate-partitions.py -k 20 example tests/test-data/random-20-a.fa
         extract-partitions.py example random-20-a.fa.part
 
-        (extract-partitions.py will produce a partition size distribution
-        in <base>.dist. The columns are: (1) number of reads, (2) count
-        of partitions with n reads, (3) cumulative sum of partitions,
-        (4) cumulative sum of reads.)
+    (:program:`extract-partitions.py` will produce a partition size
+    distribution in <base>.dist. The columns are: (1) number of reads,
+    (2) count of partitions with n reads, (3) cumulative sum of partitions,
+    (4) cumulative sum of reads.)
     """
     parser = argparse.ArgumentParser(
         description="Separate sequences that are annotated with partitions "
         "into grouped files.", epilog=textwrap.dedent(epilog),
-        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+        formatter_class=ComboFormatter)
     parser.add_argument('prefix', metavar='output_filename_prefix')
     parser.add_argument('part_filenames', metavar='input_partition_filename',
                         nargs='+')
@@ -75,8 +104,8 @@ def get_parser():
     parser.add_argument('--output-unassigned', '-U', default=False,
                         action='store_true',
                         help='Output unassigned sequences, too')
-    parser.add_argument('--version', action='version', version='%(prog)s ' +
-                        khmer.__version__)
+    parser.add_argument('--version', action=_VersionStdErrAction,
+                        version='khmer {v}'.format(v=__version__))
     parser.add_argument('-f', '--force', default=False, action='store_true',
                         help='Overwrite output file if it exists')
     add_output_compression_type(parser)
@@ -86,7 +115,7 @@ def get_parser():
 # pylint: disable=too-many-statements
 def main():  # pylint: disable=too-many-locals,too-many-branches
     info('extract-partitions.py', ['graph'])
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
 
     distfilename = args.prefix + '.dist'
 
diff --git a/scripts/fastq-to-fasta.py b/scripts/fastq-to-fasta.py
index 5cfb785..349f4b5 100755
--- a/scripts/fastq-to-fasta.py
+++ b/scripts/fastq-to-fasta.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=invalid-name,missing-docstring
 
 """
@@ -18,15 +46,18 @@ from __future__ import print_function, unicode_literals
 import sys
 import argparse
 import screed
+from khmer import __version__
 from khmer.kfile import (add_output_compression_type, get_file_writer,
                          is_block, describe_file_handle)
 from khmer.utils import write_record
+from khmer.khmer_args import (sanitize_help, ComboFormatter, info,
+                              _VersionStdErrAction)
 
 
 def get_parser():
     parser = argparse.ArgumentParser(
         description='Converts FASTQ format (.fq) files to FASTA format (.fa).',
-        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+        formatter_class=ComboFormatter)
 
     parser.add_argument('input_sequence', help='The name of the input'
                         ' FASTQ sequence file.')
@@ -38,12 +69,15 @@ def get_parser():
     parser.add_argument('-n', '--n_keep', default=False, action='store_true',
                         help='Option to keep reads containing \'N\'s in '
                              'input_sequence file. Default is to drop reads')
+    parser.add_argument('--version', action=_VersionStdErrAction,
+                        version='khmer {v}'.format(v=__version__))
     add_output_compression_type(parser)
     return parser
 
 
 def main():
-    args = get_parser().parse_args()
+    info('fastq-to-fasta.py')
+    args = sanitize_help(get_parser()).parse_args()
 
     print(('fastq from ', args.input_sequence), file=sys.stderr)
     outfp = get_file_writer(args.output, args.gzip, args.bzip)
diff --git a/scripts/filter-abund-single.py b/scripts/filter-abund-single.py
index 8a82555..b6790ca 100755
--- a/scripts/filter-abund-single.py
+++ b/scripts/filter-abund-single.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2013-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring,invalid-name
 """
 Sequence trimming by abundance w/o countgraph.
@@ -26,7 +54,8 @@ import textwrap
 from khmer.thread_utils import ThreadedSequenceProcessor, verbose_loader
 from khmer import khmer_args
 from khmer.khmer_args import (build_counting_args, report_on_config,
-                              add_threading_args, info, calculate_graphsize)
+                              add_threading_args, info, calculate_graphsize,
+                              sanitize_help)
 from khmer.kfile import (check_input_files, check_space,
                          check_space_for_graph,
                          add_output_compression_type,
@@ -36,8 +65,9 @@ DEFAULT_CUTOFF = 2
 
 
 def get_parser():
-    epilog = """
-    Trimmed sequences will be placed in ${input_sequence_filename}.abundfilt.
+    epilog = """\
+    Trimmed sequences will be placed in
+    ``${input_sequence_filename}.abundfilt``.
 
     This script is constant memory.
 
@@ -68,7 +98,7 @@ def get_parser():
 
 def main():
     info('filter-abund-single.py', ['counting', 'SeqAn'])
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
 
     check_input_files(args.datafile, args.force)
     check_space([args.datafile], args.force)
@@ -130,14 +160,12 @@ def main():
     tsp = ThreadedSequenceProcessor(process_fn)
     tsp.start(verbose_loader(args.datafile), outfp)
 
-    print('output in', outfile, file=sys.stderr)
+    print('output in', outfile.name, file=sys.stderr)
 
     if args.savegraph:
         print('Saving k-mer countgraph filename',
               args.savegraph, file=sys.stderr)
-        print('...saving to', args.savegraph, file=sys.stderr)
         graph.save(args.savegraph)
-    print('wrote to: ', outfile, file=sys.stderr)
 
 if __name__ == '__main__':
     main()
diff --git a/scripts/filter-abund.py b/scripts/filter-abund.py
index 1f79a9e..9d9b764 100755
--- a/scripts/filter-abund.py
+++ b/scripts/filter-abund.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring,invalid-name
 """
 Sequence trimming by abundance using countgraph.
@@ -23,7 +51,8 @@ import textwrap
 import argparse
 import sys
 from khmer.thread_utils import ThreadedSequenceProcessor, verbose_loader
-from khmer.khmer_args import (ComboFormatter, add_threading_args, info)
+from khmer.khmer_args import (ComboFormatter, add_threading_args, info,
+                              sanitize_help, _VersionStdErrAction)
 from khmer.kfile import (check_input_files, check_space,
                          add_output_compression_type, get_file_writer)
 from khmer import __version__
@@ -33,10 +62,11 @@ DEFAULT_CUTOFF = 2
 
 
 def get_parser():
-    epilog = """
-    Trimmed sequences will be placed in ${input_sequence_filename}.abundfilt
-    for each input sequence file. If the input sequences are from RNAseq or
-    metagenome sequencing then :option:`--variable-coverage` should be used.
+    epilog = """\
+    Trimmed sequences will be placed in
+    ``${input_sequence_filename}.abundfilt`` for each input sequence file. If
+    the input sequences are from RNAseq or metagenome sequencing then
+    :option:`--variable-coverage` should be used.
 
     Example::
 
@@ -69,7 +99,7 @@ def get_parser():
                         help='Output the trimmed sequences into a single file '
                         'with the given filename instead of creating a new '
                         'file for each input file.')
-    parser.add_argument('--version', action='version',
+    parser.add_argument('--version', action=_VersionStdErrAction,
                         version='khmer {v}'.format(v=__version__))
     parser.add_argument('-f', '--force', default=False, action='store_true',
                         help='Overwrite output file if it exists')
@@ -79,7 +109,7 @@ def get_parser():
 
 def main():
     info('filter-abund.py', ['counting'])
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
 
     check_input_files(args.input_graph, args.force)
     infiles = args.input_filename
diff --git a/scripts/filter-stoptags.py b/scripts/filter-stoptags.py
index e2d1cb8..4472ab9 100755
--- a/scripts/filter-stoptags.py
+++ b/scripts/filter-stoptags.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=invalid-name,missing-docstring
 """
 Sequence trimming using stoptags.
@@ -19,35 +47,35 @@ Use '-h' for parameter help.
 from __future__ import print_function
 
 import os
-import khmer
 import argparse
 import textwrap
 import sys
+from khmer import __version__, Nodegraph
 from khmer.thread_utils import ThreadedSequenceProcessor, verbose_loader
 from khmer.kfile import check_input_files, check_space
-from khmer.khmer_args import info
+from khmer.khmer_args import (info, sanitize_help, ComboFormatter,
+                              _VersionStdErrAction)
 
 # @CTB K should be loaded from file...
 DEFAULT_K = 32
 
 
 def get_parser():
-    epilog = """
-    Load stoptags in from the given .stoptags file and use them to trim
-    or remove the sequences in <file1-N>.  Trimmed sequences will be placed in
-    <fileN>.stopfilt.
+    epilog = """\
+    Load stoptags in from the given `.stoptags` file and use them to trim
+    or remove the sequences in `<file1-N>`.  Trimmed sequences will be placed
+    in `<fileN>.stopfilt`.
     """
     parser = argparse.ArgumentParser(
         description="Trim sequences at stoptags.",
-        epilog=textwrap.dedent(epilog),
-        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+        epilog=textwrap.dedent(epilog), formatter_class=ComboFormatter)
     parser.add_argument('--ksize', '-k', default=DEFAULT_K, type=int,
                         help='k-mer size')
     parser.add_argument('stoptags_file', metavar='input_stoptags_filename')
     parser.add_argument('input_filenames', metavar='input_sequence_filename',
                         nargs='+')
-    parser.add_argument('--version', action='version', version='%(prog)s ' +
-                        khmer.__version__)
+    parser.add_argument('--version', action=_VersionStdErrAction,
+                        version='khmer {v}'.format(v=__version__))
     parser.add_argument('-f', '--force', default=False, action='store_true',
                         help='Overwrite output file if it exists')
     return parser
@@ -55,7 +83,7 @@ def get_parser():
 
 def main():
     info('filter-stoptags.py', ['graph'])
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
     stoptags = args.stoptags_file
     infiles = args.input_filenames
 
@@ -65,7 +93,7 @@ def main():
     check_space(infiles, args.force)
 
     print('loading stop tags, with K', args.ksize, file=sys.stderr)
-    nodegraph = khmer.Nodegraph(args.ksize, 1, 1)
+    nodegraph = Nodegraph(args.ksize, 1, 1)
     nodegraph.load_stop_tags(stoptags)
 
     def process_fn(record):
diff --git a/scripts/find-knots.py b/scripts/find-knots.py
index 3683369..96c75db 100755
--- a/scripts/find-knots.py
+++ b/scripts/find-knots.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=invalid-name,missing-docstring
 """
 Find highly-connected k-mers.
@@ -24,7 +52,8 @@ import sys
 from khmer.kfile import check_input_files, check_space
 from khmer import khmer_args
 from khmer.khmer_args import (build_counting_args, info, add_loadgraph_args,
-                              report_on_config)
+                              report_on_config, sanitize_help,
+                              ComboFormatter)
 
 # counting hash parameters.
 DEFAULT_COUNTING_HT_SIZE = 3e6                # number of bytes
@@ -48,13 +77,15 @@ EXCURSION_KMER_COUNT_THRESHOLD = 2
 
 
 def get_parser():
-    epilog = """
-    Load an k-mer nodegraph/tagset pair created by load-graph, and a set
-    of pmap files created by partition-graph. Go through each pmap file,
+    epilog = """\
+    Load an k-mer nodegraph/tagset pair created by
+    :program:`load-graph.py`, and a set of pmap files created by
+    :program:`partition-graph.py`. Go through each pmap file,
     select the largest partition in each, and do the same kind of traversal as
     in :program:`make-initial-stoptags.py` from each of the waypoints in that
-    partition; this should identify all of the HCKs in that partition. These
-    HCKs are output to <graphbase>.stoptags after each pmap file.
+    partition; this should identify all of the Highly Connected Kmers in that
+    partition. These HCKs are output to ``<graphbase>.stoptags`` after each
+    pmap file.
 
     Parameter choice is reasonably important. See the pipeline in
     :doc:`partitioning-big-data` for an example run.
@@ -77,7 +108,13 @@ def get_parser():
 
 def main():
     info('find-knots.py', ['graph'])
-    args = get_parser().parse_args()
+    parser = get_parser()
+    parser.epilog = parser.epilog.replace(
+        ":doc:`partitioning-big-data`",
+        "http://khmer.readthedocs.org/en/stable/user/"
+        "partitioning-big-data.html"
+    )
+    args = sanitize_help(parser).parse_args()
 
     graphbase = args.graphbase
 
diff --git a/scripts/interleave-reads.py b/scripts/interleave-reads.py
index 286de96..a96b03e 100755
--- a/scripts/interleave-reads.py
+++ b/scripts/interleave-reads.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=invalid-name,missing-docstring
 """
 Interleave left and right reads.
@@ -23,9 +51,10 @@ import sys
 import os
 import textwrap
 import argparse
-import khmer
+from khmer import __version__
 from khmer.kfile import check_input_files, check_space, is_block
-from khmer.khmer_args import info
+from khmer.khmer_args import (info, sanitize_help, ComboFormatter,
+                              _VersionStdErrAction)
 from khmer.kfile import (add_output_compression_type, get_file_writer,
                          describe_file_handle)
 from khmer.utils import (write_record_pair, check_is_left, check_is_right,
@@ -38,30 +67,30 @@ except ImportError:
 
 
 def get_parser():
-    epilog = """
+    epilog = """\
     The output is an interleaved set of reads, with each read in <R1> paired
     with a read in <R2>. By default, the output goes to stdout unless
     :option:`-o`/:option:`--output` is specified.
 
     As a "bonus", this file ensures that if read names are not already
     formatted properly, they are reformatted consistently, such that
-    they look like the pre-1.8 Casava format (@name/1, @name/2).
+    they look like the pre-1.8 Casava format (`@name/1`, `@name/2`).
 
     Example::
 
-""" "        interleave-reads.py tests/test-data/paired.fq.1 tests/test-data/paired.fq.2 -o paired.fq"  # noqa
+        interleave-reads.py tests/test-data/paired.fq.1 \\
+                tests/test-data/paired.fq.2 -o paired.fq"""
     parser = argparse.ArgumentParser(
         description='Produce interleaved files from R1/R2 paired files',
-        epilog=textwrap.dedent(epilog),
-        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+        epilog=textwrap.dedent(epilog), formatter_class=ComboFormatter)
 
     parser.add_argument('left')
     parser.add_argument('right')
     parser.add_argument('-o', '--output', metavar="filename",
                         type=argparse.FileType('wb'),
                         default=sys.stdout)
-    parser.add_argument('--version', action='version', version='%(prog)s ' +
-                        khmer.__version__)
+    parser.add_argument('--version', action=_VersionStdErrAction,
+                        version='khmer {v}'.format(v=__version__))
     parser.add_argument('-f', '--force', default=False, action='store_true',
                         help='Overwrite output file if it exists')
     add_output_compression_type(parser)
@@ -70,7 +99,7 @@ def get_parser():
 
 def main():
     info('interleave-reads.py')
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
 
     check_input_files(args.left, args.force)
     check_input_files(args.right, args.force)
diff --git a/scripts/load-graph.py b/scripts/load-graph.py
index f9ae753..0e74729 100755
--- a/scripts/load-graph.py
+++ b/scripts/load-graph.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint disable=missing-docstring
 """
 Build a graph from the given sequences, save in <ptname>.
@@ -16,7 +44,7 @@ Use '-h' for parameter help.
 
 import sys
 
-from khmer.khmer_args import build_nodegraph_args
+from khmer.khmer_args import build_nodegraph_args, info
 from oxli import build_graph
 
 
@@ -29,6 +57,7 @@ def get_parser():
 
 
 if __name__ == '__main__':
+    info('load-graph.py', ['graph', 'SeqAn'])
     build_graph.main(get_parser().parse_args())
 
 # vim: set ft=python ts=4 sts=4 sw=4 et tw=79:
diff --git a/scripts/load-into-counting.py b/scripts/load-into-counting.py
index ddb63f0..c616d5a 100755
--- a/scripts/load-into-counting.py
+++ b/scripts/load-into-counting.py
@@ -1,8 +1,37 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
 # Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring,invalid-name
 """
@@ -21,31 +50,32 @@ import threading
 import textwrap
 import khmer
 from khmer import khmer_args
-from khmer.khmer_args import build_counting_args, report_on_config, info,\
-    add_threading_args, calculate_graphsize
+from khmer.khmer_args import (build_counting_args, report_on_config, info,
+                              add_threading_args, calculate_graphsize,
+                              sanitize_help)
 from khmer.kfile import check_file_writable
 from khmer.kfile import check_input_files
 from khmer.kfile import check_space_for_graph
 
 
 def get_parser():
-    epilog = """
-    Note: with :option:`-b` the output will be the exact size of the
-    k-mer countgraph and this script will use a constant amount of memory.
-    In exchange k-mer counts will stop at 255. The memory usage of this script
-    with :option:`-b` will be about 1.15x the product of the :option:`-x` and
-    :option:`-N` numbers.
+    epilog = """\
+    Note: with :option:`-b`/:option:`--no-bigcount` the output will be the
+    exact size of the k-mer countgraph and this script will use a constant
+    amount of memory. In exchange k-mer counts will stop at 255. The memory
+    usage of this script with :option:`-b` will be about 1.15x the product of
+    the :option:`-x` and :option:`-N` numbers.
 
     Example::
 
-        load-into-counting.py -k 20 -x 5e7 out.ct data/100k-filtered.fa
+        load-into-counting.py -k 20 -x 5e7 out data/100k-filtered.fa
 
     Multiple threads can be used to accelerate the process, if you have extra
     cores to spare.
 
     Example::
 
-        load-into-counting.py -k 20 -x 5e7 -T 4 out.ct data/100k-filtered.fa
+        load-into-counting.py -k 20 -x 5e7 -T 4 out data/100k-filtered.fa
     """
 
     parser = build_counting_args("Build a k-mer countgraph from the given"
@@ -63,7 +93,8 @@ def get_parser():
     parser.add_argument('--summary-info', '-s', type=str, default=None,
                         metavar="FORMAT", choices=[str('json'), str('tsv')],
                         help="What format should the machine readable run "
-                        "summary be in? (json or tsv, disabled by default)")
+                        "summary be in? (`json` or `tsv`, disabled by"
+                        " default)")
     parser.add_argument('-f', '--force', default=False, action='store_true',
                         help='Overwrite output file if it exists')
     return parser
@@ -73,7 +104,7 @@ def main():
 
     info('load-into-counting.py', ['counting', 'SeqAn'])
 
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
     report_on_config(args)
 
     base = args.output_countgraph_filename
diff --git a/scripts/make-initial-stoptags.py b/scripts/make-initial-stoptags.py
index 5d15cd1..04fa92b 100755
--- a/scripts/make-initial-stoptags.py
+++ b/scripts/make-initial-stoptags.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=invalid-name,missing-docstring
 """
 Find an initial set of highly connected k-mers, to save on repartitioning time.
@@ -17,7 +45,7 @@ import sys
 import textwrap
 import khmer
 from khmer import khmer_args
-from khmer.khmer_args import (build_counting_args, info)
+from khmer.khmer_args import (build_counting_args, info, sanitize_help)
 from khmer.kfile import check_input_files
 
 DEFAULT_SUBSET_SIZE = int(1e4)
@@ -41,13 +69,14 @@ EXCURSION_KMER_COUNT_THRESHOLD = 5
 
 
 def get_parser():
-    epilog = """
-    Loads a k-mer nodegraph/tagset pair created by load-graph.py, and does
-    a small set of traversals from graph waypoints; on these traversals, looks
-    for k-mers that are repeatedly traversed in high-density regions of the
-    graph, i.e. are highly connected. Outputs those k-mers as an initial set of
-    stoptags, which can be fed into partition-graph.py, find-knots.py, and
-    filter-stoptags.py.
+    epilog = """\
+    Loads a k-mer nodegraph/tagset pair created by
+    :program:`load-graph.py`, and
+    does a small set of traversals from graph waypoints; on these traversals,
+    looks for k-mers that are repeatedly traversed in high-density regions of
+    the graph, i.e. are highly connected. Outputs those k-mers as an initial
+    set of stoptags, which can be fed into :program:`partition-graph.py`,
+    :program:`find-knots.py`, and :program:`filter-stoptags.py`.
 
     The k-mer countgraph size options parameters are for a k-mer countgraph
     to keep track of repeatedly-traversed k-mers. The subset size option
@@ -72,7 +101,7 @@ def get_parser():
 def main():
 
     info('make-initial-stoptags.py', ['graph'])
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
 
     graphbase = args.graphbase
 
diff --git a/scripts/merge-partitions.py b/scripts/merge-partitions.py
index 7d4c172..21cc193 100755
--- a/scripts/merge-partitions.py
+++ b/scripts/merge-partitions.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=invalid-name,missing-docstring
 """
 Merge multiple pmap files into a single one.
@@ -22,20 +50,23 @@ import os
 import textwrap
 import khmer
 import sys
+from khmer import __version__
 from khmer.kfile import check_input_files, check_space
-from khmer.khmer_args import info
+from khmer.khmer_args import (info, sanitize_help, ComboFormatter,
+                              _VersionStdErrAction)
 
 DEFAULT_K = 32
 
 
 def get_parser():
-    epilog = """
-    Take the ${graphbase}.subset.#.pmap files and merge them all into a single
-    ${graphbase}.pmap.merged file for :program:`annotate-partitions.py` to use.
+    epilog = """\
+    Take the ``${graphbase}.subset.#.pmap`` files and merge them all into a
+    single ``${graphbase}.pmap.merged`` file for
+    :program:`annotate-partitions.py` to use.
     """
     parser = argparse.ArgumentParser(
         description="Merge partition map '.pmap' files.",
-        epilog=textwrap.dedent(epilog))
+        epilog=textwrap.dedent(epilog), formatter_class=ComboFormatter)
     parser.add_argument('--ksize', '-k', type=int, default=DEFAULT_K,
                         help="k-mer size (default: %d)" % DEFAULT_K)
     parser.add_argument('--keep-subsets', dest='remove_subsets',
@@ -43,8 +74,8 @@ def get_parser():
                         help='Keep individual subsets (default: False)')
     parser.add_argument('graphbase', help='basename for input and output '
                         'files')
-    parser.add_argument('--version', action='version', version='%(prog)s ' +
-                        khmer.__version__)
+    parser.add_argument('--version', action=_VersionStdErrAction,
+                        version='khmer {v}'.format(v=__version__))
     parser.add_argument('-f', '--force', default=False, action='store_true',
                         help='Overwrite output file if it exists')
     return parser
@@ -52,7 +83,7 @@ def get_parser():
 
 def main():
     info('merge-partitions.py', ['graph'])
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
 
     output_file = args.graphbase + '.pmap.merged'
     pmap_files = glob.glob(args.graphbase + '.subset.*.pmap')
diff --git a/scripts/normalize-by-median.py b/scripts/normalize-by-median.py
index a3f5300..9be0a13 100755
--- a/scripts/normalize-by-median.py
+++ b/scripts/normalize-by-median.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
 #
+# Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring
 """
 Eliminate surplus reads.
@@ -27,7 +55,8 @@ import textwrap
 from khmer import khmer_args
 from contextlib import contextmanager
 from khmer.khmer_args import (build_counting_args, add_loadgraph_args,
-                              report_on_config, info, calculate_graphsize)
+                              report_on_config, info, calculate_graphsize,
+                              sanitize_help)
 import argparse
 from khmer.kfile import (check_space, check_space_for_graph,
                          check_valid_file_exists, add_output_compression_type,
@@ -181,7 +210,7 @@ def catch_io_errors(ifile, out, single_out, force, corrupt_files):
 
 
 def get_parser():
-    epilog = ("""
+    epilog = """\
     Discard sequences based on whether or not their median k-mer abundance lies
     above a specified cutoff. Kept sequences will be placed in <fileN>.keep.
 
@@ -190,12 +219,12 @@ def get_parser():
     reads from a fragment, and helps with retention of repeats.)
     Unpaired reads are treated individually.
 
-    If :option:`-p`/`--paired` is set, then proper pairing is required
+    If :option:`-p`/:option:`--paired` is set, then proper pairing is required
     and the script will exit on unpaired reads, although
     :option:`--unpaired-reads` can be used to supply a file of orphan
     reads to be read after the paired reads.
 
-    :option:`--force-single` will ignore all pairing information and treat
+    :option:`--force_single` will ignore all pairing information and treat
     reads individually.
 
     With :option:`-s`/:option:`--savegraph`, the k-mer countgraph
@@ -216,32 +245,36 @@ def get_parser():
 
     Example::
 
-""" "        normalize-by-median.py -p -k 17 tests/test-data/test-abund-read-paired.fa"  # noqa
-    """
+        normalize-by-median.py -p -k 17 \\
+        tests/test-data/test-abund-read-paired.fa
 
     Example::
 
-""" "        normalize-by-median.py -p -k 17 -o - tests/test-data/paired.fq >> appended-output.fq"  # noqa
-    """
+        normalize-by-median.py -p -k 17 -o - tests/test-data/paired.fq \\
+        >> appended-output.fq
 
     Example::
 
-""" "        normalize-by-median.py -k 17 -f tests/test-data/test-error-reads.fq tests/test-data/test-fastq-reads.fq"  # noqa
-    """
+        normalize-by-median.py -k 17 -f tests/test-data/test-error-reads.fq \\
+        tests/test-data/test-fastq-reads.fq
 
     Example::
 
-""" "        normalize-by-median.py -k 17 -d 2 -s test.ct tests/test-data/test-abund-read-2.fa tests/test-data/test-fastq-reads")   # noqa
+        normalize-by-median.py -k 17 -s test.ct \\
+        tests/test-data/test-abund-read-2.fa \\
+        tests/test-data/test-fastq-reads.fq"""
     parser = build_counting_args(
         descr="Do digital normalization (remove mostly redundant sequences)",
         epilog=textwrap.dedent(epilog))
     parser.add_argument('-q', '--quiet', dest='quiet', default=False,
                         action='store_true')
-    parser.add_argument('-C', '--cutoff', type=int,
+    parser.add_argument('-C', '--cutoff', type=int, help="when the median "
+                        "k-mer coverage level above is above this numer the "
+                        "read is not kept.",
                         default=DEFAULT_DESIRED_COVERAGE)
     parser.add_argument('-p', '--paired', action='store_true',
                         help='require that all sequences be properly paired')
-    parser.add_argument('--force-single', dest='force_single',
+    parser.add_argument('--force_single', dest='force_single',
                         action='store_true',
                         help='treat all sequences as single-ended/unpaired')
     parser.add_argument('-u', '--unpaired-reads',
@@ -249,7 +282,7 @@ def get_parser():
                         help='include a file of unpaired reads to which '
                         '-p/--paired does not apply.')
     parser.add_argument('-s', '--savegraph', metavar="filename", default='',
-                        help='save the k-mer countgraph to disk after all'
+                        help='save the k-mer countgraph to disk after all '
                         'reads are loaded.')
     parser.add_argument('-R', '--report',
                         metavar='report_filename', type=argparse.FileType('w'))
@@ -274,10 +307,10 @@ def get_parser():
 
 
 def main():  # pylint: disable=too-many-branches,too-many-statements
-
-    args = get_parser().parse_args()
-    configure_logging(args.quiet)
     info('normalize-by-median.py', ['diginorm'])
+    parser = sanitize_help(get_parser())
+    args = parser.parse_args()
+    configure_logging(args.quiet)
     report_on_config(args)
 
     report_fp = args.report
diff --git a/scripts/oxli b/scripts/oxli
index 74d0bf5..66d127e 100755
--- a/scripts/oxli
+++ b/scripts/oxli
@@ -1,10 +1,37 @@
 #!/usr/bin/env python
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2015, The Regents of the University of California.
 #
-# This file is a part of khmer, http://github.com/ged-lab/khmer/, and is
-# Copyright (C) The Regents of the University of California, 2015. It is
-# licensed under the three-clause BSD license; see doc/LICENSE.txt.
-# Contact: khmer-project at idyll.org
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 
 __requires__ = 'khmer'
 import sys
diff --git a/scripts/partition-graph.py b/scripts/partition-graph.py
index b322b6f..0b0a676 100755
--- a/scripts/partition-graph.py
+++ b/scripts/partition-graph.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=invalid-name, missing-docstring
 """
 Partition a graph.
@@ -21,9 +49,12 @@ import threading
 import gc
 import os.path
 import argparse
-import khmer
+import textwrap
 import sys
-from khmer.khmer_args import (add_threading_args, info)
+
+from khmer import __version__, load_nodegraph
+from khmer.khmer_args import (add_threading_args, info, sanitize_help,
+                              ComboFormatter, _VersionStdErrAction)
 from khmer.kfile import check_input_files
 
 # stdlib queue module was renamed on Python 3
@@ -36,10 +67,10 @@ DEFAULT_SUBSET_SIZE = int(1e5)
 DEFAULT_N_THREADS = 4
 
 
-def worker(queue, basename, stop_big_traversals):
+def worker(tasks, basename, stop_big_traversals):
     while True:
         try:
-            (nodegraph, index, start, stop) = queue.get(False)
+            (nodegraph, index, start, stop) = tasks.get(False)
         except queue.Empty:
             print('exiting', file=sys.stderr)
             return
@@ -63,14 +94,14 @@ def worker(queue, basename, stop_big_traversals):
 
 
 def get_parser():
-    epilog = """
-    The resulting partition maps are saved as '${basename}.subset.#.pmap'
+    epilog = """\
+    The resulting partition maps are saved as ``${basename}.subset.#.pmap``
     files.
     """
     parser = argparse.ArgumentParser(
         description="Partition a sequence graph based upon waypoint "
-        "connectivity", epilog=epilog,
-        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+        "connectivity", epilog=textwrap.dedent(epilog),
+        formatter_class=ComboFormatter)
 
     parser.add_argument('basename', help="basename of the input k-mer"
                         "nodegraph  + tagset files")
@@ -82,8 +113,8 @@ def get_parser():
     parser.add_argument('--no-big-traverse', action='store_true',
                         default=False, help='Truncate graph joins at big '
                         'traversals')
-    parser.add_argument('--version', action='version', version='%(prog)s ' +
-                        khmer.__version__)
+    parser.add_argument('--version', action=_VersionStdErrAction,
+                        version='khmer {v}'.format(v=__version__))
     parser.add_argument('-f', '--force', default=False, action='store_true',
                         help='Overwrite output file if it exists')
     add_threading_args(parser)
@@ -92,7 +123,7 @@ def get_parser():
 
 def main():
     info('partition-graph.py', ['graph'])
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
     basename = args.basename
 
     filenames = [basename, basename + '.tagset']
@@ -107,7 +138,7 @@ def main():
     print('--', file=sys.stderr)
 
     print('loading nodegraph %s' % basename, file=sys.stderr)
-    nodegraph = khmer.load_nodegraph(basename)
+    nodegraph = load_nodegraph(basename)
     nodegraph.load_tagset(basename + '.tagset')
 
     # do we want to load stop tags, and do they exist?
diff --git a/scripts/readstats.py b/scripts/readstats.py
index 570d8cf..24ebebd 100755
--- a/scripts/readstats.py
+++ b/scripts/readstats.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2013-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 """
 Display summary statistics for one or more FASTA/FASTQ files.
 
@@ -20,10 +48,14 @@ import screed
 import argparse
 import textwrap
 
+from khmer import __version__
+from khmer.khmer_args import (sanitize_help, ComboFormatter, info,
+                              _VersionStdErrAction)
+
 
 def get_parser():
     descr = "Display summary statistics for one or more FASTA/FASTQ files."
-    epilog = ("""
+    epilog = """\
     Report number of bases, number of sequences, and average sequence length
     for one or more FASTA/FASTQ files; and report aggregate statistics at end.
 
@@ -33,10 +65,11 @@ def get_parser():
     Example::
 
         readstats.py tests/test-data/test-abund-read-2.fa
-    """)
+    """
 
-    parser = argparse.ArgumentParser(description=descr,
-                                     epilog=textwrap.dedent(epilog))
+    parser = argparse.ArgumentParser(
+        description=descr, formatter_class=ComboFormatter,
+        epilog=textwrap.dedent(epilog),)
     parser.add_argument('filenames', nargs='+')
     parser.add_argument('-o', '--output', dest='outfp', metavar="filename",
                         help="output file for statistics; defaults to stdout.",
@@ -44,6 +77,8 @@ def get_parser():
     parser.add_argument('--csv', default=False, action='store_true',
                         help='Use the CSV format for the statistics, '
                         'including column headers.')
+    parser.add_argument('--version', action=_VersionStdErrAction,
+                        version='khmer {v}'.format(v=__version__))
     return parser
 
 
@@ -141,8 +176,8 @@ def analyze_file(filename):
 
 def main():
     """Main function - run when executed as a script."""
-    parser = get_parser()
-    args = parser.parse_args()
+    info('readstats.py')
+    args = sanitize_help(get_parser()).parse_args()
 
     total_bp = 0
     total_seqs = 0
diff --git a/scripts/sample-reads-randomly.py b/scripts/sample-reads-randomly.py
index 8e2525d..b346091 100755
--- a/scripts/sample-reads-randomly.py
+++ b/scripts/sample-reads-randomly.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2013-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
 #
-# This script is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=invalid-name,missing-docstring
 """
 Subsample sequences from multiple files.
@@ -26,10 +54,11 @@ import random
 import textwrap
 import sys
 
-import khmer
+from khmer import __version__
 from khmer.kfile import (check_input_files, add_output_compression_type,
                          get_file_writer)
-from khmer.khmer_args import info
+from khmer.khmer_args import (info, sanitize_help, ComboFormatter,
+                              _VersionStdErrAction)
 from khmer.utils import write_record, broken_paired_reader
 
 DEFAULT_NUM_READS = int(1e5)
@@ -38,8 +67,7 @@ DEBUG = True
 
 
 def get_parser():
-    epilog = ("""
-
+    epilog = """\
     Take a list of files containing sequences, and subsample 100,000
     sequences (:option:`-N`/:option:`--num_reads`) uniformly, using
     reservoir sampling.  Stop after first 100m sequences
@@ -47,17 +75,16 @@ def get_parser():
     but take :option:`-S`/:option:`--samples` samples if specified.
 
     The output is placed in :option:`-o`/:option:`--output` <file>
-    (for a single sample) or in <file>.subset.0 to <file>.subset.S-1
+    (for a single sample) or in ``<file>.subset.0`` to ``<file>.subset.S-1``
     (for more than one sample).
 
     This script uses the `reservoir sampling
     <http://en.wikipedia.org/wiki/Reservoir_sampling>`__ algorithm.
-    """)   # noqa
+    """
 
     parser = argparse.ArgumentParser(
         description="Uniformly subsample sequences from a collection of files",
-        formatter_class=argparse.ArgumentDefaultsHelpFormatter,
-        epilog=textwrap.dedent(epilog))
+        formatter_class=ComboFormatter, epilog=textwrap.dedent(epilog))
 
     parser.add_argument('filenames', nargs='+')
     parser.add_argument('-N', '--num_reads', type=int, dest='num_reads',
@@ -66,14 +93,15 @@ def get_parser():
                         default=DEFAULT_MAX_READS)
     parser.add_argument('-S', '--samples', type=int, dest='num_samples',
                         default=1)
-    parser.add_argument('-R', '--random-seed', type=int, dest='random_seed')
+    parser.add_argument('-R', '--random-seed', type=int, dest='random_seed',
+                        help='Provide a random seed for the generator')
     parser.add_argument('--force_single', default=False, action='store_true',
                         help='Ignore read pair information if present')
     parser.add_argument('-o', '--output', dest='output_file',
                         type=argparse.FileType('wb'),
                         metavar="filename", default=None)
-    parser.add_argument('--version', action='version', version='%(prog)s ' +
-                        khmer.__version__)
+    parser.add_argument('--version', action=_VersionStdErrAction,
+                        version='khmer {v}'.format(v=__version__))
     parser.add_argument('-f', '--force', default=False, action='store_true',
                         help='Overwrite output file if it exits')
     add_output_compression_type(parser)
@@ -82,7 +110,13 @@ def get_parser():
 
 def main():
     info('sample-reads-randomly.py')
-    args = get_parser().parse_args()
+    parser = get_parser()
+    parser.epilog = parser.epilog.replace(
+        "`reservoir sampling\n"
+        "<http://en.wikipedia.org/wiki/Reservoir_sampling>`__ algorithm.",
+        "reservoir sampling algorithm. "
+        "http://en.wikipedia.org/wiki/Reservoir_sampling")
+    args = sanitize_help(parser).parse_args()
 
     for _ in args.filenames:
         check_input_files(_, args.force)
diff --git a/scripts/split-paired-reads.py b/scripts/split-paired-reads.py
index 994db33..8120808 100755
--- a/scripts/split-paired-reads.py
+++ b/scripts/split-paired-reads.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2013-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
 #
-# This script is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=invalid-name,missing-docstring
 """
 De-interleave a file.
@@ -22,8 +50,9 @@ import sys
 import os
 import textwrap
 import argparse
-import khmer
-from khmer.khmer_args import info
+from khmer import __version__
+from khmer.khmer_args import (info, sanitize_help, ComboFormatter,
+                              _VersionStdErrAction)
 from khmer.utils import (write_record, broken_paired_reader,
                          UnpairedReadsError)
 from khmer.kfile import (check_input_files, check_space,
@@ -32,7 +61,7 @@ from khmer.kfile import (check_input_files, check_space,
 
 
 def get_parser():
-    epilog = """
+    epilog = """\
     Some programs want paired-end read input in the One True Format, which is
     interleaved; other programs want input in the Insanely Bad Format, with
     left- and right- reads separated. This reformats the former to the latter.
@@ -55,7 +84,7 @@ def get_parser():
 
     Example::
 
-        split-paired-reads.py -o ~/reads-go-here tests/test-data/paired.fq
+        split-paired-reads.py -0 reads-output-file tests/test-data/paired.fq
 
     Example::
 
@@ -64,7 +93,7 @@ def get_parser():
     parser = argparse.ArgumentParser(
         description='Split interleaved reads into two files, left and right.',
         epilog=textwrap.dedent(epilog),
-        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+        formatter_class=ComboFormatter)
 
     parser.add_argument('infile', nargs='?', default='/dev/stdin')
 
@@ -82,8 +111,8 @@ def get_parser():
     parser.add_argument('-2', '--output-second', metavar='output_second',
                         default=None, help='Output "right" reads to this '
                         'file', type=argparse.FileType('wb'))
-    parser.add_argument('--version', action='version', version='%(prog)s ' +
-                        khmer.__version__)
+    parser.add_argument('--version', action=_VersionStdErrAction,
+                        version='khmer {v}'.format(v=__version__))
     parser.add_argument('-f', '--force', default=False, action='store_true',
                         help='Overwrite output file if it exists')
     add_output_compression_type(parser)
@@ -92,7 +121,7 @@ def get_parser():
 
 def main():
     info('split-paired-reads.py')
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
 
     infile = args.infile
 
diff --git a/scripts/trim-low-abund.py b/scripts/trim-low-abund.py
index d7d2c9a..5ce0e3c 100755
--- a/scripts/trim-low-abund.py
+++ b/scripts/trim-low-abund.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2012-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 """
 Trim sequences at k-mers of the given abundance, using a streaming algorithm.
 
@@ -28,7 +56,8 @@ from screed import Record
 from khmer import khmer_args
 
 from khmer.khmer_args import (build_counting_args, info, add_loadgraph_args,
-                              report_on_config, calculate_graphsize)
+                              report_on_config, calculate_graphsize,
+                              sanitize_help)
 from khmer.utils import write_record, write_record_pair, broken_paired_reader
 from khmer.kfile import (check_space, check_space_for_graph,
                          check_valid_file_exists, add_output_compression_type,
@@ -49,21 +78,22 @@ def trim_record(read, trim_at):
 
 
 def get_parser():
-    epilog = """
-    The output is one file for each input file, <input file>.abundtrim, placed
-    in the current directory.  This output contains the input sequences
+    epilog = """\
+    The output is one file for each input file, ``<input file>.abundtrim``,
+    placed in the current directory.  This output contains the input sequences
     trimmed at low-abundance k-mers.
 
-    The ``-V/--variable-coverage`` parameter will, if specified,
-    prevent elimination of low-abundance reads by only trimming
+    The :option:`-V`/:option:`--variable-coverage` parameter will, if
+    specified, prevent elimination of low-abundance reads by only trimming
     low-abundance k-mers from high-abundance reads; use this for
     non-genomic data sets that may have variable coverage.
 
     Note that the output reads will not necessarily be in the same order
     as the reads in the input files; if this is an important consideration,
-    use ``load-into-counting.py`` and ``filter-abund.py``.  However, read
-    pairs will be kept together, in "broken-paired" format; you can use
-    ``extract-paired-reads.py`` to extract read pairs and orphans.
+    use :program:`load-into-countgraph.py` and :program:`filter-abund.py`.
+    However, read pairs will be kept together, in "broken-paired" format; you
+    can use :program:`extract-paired-reads.py` to extract read pairs and
+    orphans.
 
     Example::
 
@@ -112,7 +142,7 @@ def get_parser():
 
 def main():
     info('trim-low-abund.py', ['streaming'])
-    parser = get_parser()
+    parser = sanitize_help(get_parser())
     args = parser.parse_args()
 
     ###
diff --git a/scripts/unique-kmers.py b/scripts/unique-kmers.py
index 9ac283c..f72b22a 100755
--- a/scripts/unique-kmers.py
+++ b/scripts/unique-kmers.py
@@ -1,10 +1,38 @@
 #! /usr/bin/env python
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2014-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=invalid-name,missing-docstring,no-member
 """
 Estimate number of unique k-mers, with precision <= ERROR_RATE.
@@ -24,7 +52,7 @@ import textwrap
 
 import khmer
 from khmer.khmer_args import (DEFAULT_K, info, ComboFormatter,
-                              _VersionStdErrAction)
+                              _VersionStdErrAction, sanitize_help)
 from khmer.utils import write_record
 from khmer.khmer_args import graphsize_args_report
 from khmer import __version__
@@ -33,9 +61,9 @@ import screed
 
 def get_parser():
     descr = "Estimate number of unique k-mers, with precision <= ERROR_RATE."
-    epilog = ("""
-    A HyperLogLog counter is used to do cardinality estimation. Since this counter
-    is based on a tradeoff between precision and memory consumption,
+    epilog = """\
+    A HyperLogLog counter is used to do cardinality estimation. Since this
+    counter is based on a tradeoff between precision and memory consumption,
     the :option:`-e`/:option:`--error-rate` can be used to control how much
     memory will be used. In practice the memory footprint is small even
     at low error rates (< 0.01).
@@ -45,7 +73,7 @@ def get_parser():
     Informational output is sent to STDERR, but a report file can be generated
     with :option:`-R`/:option:`--report`.
 
-    :option:`--stream-out` will write the sequences taken in to STDOUT.
+    :option:`--stream-records` will write the sequences taken in to STDOUT.
     This is useful for workflows: count unique kmers in a stream, then do
     digital normalization.
 
@@ -63,13 +91,13 @@ def get_parser():
 
     Example::
 
-        unique-kmers.py --stream-out -k 17 tests/test-data/test-reads.fa | \\
+        unique-kmers.py --stream-records -k 17 tests/test-data/test-reads.fa | \\
         normalize-by-median.py -k 17 -o normalized /dev/stdin
 
     Example::
 
         unique-kmers.py -R unique_count -k 30 \\
-        tests/test-data/test-abund-read-paired.fa""")  # noqa
+        tests/test-data/test-abund-read-paired.fa"""  # noqa
     parser = argparse.ArgumentParser(
         description=descr, epilog=textwrap.dedent(epilog),
         formatter_class=ComboFormatter)
@@ -93,7 +121,7 @@ def get_parser():
                         help='generate informational report and write to'
                         ' filename')
 
-    parser.add_argument('--stream-out', '-S', default=False,
+    parser.add_argument('--stream-records', '-S', default=False,
                         action='store_true',
                         help='write input sequences to STDOUT')
 
@@ -109,7 +137,7 @@ def get_parser():
 
 def main():
     info('unique-kmers.py', ['SeqAn', 'hll'])
-    args = get_parser().parse_args()
+    args = sanitize_help(get_parser()).parse_args()
 
     total_hll = khmer.HLLCounter(args.error_rate, args.ksize)
 
@@ -117,7 +145,8 @@ def main():
     input_filename = None
     for index, input_filename in enumerate(args.input_filenames):
         hllcpp = khmer.HLLCounter(args.error_rate, args.ksize)
-        hllcpp.consume_fasta(input_filename, stream_out=args.stream_out)
+        hllcpp.consume_fasta(input_filename,
+                             stream_records=args.stream_records)
 
         cardinality = hllcpp.estimate_cardinality()
         print('Estimated number of unique {0}-mers in {1}: {2}'.format(
diff --git a/setup.py b/setup.py
index c4b3778..14999e5 100755
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,38 @@
 #! /usr/bin/env python
+# vim: set fileencoding=utf-8
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see doc/LICENSE.txt.
+# Copyright (C) 2013-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
 # Contact: khmer-project at idyll.org
 """Setup for khmer project."""
 
@@ -115,7 +146,7 @@ SOURCES.extend(path_join("third-party", "smhasher", bn + ".cc") for bn in [
     "MurmurHash3"])
 
 # Don't forget to update lib/Makefile with these flags!
-EXTRA_COMPILE_ARGS = ['-O3', '-std=c++11', '-O0']
+EXTRA_COMPILE_ARGS = ['-O3', '-std=c++11', '-pedantic']
 EXTRA_LINK_ARGS = []
 
 if sys.platform == 'darwin':
@@ -169,15 +200,31 @@ SETUP_METADATA = \
         "version": versioneer.get_version(),
         "description": 'khmer k-mer counting library',
         "long_description": open("README.rst").read(),
-        "author": 'Michael R. Crusoe, Greg Edvenson, Jordan Fish,'
-        ' Adina Howe, Luiz Irber, Eric McDonald, Joshua Nahum, Kaben Nanlohy,'
-        ' Humberto Ortiz-Zuazaga, Jason Pell, Jared Simpson, Camille Scott,'
-        ' Ramakrishnan Rajaram Srinivasan, Qingpeng Zhang, and C. Titus Brown',
+        "author": "Michael R. Crusoe, Hussien F. Alameldin, Sherine Awad, "
+                  "Elmar Bucher, Adam Caldwell, Reed Cartwright, "
+                  "Amanda Charbonneau, Bede Constantinides, Greg Edvenson, "
+                  "Scott Fay, Jacob Fenton, Thomas Fenzl, Jordan Fish, "
+                  "Leonor Garcia-Gutierrez, Phillip Garland, Jonathan Gluck, "
+                  "Iván González, Sarah Guermond, Jiarong Guo, Aditi Gupta, "
+                  "Joshua R. Herr, Adina Howe, Alex Hyer, Andreas Härpfer, "
+                  "Luiz Irber, Rhys Kidd, David Lin, Justin Lippi, "
+                  "Tamer Mansour, Pamela McA'Nulty, Eric McDonald, "
+                  "Jessica Mizzi, Kevin D. Murray, Joshua R. Nahum, "
+                  "Kaben Nanlohy, Alexander Johan Nederbragt, "
+                  "Humberto Ortiz-Zuazaga, Jeramia Ory, Jason Pell, "
+                  "Charles Pepe-Ranney, Zachary N Russ, Erich Schwarz, "
+                  "Camille Scott, Josiah Seaman, Scott Sievert, "
+                  "Jared Simpson, Connor T. Skennerton, James Spencer, "
+                  "Ramakrishnan Srinivasan, Daniel Standage, "
+                  "James A. Stapleton, Joe Stein, Susan R Steinman, "
+                  "Benjamin Taylor, Will Trimble, Heather L. Wiencko, "
+                  "Michael Wright, Brian Wyss, Qingpeng Zhang, en zyme, "
+                  "C. Titus Brown",
         "author_email": 'khmer-project at idyll.org',
         # "maintainer": 'Michael R. Crusoe', # this overrides the author field
         # "maintainer_email": 'mcrusoe at msu.edu', # so don't include it
         # http://docs.python.org/2/distutils/setupscript.html
-        # additiona-meta-data note #3
+        # additional-meta-data note #3
         "url": 'https://khmer.readthedocs.org/',
         "packages": ['khmer', 'khmer.tests', 'oxli'],
         "package_dir": {'khmer.tests': 'tests'},
@@ -186,11 +233,11 @@ SETUP_METADATA = \
                            'docs': ['sphinx', 'sphinxcontrib-autoprogram'],
                            'tests': ['nose >= 1.0']},
         "scripts": SCRIPTS,
-        "entry_points": {
-            'console_scripts': [
-                "oxli = oxli:main"
-            ]
-        },
+        # "entry_points": { # Not ready for distribution yet.
+        #    'console_scripts': [
+        #        "oxli = oxli:main"
+        #    ]
+        # },
         "ext_modules": [EXTENSION_MOD, ],
         # "platforms": '', # empty as is conveyed by the classifiers below
         # "license": '', # empty as is conveyed by the classifier below
diff --git a/sort-authors-list.py b/sort-authors-list.py
new file mode 100755
index 0000000..32b55f7
--- /dev/null
+++ b/sort-authors-list.py
@@ -0,0 +1,92 @@
+#! /usr/bin/env python
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+from __future__ import print_function
+from __future__ import unicode_literals
+
+from nameparser import HumanName
+import codecs
+import textwrap
+
+import sys
+import codecs
+sys.stdout = codecs.getwriter('utf8')(sys.stdout)
+
+authors = []
+
+with codecs.open('authors.csv', 'r', encoding='utf-8') as namefile:
+    for line in namefile:
+        name, address = line.split(',')
+        authors.append((HumanName(name), address))
+
+authors = sorted(authors, key=lambda author: author[0].last)
+authors.insert(0, (HumanName("Michael R. Crusoe"), "crusoe at ucdavis.edu"))
+authors.append((HumanName("C. Titus Brown"), "titus at idyll.org"))
+
+# print(authors)
+
+bibtex = u'   author = \"'
+
+for tup in authors:
+    name = tup[0]
+    name.string_format = "{last}, {first} {middle} and"
+    bibtex += unicode(name) + " "
+
+bibtex = bibtex[:-5] + '"'  # remove last 'and' and close the quote
+
+print(u'  @article{khmer2015,')
+for line in textwrap.wrap(unicode(bibtex), 77):
+    print('  ' + line)
+
+print(
+    '''     title = "The khmer software package: enabling efficient nucleotide
+  sequence analysis",
+     year = "2015",
+     month = "08",
+     publisher = "F1000",
+     url = "http://dx.doi.org/10.12688/f1000research.6924.1"
+  }''')
+
+doclist = u':Authors: '
+
+for tup in authors:
+    name = tup[0]
+    name.string_format = "{first} {middle} {last}"
+    doclist += unicode(name) + ", "
+
+doclist = doclist[:-2]
+
+for line in textwrap.wrap(unicode(doclist), 71):
+    print('        ' + line)
+
diff --git a/tests/__init__.py b/tests/__init__.py
index cee3cea..34ae3f8 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -1,5 +1,34 @@
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see doc/LICENSE.txt.
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
 # Contact: khmer-project at idyll.org
diff --git a/tests/khmer_tst_utils.py b/tests/khmer_tst_utils.py
index ddded56..12d3f28 100644
--- a/tests/khmer_tst_utils.py
+++ b/tests/khmer_tst_utils.py
@@ -1,10 +1,38 @@
-from __future__ import print_function
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+from __future__ import print_function
 import tempfile
 import os
 import shutil
@@ -60,7 +88,10 @@ def scriptpath(scriptname='interleave-reads.py'):
     # it's some khmer script present in this version of khmer.
 
     path = os.path.join(os.path.dirname(__file__), "../scripts")
+    if os.path.exists(os.path.join(path, scriptname)):
+        return path
 
+    path = os.path.join(os.path.dirname(__file__), "../../EGG-INFO/scripts")
     if os.path.exists(os.path.join(path, scriptname)):
         return path
 
@@ -121,6 +152,7 @@ def runscript(scriptname, args, in_directory=None,
 
         oldout, olderr = sys.stdout, sys.stderr
         sys.stdout = StringIO()
+        sys.stdout.name = "StringIO"
         sys.stderr = StringIO()
 
         if in_directory:
diff --git a/tests/test_countgraph.py b/tests/test_countgraph.py
index c0aec9f..ceaca36 100644
--- a/tests/test_countgraph.py
+++ b/tests/test_countgraph.py
@@ -1,12 +1,40 @@
-from __future__ import print_function
-from __future__ import absolute_import, unicode_literals
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring,protected-access
+from __future__ import print_function
+from __future__ import absolute_import, unicode_literals
 import gzip
 
 import os
diff --git a/tests/test_counting_single.py b/tests/test_counting_single.py
index 8a6e5b0..71cf5af 100644
--- a/tests/test_counting_single.py
+++ b/tests/test_counting_single.py
@@ -1,13 +1,40 @@
-from __future__ import print_function
-from __future__ import absolute_import
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
 #
-
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=C0111,C0103
+from __future__ import print_function
+from __future__ import absolute_import
 
 import khmer
 from . import khmer_tst_utils as utils
diff --git a/tests/test_filter.py b/tests/test_filter.py
index 169a62a..b33c860 100644
--- a/tests/test_filter.py
+++ b/tests/test_filter.py
@@ -1,11 +1,39 @@
-from __future__ import print_function
-from __future__ import absolute_import
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+from __future__ import print_function
+from __future__ import absolute_import
 import khmer
 from screed.fasta import fasta_iter
 from nose.plugins.attrib import attr
diff --git a/tests/test_functions.py b/tests/test_functions.py
index 6d64fbd..dd0c7ba 100644
--- a/tests/test_functions.py
+++ b/tests/test_functions.py
@@ -1,11 +1,39 @@
-from __future__ import print_function
-from __future__ import absolute_import
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+from __future__ import print_function
+from __future__ import absolute_import
 import khmer
 import os
 import sys
diff --git a/tests/test_graph.py b/tests/test_graph.py
index 1963d95..40a195e 100644
--- a/tests/test_graph.py
+++ b/tests/test_graph.py
@@ -1,11 +1,39 @@
-from __future__ import print_function
-from __future__ import absolute_import
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+from __future__ import print_function
+from __future__ import absolute_import
 import khmer
 import screed
 
diff --git a/tests/test_hll.py b/tests/test_hll.py
index 297374a..623c481 100644
--- a/tests/test_hll.py
+++ b/tests/test_hll.py
@@ -1,12 +1,40 @@
-from __future__ import division, print_function, unicode_literals
-from __future__ import absolute_import
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2014-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2014-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring,protected-access
+from __future__ import division, print_function, unicode_literals
+from __future__ import absolute_import
 
 import math
 
diff --git a/tests/test_labelhash.py b/tests/test_labelhash.py
index 4593673..644ab85 100644
--- a/tests/test_labelhash.py
+++ b/tests/test_labelhash.py
@@ -1,12 +1,40 @@
-from __future__ import print_function
-from __future__ import absolute_import
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2013-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring,protected-access
+from __future__ import print_function
+from __future__ import absolute_import
 import os
 import khmer
 from khmer import GraphLabels, CountingGraphLabels
diff --git a/tests/test_lump.py b/tests/test_lump.py
index 406b865..c4adfce 100644
--- a/tests/test_lump.py
+++ b/tests/test_lump.py
@@ -1,11 +1,39 @@
-from __future__ import absolute_import
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring
+from __future__ import absolute_import
 import khmer
 import screed
 
diff --git a/tests/test_nodegraph.py b/tests/test_nodegraph.py
index 4b7db74..b87ffd4 100644
--- a/tests/test_nodegraph.py
+++ b/tests/test_nodegraph.py
@@ -1,9 +1,37 @@
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring,protected-access,no-member,
 
 from __future__ import print_function
diff --git a/tests/test_normalize_by_median.py b/tests/test_normalize_by_median.py
index 0e620c8..6e78fb2 100644
--- a/tests/test_normalize_by_median.py
+++ b/tests/test_normalize_by_median.py
@@ -1,13 +1,40 @@
-from __future__ import print_function
-from __future__ import absolute_import
-from __future__ import unicode_literals
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
 # Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring,invalid-name,unused-variable
-
+from __future__ import print_function
+from __future__ import absolute_import
+from __future__ import unicode_literals
 import os
 import shutil
 import threading
@@ -97,7 +124,7 @@ def test_normalize_by_median_quiet():
     (status, out, err) = utils.runscript(script, args, in_dir)
 
     assert len(out) == 0, out
-    assert len(err) == 0, err
+    assert len(err) < 460, len(err)
 
     outfile = infile + '.keep'
     assert os.path.exists(outfile), outfile
@@ -207,7 +234,7 @@ def test_normalize_by_median_contradictory_args():
     shutil.copyfile(utils.get_test_data('test-large.fa'), infile)
 
     script = 'normalize-by-median.py'
-    args = ['-C', '1', '-k', '17', '--force-single', '-p', '-R',
+    args = ['-C', '1', '-k', '17', '--force_single', '-p', '-R',
             outfile, infile]
     (status, out, err) = utils.runscript(script, args, in_dir, fail_ok=True)
     assert status != 0
@@ -359,7 +386,7 @@ def test_normalize_by_median_count_kmers_PE():
     shutil.copyfile(utils.get_test_data('paired_one.base.dif.fa'), infile)
     script = 'normalize-by-median.py'
 
-    args = ['-C', CUTOFF, '-k', '17', '--force-single', infile]
+    args = ['-C', CUTOFF, '-k', '17', '--force_single', infile]
     (status, out, err) = utils.runscript(script, args, in_dir)
     assert 'Total number of unique k-mers: 98' in err, err
     assert 'kept 1 of 2 or 50.0%' in err, err
@@ -707,7 +734,7 @@ def test_diginorm_basic_functionality_2():
     # single', only random seqs should be kept, together with one copy
     # of the multicopy sequence.
     CUTOFF = ['-C', '1']
-    PAIRING = ['--force-single']
+    PAIRING = ['--force_single']
 
     infile = utils.get_temp_filename('test.fa')
     in_dir = os.path.dirname(infile)
diff --git a/tests/test_oxli_functions.py b/tests/test_oxli_functions.py
index b0606ea..d5b865b 100644
--- a/tests/test_oxli_functions.py
+++ b/tests/test_oxli_functions.py
@@ -1,14 +1,40 @@
-from __future__ import print_function
-from __future__ import absolute_import
-from __future__ import unicode_literals
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2015, The Regents of the University of California.
 #
-
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=C0111,C0103,E1103,W0612
+from __future__ import print_function
+from __future__ import absolute_import
+from __future__ import unicode_literals
 
 from . import khmer_tst_utils as utils
 import khmer
diff --git a/tests/test_read_aligner.py b/tests/test_read_aligner.py
index 2779cbd..b676323 100644
--- a/tests/test_read_aligner.py
+++ b/tests/test_read_aligner.py
@@ -1,11 +1,39 @@
-from __future__ import print_function
-from __future__ import absolute_import
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE. Contact: ctb at msu.edu
+# Copyright (C) 2013-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
 #
-
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+from __future__ import print_function
+from __future__ import absolute_import
 import khmer
 from . import khmer_tst_utils as utils
 # from nose.tools import assert_almost_equals
diff --git a/tests/test_read_parsers.py b/tests/test_read_parsers.py
index c55d17a..8d2bbce 100644
--- a/tests/test_read_parsers.py
+++ b/tests/test_read_parsers.py
@@ -1,15 +1,41 @@
-from __future__ import print_function
-from __future__ import absolute_import
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2013-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 
 # Tests for the ReadParser and Read classes.
-
-
+from __future__ import print_function
+from __future__ import absolute_import
 import khmer
 from khmer import ReadParser
 from . import khmer_tst_utils as utils
diff --git a/tests/test_sandbox_scripts.py b/tests/test_sandbox_scripts.py
index d33a9d0..f8c5022 100644
--- a/tests/test_sandbox_scripts.py
+++ b/tests/test_sandbox_scripts.py
@@ -1,9 +1,37 @@
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2014-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 
 # pylint: disable=C0111,C0103,E1103,W0612
 
diff --git a/tests/test_script_arguments.py b/tests/test_script_arguments.py
index 9f1045c..ee10672 100644
--- a/tests/test_script_arguments.py
+++ b/tests/test_script_arguments.py
@@ -1,9 +1,37 @@
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2014-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2014-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 """
 Tests for various argument-handling code.
 """
diff --git a/tests/test_scripts.py b/tests/test_scripts.py
index 9790f60..8575b08 100644
--- a/tests/test_scripts.py
+++ b/tests/test_scripts.py
@@ -1,16 +1,42 @@
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2014-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+# pylint: disable=C0111,C0103,E1103,W0612
 
 from __future__ import print_function
 from __future__ import absolute_import
 from __future__ import unicode_literals
-
-# pylint: disable=C0111,C0103,E1103,W0612
-
 import json
 import sys
 import os
@@ -23,6 +49,7 @@ import threading
 import bz2
 import gzip
 import io
+import re
 
 from . import khmer_tst_utils as utils
 import khmer
@@ -792,12 +819,13 @@ def test_load_graph():
 
     # check to make sure we get the expected result for this data set
     # upon partitioning (all in one partition).  This is kind of a
-    # roundabout way of checking that load-graph worked :)
+    # roundabout way of checking that load-graph.py worked :)
     subset = ht.do_subset_partition(0, 0)
     x = ht.subset_count_partitions(subset)
     assert x == (1, 0), x
 
 
+ at attr('known_failing')
 def test_oxli_build_graph():
     script = 'oxli'
     args = ['build-graph', '-x', '1e7', '-N', '2', '-k', '20']
@@ -822,12 +850,13 @@ def test_oxli_build_graph():
 
     # check to make sure we get the expected result for this data set
     # upon partitioning (all in one partition).  This is kind of a
-    # roundabout way of checking that load-graph worked :)
+    # roundabout way of checking that load-graph.py worked :)
     subset = ht.do_subset_partition(0, 0)
     x = ht.subset_count_partitions(subset)
     assert x == (1, 0), x
 
 
+ at attr('known_failing')
 def test_oxli_build_graph_unique_kmers_arg():
     script = 'oxli'
     args = ['build-graph', '-x', '1e7', '-N', '2', '-k', '20', '-U', '3960']
@@ -854,12 +883,13 @@ def test_oxli_build_graph_unique_kmers_arg():
 
     # check to make sure we get the expected result for this data set
     # upon partitioning (all in one partition).  This is kind of a
-    # roundabout way of checking that load-graph worked :)
+    # roundabout way of checking that load-graph.py worked :)
     subset = ht.do_subset_partition(0, 0)
     x = ht.subset_count_partitions(subset)
     assert x == (1, 0), x
 
 
+ at attr('known_failing')
 def test_oxli_nocommand():
     script = 'oxli'
 
@@ -890,6 +920,7 @@ def test_load_graph_no_tags():
     # loading the ht file...
 
 
+ at attr('known_failing')
 def test_oxli_build_graph_no_tags():
     script = 'oxli'
     args = ['build-graph', '-x', '1e7', '-N', '2', '-k', '20', '-n']
@@ -927,6 +958,7 @@ def test_load_graph_fail():
     assert "** ERROR: the graph structure is too small" in err
 
 
+ at attr('known_failing')
 def test_oxli_build_graph_fail():
     script = 'oxli'
     args = ['build-graph', '-x', '1e3', '-N', '2', '-k', '20']  # use small HT
@@ -963,6 +995,7 @@ def test_load_graph_write_fp():
     assert 'false positive rate estimated to be 0.002' in data
 
 
+ at attr('known_failing')
 def test_oxli_build_graph_write_fp():
     script = 'oxli'
     # use small HT
@@ -997,6 +1030,7 @@ def test_load_graph_multithread():
     (status, out, err) = utils.runscript(script, args)
 
 
+ at attr('known_failing')
 def test_oxli_build_graph_multithread():
     script = 'oxli'
 
@@ -1079,67 +1113,11 @@ def _make_graph(infilename, min_hashsize=1e7, n_hashes=2, ksize=20,
     return outfile
 
 
-def _DEBUG_make_graph(infilename, min_hashsize=1e7, n_hashes=2, ksize=20,
-                      do_partition=False,
-                      annotate_partitions=False,
-                      stop_big_traverse=False):
-    script = 'load-graph.py'
-    args = ['-x', str(min_hashsize), '-N', str(n_hashes), '-k', str(ksize)]
-
-    outfile = utils.get_temp_filename('out')
-    infile = utils.get_test_data(infilename)
-
-    args.extend([outfile, infile])
-
-    utils.runscript(script, args)
-
-    ht_file = outfile + '.ct'
-    assert os.path.exists(ht_file), ht_file
-
-    tagset_file = outfile + '.tagset'
-    assert os.path.exists(tagset_file), tagset_file
-
-    if do_partition:
-        print(">>>> DEBUG: Partitioning <<<")
-        script = 'partition-graph.py'
-        args = [outfile]
-        if stop_big_traverse:
-            args.insert(0, '--no-big-traverse')
-        utils.runscript(script, args)
-
-        print(">>>> DEBUG: Merging Partitions <<<")
-        script = 'merge-partitions.py'
-        args = [outfile, '-k', str(ksize)]
-        utils.runscript(script, args)
-
-        final_pmap_file = outfile + '.pmap.merged'
-        assert os.path.exists(final_pmap_file)
-
-        if annotate_partitions:
-            print(">>>> DEBUG: Annotating Partitions <<<")
-            script = 'annotate-partitions.py'
-            args = ["-k", str(ksize), outfile, infilename]
-
-            in_dir = os.path.dirname(outfile)
-            utils.runscript(script, args, in_dir)
-
-            baseinfile = os.path.basename(infilename)
-            assert os.path.exists(os.path.join(in_dir, baseinfile + '.part'))
-
-    return outfile
-
-
 def test_partition_graph_1():
     graphbase = _make_graph(utils.get_test_data('random-20-a.fa'))
 
-    script = 'partition-graph.py'
-    args = [graphbase]
-
-    utils.runscript(script, args)
-
-    script = 'merge-partitions.py'
-    args = [graphbase, '-k', str(20)]
-    utils.runscript(script, args)
+    utils.runscript('partition-graph.py', [graphbase])
+    utils.runscript('merge-partitions.py', [graphbase, '-k', '20'])
 
     final_pmap_file = graphbase + '.pmap.merged'
     assert os.path.exists(final_pmap_file)
@@ -1276,6 +1254,23 @@ def test_partition_find_knots_existing_stoptags():
     assert "these output stoptags will include the already" in err, err
 
 
+def test_partition_graph_too_many_threads():
+    graphbase = _make_graph(utils.get_test_data('random-20-a.fa'))
+
+    utils.runscript('partition-graph.py', [graphbase, '--threads', '100'])
+    utils.runscript('merge-partitions.py', [graphbase, '-k', '20'])
+
+    final_pmap_file = graphbase + '.pmap.merged'
+    assert os.path.exists(final_pmap_file)
+
+    ht = khmer.load_nodegraph(graphbase)
+    ht.load_tagset(graphbase + '.tagset')
+    ht.load_partitionmap(final_pmap_file)
+
+    x = ht.count_partitions()
+    assert x == (1, 0), x          # should be exactly one partition.
+
+
 def test_annotate_partitions():
     seqfile = utils.get_test_data('random-20-a.fa')
     graphbase = _make_graph(seqfile, do_partition=True)
@@ -1717,6 +1712,25 @@ def test_do_partition():
     assert len(parts) == 1
 
 
+def test_do_partition_no_big_traverse():
+    seqfile = utils.get_test_data('random-20-a.fa')
+    graphbase = utils.get_temp_filename('out')
+    in_dir = os.path.dirname(graphbase)
+
+    script = 'do-partition.py'
+    args = ["-k", "20", "--no-big-traverse", "--threads=100", graphbase,
+            seqfile]
+
+    utils.runscript(script, args, in_dir)
+
+    partfile = os.path.join(in_dir, 'random-20-a.fa.part')
+
+    parts = [r.name.split('\t')[1] for r in screed.open(partfile)]
+    parts = set(parts)
+    assert '2' in parts
+    assert len(parts) == 1
+
+
 def test_do_partition_2():
     # test with K=21 (no joining of sequences)
     seqfile = utils.get_test_data('random-20-a.fa')
@@ -1944,7 +1958,7 @@ def test_make_initial_stoptags():
     # gen input files using load-graph.py -t
     # should keep test_data directory size down
     # or something like that
-    # this assumes (obv.) load-graph works properly
+    # this assumes (obv.) load-graph.py works properly
     bzinfile = utils.get_temp_filename('test-reads.fq.bz2')
     shutil.copyfile(utils.get_test_data('test-reads.fq.bz2'), bzinfile)
     in_dir = os.path.dirname(bzinfile)
@@ -1953,7 +1967,7 @@ def test_make_initial_stoptags():
     genscriptargs = ['test-reads', 'test-reads.fq.bz2']
     utils.runscript(genscript, genscriptargs, in_dir)
 
-    # test input file gen'd by load-graphs
+    # test input file gen'd by load-graph.pys
     infile = utils.get_temp_filename('test-reads.pt')
     infile2 = utils.get_temp_filename('test-reads.tagset', in_dir)
 
@@ -1976,7 +1990,7 @@ def test_make_initial_stoptags_load_stoptags():
     # gen input files using load-graph.py -t
     # should keep test_data directory size down
     # or something like that
-    # this assumes (obv.) load-graph works properly
+    # this assumes (obv.) load-graph.py works properly
     bzinfile = utils.get_temp_filename('test-reads.fq.bz2')
     shutil.copyfile(utils.get_test_data('test-reads.fq.bz2'), bzinfile)
     in_dir = os.path.dirname(bzinfile)
@@ -1985,7 +1999,7 @@ def test_make_initial_stoptags_load_stoptags():
     genscriptargs = ['test-reads', 'test-reads.fq.bz2']
     utils.runscript(genscript, genscriptargs, in_dir)
 
-    # test input file gen'd by load-graphs
+    # test input file gen'd by load-graph.pys
     infile = utils.get_temp_filename('test-reads.pt')
     infile2 = utils.get_temp_filename('test-reads.tagset', in_dir)
 
@@ -2006,6 +2020,22 @@ def test_make_initial_stoptags_load_stoptags():
     assert os.path.exists(outfile1), outfile1
 
 
+def test_extract_paired_reads_unpaired():
+    # test input file
+    infile = utils.get_test_data('random-20-a.fa')
+
+    # actual output files...
+    outfile1 = utils.get_temp_filename('unpaired.pe.fa')
+    in_dir = os.path.dirname(outfile1)
+    outfile2 = utils.get_temp_filename('unpaired.se.fa', in_dir)
+
+    script = 'extract-paired-reads.py'
+    args = [infile]
+
+    (_, _, err) = utils.runscript(script, args, in_dir, fail_ok=True)
+    assert 'no paired reads!? check file formats...' in err, err
+
+
 def test_extract_paired_reads_1_fa():
     # test input file
     infile = utils.get_test_data('paired-mixed.fa')
@@ -2406,8 +2436,9 @@ def test_split_paired_reads_3_output_dir():
     ex_outfile2 = utils.get_test_data('paired.fq.2')
 
     # actual output files...
-    outfile1 = utils.get_temp_filename('paired.fq.1')
-    output_dir = os.path.dirname(outfile1)
+    testdir = utils.get_temp_filename('test')
+    output_dir = os.path.join(os.path.dirname(testdir), "out")
+    outfile1 = utils.get_temp_filename('paired.fq.1', output_dir)
     outfile2 = utils.get_temp_filename('paired.fq.2', output_dir)
 
     script = 'split-paired-reads.py'
@@ -3082,7 +3113,7 @@ def _execute_load_graph_streaming(filename):
 
     # check to make sure we get the expected result for this data set
     # upon partitioning (all in one partition).  This is kind of a
-    # roundabout way of checking that load-graph worked :)
+    # roundabout way of checking that load-graph.py worked :)
     subset = ht.do_subset_partition(0, 0)
     x = ht.subset_count_partitions(subset)
     assert x == (1, 0), x
@@ -3678,3 +3709,17 @@ def test_unique_kmers_multiple_inputs():
     assert ('Estimated number of unique 20-mers in {0}: 232'.format(infiles[1])
             in err)
     assert 'Total estimated number of unique 20-mers: 4170' in err
+
+
+def check_version(scriptname):
+    version = re.compile("^khmer .*$", re.MULTILINE)
+    status, out, err = utils.runscript(scriptname, ["--version"])
+    assert status == 0, status
+    assert "publication" in err, err
+    assert version.search(err) is not None, err
+
+
+def test_version():
+    for entry in os.listdir(utils.scriptpath()):
+        if entry.endswith(".py"):
+            yield check_version, entry
diff --git a/tests/test_streaming_io.py b/tests/test_streaming_io.py
index f942edb..00cb7d3 100644
--- a/tests/test_streaming_io.py
+++ b/tests/test_streaming_io.py
@@ -1,9 +1,36 @@
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 
 # important note -- these tests do not contribute to code coverage, because
 # of the use of subprocess to execute.  Most script tests should go into
@@ -486,7 +513,7 @@ def test_readstats_1():
 def test_unique_kmers_stream_out_fasta():
     infile = utils.get_test_data('random-20-a.fa')
 
-    cmd = "{scripts}/unique-kmers.py -k 20 -e 0.01 --stream-out {infile}"
+    cmd = "{scripts}/unique-kmers.py -k 20 -e 0.01 --stream-records {infile}"
     cmd = cmd.format(scripts=scriptpath(), infile=infile)
 
     (status, out, err) = run_shell_cmd(cmd)
@@ -503,7 +530,7 @@ def test_unique_kmers_stream_out_fasta():
 def test_unique_kmers_stream_out_fastq_with_N():
     infile = utils.get_test_data('test-filter-abund-Ns.fq')
 
-    cmd = "{scripts}/unique-kmers.py -k 20 -e 0.01 --stream-out {infile}"
+    cmd = "{scripts}/unique-kmers.py -k 20 -e 0.01 --stream-records {infile}"
     cmd = cmd.format(scripts=scriptpath(), infile=infile)
 
     (status, out, err) = run_shell_cmd(cmd)
diff --git a/tests/test_subset_graph.py b/tests/test_subset_graph.py
index fcf82da..0a33d0e 100644
--- a/tests/test_subset_graph.py
+++ b/tests/test_subset_graph.py
@@ -1,12 +1,40 @@
-from __future__ import print_function
-from __future__ import absolute_import
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2009-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2010-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
 # pylint: disable=missing-docstring,invalid-name,unused-variable,no-member
+from __future__ import print_function
+from __future__ import absolute_import
 import khmer
 import screed
 
diff --git a/tests/test_threaded_sequence_processor.py b/tests/test_threaded_sequence_processor.py
index 854a3fc..eebd233 100644
--- a/tests/test_threaded_sequence_processor.py
+++ b/tests/test_threaded_sequence_processor.py
@@ -1,9 +1,45 @@
+# This file is part of khmer, https://github.com/dib-lab/khmer/, and is
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+
 import sys
 from khmer.thread_utils import ThreadedSequenceProcessor, SequenceGroup
 from io import StringIO
 from screed.fasta import fasta_iter
 from screed.fastq import fastq_iter
 from nose.plugins.attrib import attr
+import screed
 
 # stdlib queue module was renamed on Python 3
 try:
@@ -23,7 +59,7 @@ def load_records_fastq(stringio_fp):
 
 
 def load_records_d(stringio_fp):
-    return dict([(r['name'], r['sequence'])
+    return dict([(r.name, r.sequence)
                  for r in load_records(stringio_fp)])
 
 # simple processing function: keep all sequences.
@@ -50,8 +86,8 @@ def every_other(record):
 def test_basic():
     tsp = ThreadedSequenceProcessor(idem, 1, 1, verbose=False)
 
-    input = [dict(name='a', sequence='AAA'),
-             dict(name='b', sequence='TTT'), ]
+    input = [screed.Record(name='a', sequence='AAA'),
+             screed.Record(name='b', sequence='TTT'), ]
     outfp = StringIO()
 
     tsp.start(input, outfp)
@@ -65,8 +101,8 @@ def test_basic():
 def test_basic_fastq_like():
     tsp = ThreadedSequenceProcessor(idem, 1, 1, verbose=False)
 
-    input = [dict(name='a', sequence='AAA', quality='###'),
-             dict(name='b', sequence='TTT', quality='###'), ]
+    input = [screed.Record(name='a', sequence='AAA', quality='###'),
+             screed.Record(name='b', sequence='TTT', quality='###'), ]
     outfp = StringIO()
 
     tsp.start(input, outfp)
@@ -79,8 +115,8 @@ def test_basic_fastq_like():
 def test_odd():
     tsp = ThreadedSequenceProcessor(every_other, 1, 1, verbose=False)
 
-    input = [dict(name='a', sequence='AAA'),
-             dict(name='b', sequence='TTT'), ]
+    input = [screed.Record(name='a', sequence='AAA'),
+             screed.Record(name='b', sequence='TTT'), ]
     outfp = StringIO()
 
     tsp.start(input, outfp)
@@ -93,8 +129,8 @@ def test_odd():
 def test_basic_2thread():
     tsp = ThreadedSequenceProcessor(idem, 2, 1, verbose=False)
 
-    input = [dict(name='a', sequence='AAA'),
-             dict(name='b', sequence='TTT'), ]
+    input = [screed.Record(name='a', sequence='AAA'),
+             screed.Record(name='b', sequence='TTT'), ]
     outfp = StringIO()
 
     tsp.start(input, outfp)
@@ -142,8 +178,8 @@ def test_paired_2thread():
 
     tsp = TSP_TestPairedProcess(idem, 1, 1, verbose=False)
 
-    input = [dict(name='a/1', sequence='AAA'),
-             dict(name='a/2', sequence='TTT'), ]
+    input = [screed.Record(name='a/1', sequence='AAA'),
+             screed.Record(name='a/2', sequence='TTT'), ]
     outfp = StringIO()
 
     tsp.start(input, outfp)
@@ -191,10 +227,10 @@ def test_paired_2thread_more_seq():
 
     tsp = TSP_TestPairedProcess(idem, 1, 1, verbose=False)
 
-    input = [dict(name='b/1', sequence='AAA'),
-             dict(name='a/1', sequence='AAA'),
-             dict(name='a/2', sequence='TTT'),
-             dict(name='c/2', sequence='AAA'), ]
+    input = [screed.Record(name='b/1', sequence='AAA'),
+             screed.Record(name='a/1', sequence='AAA'),
+             screed.Record(name='a/2', sequence='TTT'),
+             screed.Record(name='c/2', sequence='AAA'), ]
     outfp = StringIO()
 
     tsp.start(input, outfp)
diff --git a/tests/test_version.py b/tests/test_version.py
index f8a8901..e435b87 100644
--- a/tests/test_version.py
+++ b/tests/test_version.py
@@ -1,10 +1,38 @@
-from __future__ import print_function, unicode_literals
-#
 # This file is part of khmer, https://github.com/dib-lab/khmer/, and is
-# Copyright (C) Michigan State University, 2014-2015. It is licensed under
-# the three-clause BSD license; see LICENSE.
-# Contact: khmer-project at idyll.org
+# Copyright (C) 2011-2015, Michigan State University.
+# Copyright (C) 2015, The Regents of the University of California.
+#
+# 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 the Michigan State University 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 THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS 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.
+#
+# Contact: khmer-project at idyll.org
+from __future__ import print_function, unicode_literals
 import khmer
 from nose.plugins.attrib import attr
 
diff --git a/versioneer.py b/versioneer.py
old mode 100644
new mode 100755

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



More information about the debian-med-commit mailing list