diff --git a/Makefile b/Makefile
index 8a7911fa3cc8bcbf8b5134362269704f8b8fb38f..eb2f97ae396678f8489b416ccc0327409939bec5 100644
--- a/Makefile
+++ b/Makefile
@@ -138,7 +138,7 @@ clean:
 .PHONY: clean
 
 test: all
-	@cd test; sh test.sh
+	@cd test; bash test.sh
 
 .PHONY: test
 
diff --git a/README.md b/README.md
index ddef07afe666c10eb45e78fa45b10521818f7a60..c1261c3e79de204a6f46d91f36c2d89f1282dbd9 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
 bedtools - a swiss army knife for genome arithmetic         
 ===================================================
 
-**Current version**: 2.19.0
+**Current version**: 2.19.1
 
 Note
 -------
@@ -9,6 +9,8 @@ Stable release for bedtools were formerly archived on Google Code. Unfortunately
 downloads facility is shutting down; so henceforth, all source code and stable releases will be 
 maintained via this Github repository.
 
+**Full documentation**:  http://bedtools.readthedocs.org
+
 Summary
 -------
 Collectively, the bedtools utilities are a swiss-army knife of tools for a wide-range of genomics analysis tasks. The most widely-used tools enable genome arithmetic: that is, set theory on the genome. For example, bedtools allows one to intersect, merge, count, complement, and shuffle genomic intervals from multiple files in widely-used genomic file formats such as BAM, BED, GFF/GTF, VCF.
diff --git a/docs/conf.py b/docs/conf.py
index f5c2ebf95bdb8b10df40cbda68b555f152e12108..e20ce34ce32205f02aad9e96b543cb7383fd0bcc 100755
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -51,9 +51,9 @@ copyright = u'2009 - 2013, Aaron R. Quinlan'
 # built documents.
 #
 # The short X.Y version.
-version = '2.19.0'
+version = '2.19.1'
 # The full version, including alpha/beta/rc tags.
-release = '2.19.0'
+release = '2.19.1'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/docs/index.rst b/docs/index.rst
index c10368a53477145ef04cb34cabd48addc5c51583..7958298eae73cd76bca9e4c437bbb44f744e647d 100755
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -7,12 +7,26 @@ for a wide-range of genomics analysis tasks. The most widely-used
 tools enable *genome arithmetic*: that is, set theory on the genome.  For 
 example, **bedtools** allows one to *intersect*, *merge*, *count*, *complement*,
 and *shuffle* genomic intervals from multiple files in widely-used 
-genomic file formats such as BAM, BED, GFF/GTF, VCF. 
-
-While each individual tool is designed to do a relatively simple task (e.g., 
+genomic file formats such as BAM, BED, GFF/GTF, VCF. While each individual tool is designed to do a relatively simple task (e.g., 
 *intersect* two interval files), quite sophisticated analyses can be conducted
 by combining multiple bedtools operations on the UNIX command line.
 
+==========================
+Interesting usage examples
+==========================
+To whet your appetite, here are a few examples of ways in which bedtools has been used for genome research. If you have interesteding examples, please send them our way and we will add them to the list.
+
+
+- `Coverage analysis for targeted DNA capture <http://gettinggeneticsdone.blogspot.com/2014/03/visualize-coverage-exome-targeted-ngs-bedtools.html>`_. Thanks to `Stephen Turner <https://twitter.com/genetics_blog>`_.
+- `Measuring similarity of DNase hypersensitivity among many cell types <https://github.com/arq5x/bedtools-protocols/blob/master/bedtools.md#bp6--measuring-dataset-similarity>`_
+- `Extracting promoter sequences from a genome <http://www.biostars.org/p/17162/>`_
+- `Comparing intersections among many genome interval files <http://www.biostars.org/p/13516/>`_
+- `RNA-seq coverage analysis <http://www.cureffi.org/2013/11/18/an-mrna-seq-pipeline-using-gsnap-samtools-cufflinks-and-bedtools/>`_. Thanks to `Erik Minikel <https://twitter.com/cureffi>`_.
+- `Identifying targeted regions that lack coverage <https://twitter.com/aaronquinlan/status/421786507511205888>`_. Thanks to `Brent Pedersen <https://twitter.com/brent_p>`_.
+- `Calculating GC content for CCDS exons <http://www.biostars.org/p/47047/>`_.
+- `Making a master table of ChromHMM tracks for multiple cell types <https://gist.github.com/arq5x/3138599>`_.
+
+
 =================
 Table of contents
 =================
diff --git a/src/nucBed/nucBed.cpp b/src/nucBed/nucBed.cpp
index 9b515d277b938fd58430533b4aff8d1d6e5bd89d..ff4036930013edab4c9aceca65fa474ed61f1379 100644
--- a/src/nucBed/nucBed.cpp
+++ b/src/nucBed/nucBed.cpp
@@ -80,12 +80,12 @@ void NucBed::PrintHeader(void) {
     printf("%d_num_T\t", numOrigColumns + 6);
     printf("%d_num_N\t", numOrigColumns + 7);
     printf("%d_num_oth\t", numOrigColumns + 8);
-    printf("%d_seq_len\t", numOrigColumns + 9);
+    printf("%d_seq_len", numOrigColumns + 9);
     
     if (_printSeq)
-        printf("%d_seq", numOrigColumns + 10);
+        printf("\t%d_seq", numOrigColumns + 10);
     if (_hasPattern && !_printSeq)
-        printf("%d_user_patt_count", numOrigColumns + 10);
+        printf("\t%d_user_patt_count", numOrigColumns + 10);
     else if (_hasPattern && _printSeq)
         printf("\t%d_user_patt_count", numOrigColumns + 11);
     printf("\n");
diff --git a/src/shuffleBed/shuffleBed.cpp b/src/shuffleBed/shuffleBed.cpp
index 518e23784478b2a79f1fbee1da069228ac679a2e..9d6a2d1edd0714da454b0a6cbe315efa9e63cf71 100644
--- a/src/shuffleBed/shuffleBed.cpp
+++ b/src/shuffleBed/shuffleBed.cpp
@@ -74,15 +74,24 @@ BedShuffle::BedShuffle(string &bedFile, string &genomeFile,
     
     if (_haveInclude) {
         _include = new BedFile(includeFile);
-        _include->loadBedFileIntoMapNoBin();
-        
-        _numIncludeChroms = 0;
-        masterBedMapNoBin::const_iterator it  = _include->bedMapNoBin.begin(); 
-        masterBedMapNoBin::const_iterator itEnd = _include->bedMapNoBin.end();
-        for(; it != itEnd; ++it) {
-            _includeChroms.push_back(it->first);
-            _numIncludeChroms++;
+
+        // the user wants to choose the chromosome randomly first
+        if (_chooseChrom) {
+            _include->loadBedFileIntoMapNoBin();
+            _numIncludeChroms = 0;
+            masterBedMapNoBin::const_iterator it  = _include->bedMapNoBin.begin(); 
+            masterBedMapNoBin::const_iterator itEnd = _include->bedMapNoBin.end();
+            for(; it != itEnd; ++it) {
+                _includeChroms.push_back(it->first);
+                _numIncludeChroms++;
+            }
         }
+        // thue user wants the intervals shuffled accordingly to the 
+        // chrom distribution in the -incl file.
+        else
+        {
+            _include->loadBedFileIntoVector();
+        }   
     }
 
     if (_haveExclude == true && _haveInclude == false)
@@ -449,8 +458,14 @@ void BedShuffle::ChooseLocusFromInclusionFile(BED &bedEntry) {
     CHRPOS randomStart;
     BED includeInterval;
     
-    if (_sameChrom == false) {
-
+    // choose an -incl interval randomly.
+    if (_chooseChrom == false) {
+        includeInterval = _include->bedList[rand() % _include->bedList.size()];
+        bedEntry.chrom = includeInterval.chrom;
+    }
+    // choose a chromosome randomly from the -incl file. then choose an 
+    // interval from that chrom randomly.
+    else {
         // grab a random chromosome from the inclusion file.
         randomChrom            = _includeChroms[rand() % _numIncludeChroms];
         // get the number of inclusion intervals for that chrom
@@ -462,22 +477,6 @@ void BedShuffle::ChooseLocusFromInclusionFile(BED &bedEntry) {
 
         bedEntry.chrom = randomChrom;
     }
-    else {
-        if ( _include->bedMapNoBin.find(chrom) != _include->bedMapNoBin.end() ) 
-        {
-            // get the number of inclusion intervals for the original chrom
-            size_t size =  _include->bedMapNoBin[chrom].size();
-            // grab a random interval on the chosen chromosome.
-            includeInterval = _include->bedMapNoBin[chrom][rand() % size];
-        }
-        else {
-            cerr << "Error, line " << _bed->_lineNum 
-                 << ": the requested chromosome ("
-                 << chrom
-                 << ") cannot "
-                 << "be found in the -incl file " << endl;
-        }
-    }
     randomStart    = includeInterval.start + rand() % (includeInterval.size());
     bedEntry.start = randomStart;
     bedEntry.end   = randomStart + length;
diff --git a/src/shuffleBed/shuffleBedMain.cpp b/src/shuffleBed/shuffleBedMain.cpp
index c53dad503d77397e22c4630155c0881436dfccd3..fe49049d77943bf42960ca591976d20b1080e759 100644
--- a/src/shuffleBed/shuffleBedMain.cpp
+++ b/src/shuffleBed/shuffleBedMain.cpp
@@ -89,7 +89,6 @@ int shuffle_main(int argc, char* argv[]) {
         else if(PARAMETER_CHECK("-incl", 5, parameterLength)) {
             if ((i+1) < argc) {
                 haveInclude = true;
-                chooseChrom = true;
                 includeFile = argv[i + 1];
                 i++;
             }
@@ -173,7 +172,6 @@ void shuffle_help(void) {
     cerr << "\t-incl\t"             << "Instead of randomly placing features in a genome, the -incl" << endl;
     cerr                            << "\t\toptions defines a BED/GFF/VCF file of coordinates in which " << endl;
     cerr                            << "\t\tfeatures in -i should be randomly placed (e.g. genes.bed). " << endl;
-    cerr                            << "\t\t- NOTE: Forces use of -chromFirst (see below)." << endl << endl;
     
     cerr << "\t-chrom\t"            << "Keep features in -i on the same chromosome."<< endl;
     cerr                            << "\t\t- By default, the chrom and position are randomly chosen." << endl;
diff --git a/src/utils/bedFile/bedFile.cpp b/src/utils/bedFile/bedFile.cpp
index ea993affada562802248ebfeee62c74f431b963f..7c1ae8dc1184fea620542ba4046cf1b2521fcb09 100644
--- a/src/utils/bedFile/bedFile.cpp
+++ b/src/utils/bedFile/bedFile.cpp
@@ -748,3 +748,17 @@ void BedFile::loadBedFileIntoMapNoBin() {
         sort(m->second.begin(), m->second.end(), sortByStart);
     }
 }
+
+void BedFile::loadBedFileIntoVector() {
+
+    BED bedEntry;
+    
+    Open();
+    while (GetNextBed(bedEntry)) {
+        if (_status == BED_VALID) {
+            bedList.push_back(bedEntry);
+        }
+    }
+    Close();
+}
+
diff --git a/src/utils/bedFile/bedFile.h b/src/utils/bedFile/bedFile.h
index 37d8dda799ce0e6110eda3ec04be230dda2637f0..440986c0007fba7607d2106e58e7643f0955dccb 100644
--- a/src/utils/bedFile/bedFile.h
+++ b/src/utils/bedFile/bedFile.h
@@ -433,6 +433,9 @@ public:
     // load a BED file into a map keyed by chrom. value is vector of BEDs
     void loadBedFileIntoMapNoBin();
 
+    // load a BED file into a vector of BEDs
+    void loadBedFileIntoVector();
+
     // Given a chrom, start, end and strand for a single feature,
     // search for all overlapping features in another BED file.
     // Searches through each relevant genome bin on the same chromosome
@@ -487,6 +490,7 @@ public:
     masterBedCovMap      bedCovMap;
     masterBedCovListMap  bedCovListMap;
     masterBedMap         bedMap;
+    bedVector            bedList;
     masterBedMapNoBin    bedMapNoBin;
     
     BedLineStatus _status;
diff --git a/src/utils/fileType/fileType.cpp b/src/utils/fileType/fileType.cpp
index 0b05acb18ffa42d7df6c33630f6bedc0d9d48b19..6c075144dc858f721146789167d85c88e0fd6337 100644
--- a/src/utils/fileType/fileType.cpp
+++ b/src/utils/fileType/fileType.cpp
@@ -48,24 +48,31 @@ bool isGzipFile(istream *file) {
        without triggering the "fail" bit.  This was necessary to support
        FIFOs, per version 2.13.0
     */
-    struct  {
-        unsigned char id1;
+//    struct  {
+//        unsigned char id1;
 //      unsigned char id2;
 //      unsigned char cm;
-    } gzip_header;
+//    } gzip_header;
 
-    if (!file->read((char*)&gzip_header, sizeof(gzip_header))) {
-        return false;
-    }
-
-    if ( gzip_header.id1 == 0x1f )
+//   if (!file->read((char*)&gzip_header, sizeof(gzip_header))) {
+//       return false;
+//   }
+//  if ( gzip_header.id1 == 0x1f )
 //       &&
 //       gzip_header.id2 == 0x8b
 //       &&
 //       gzip_header.cm == 8 )
+
+/*
+        26-Dec-2012 and again 20-Mar-2014:
+        Just peek at the first byte instead of reading it so that we don't
+        affect the istream's failbit.  This modification was wisely proposed
+        by John Marshall in response to Issue 30:
+        https://github.com/arq5x/bedtools/issues/30
+ */
+    if (file->peek() == 0x1f)
     {
         return true;
     }
-    file->putback(gzip_header.id1);
     return false;
 }
diff --git a/test/general/test-general.sh b/test/general/test-general.sh
index 6028bf15ebfea397443114f1b82ee2e67ecb05ae..38b3f6e80e36c3c39659fc41da5ef9697a0049cf 100644
--- a/test/general/test-general.sh
+++ b/test/general/test-general.sh
@@ -96,3 +96,191 @@ check obs exp
 rm obs exp
 
 
+###########################################################
+#  Test GZIP, non-GZIP, and empty file functionality.
+###########################################################
+echo "chr1	1	100" > a.bed
+echo "chr1	75	200" > b.bed
+echo -n "" > c.bed
+echo "chr1	1	5000" > genome.txt
+gzip -c a.bed > a.bed.gz
+gzip -c b.bed > b.bed.gz
+gzip -c c.bed > c.bed.gz
+
+
+echo "    general.t09...\c"
+$BT intersect -a a.bed -b b.bed > obs
+echo "chr1	75	100" > exp
+check obs exp
+
+echo "    general.t10...\c"
+$BT intersect -a a.bed.gz -b b.bed.gz > obs
+echo "chr1	75	100" > exp
+check obs exp
+
+echo "    general.t11...\c"
+$BT intersect -a a.bed -b b.bed.gz > obs
+echo "chr1	75	100" > exp
+check obs exp
+
+echo "    general.t12...\c"
+$BT intersect -a a.bed.gz -b b.bed > obs
+echo "chr1	75	100" > exp
+check obs exp
+
+echo "    general.t13...\c"
+$BT intersect -a c.bed -b b.bed > obs
+echo -n "" > exp
+check obs exp
+
+echo "    general.t14...\c"
+$BT intersect -a c.bed.gz -b b.bed > obs
+echo -n "" > exp
+check obs exp
+
+echo "    general.15...\c"
+$BT intersect -a c.bed.gz -b c.bed.gz > obs
+echo -n "" > exp
+check obs exp
+
+
+echo "    general.t16...\c"
+$BT subtract -a a.bed -b b.bed > obs
+echo "chr1	1	75" > exp
+check obs exp
+
+echo "    general.t17...\c"
+$BT subtract -a a.bed.gz -b b.bed.gz > obs
+echo "chr1	1	75" > exp
+check obs exp
+
+echo "    general.t18...\c"
+$BT subtract -a a.bed -b b.bed.gz > obs
+echo "chr1	1	75" > exp
+check obs exp
+
+echo "    general.t19...\c"
+$BT subtract -a a.bed.gz -b b.bed > obs
+echo "chr1	1	75" > exp
+check obs exp
+
+echo "    general.t20...\c"
+$BT subtract -a c.bed -b b.bed > obs
+echo -n "" > exp
+check obs exp
+
+echo "    general.t21...\c"
+$BT subtract -a c.bed.gz -b b.bed > obs
+echo -n "" > exp
+check obs exp
+
+echo "    general.22...\c"
+$BT subtract -a c.bed.gz -b c.bed.gz > obs
+echo -n "" > exp
+check obs exp
+
+
+echo "    general.t23...\c"
+$BT window -a a.bed -b b.bed > obs
+echo "chr1	1	100	chr1	75	200" > exp
+check obs exp
+
+echo "    general.t24...\c"
+$BT window -a a.bed.gz -b b.bed.gz > obs
+echo "chr1	1	100	chr1	75	200" > exp
+check obs exp
+
+echo "    general.t25...\c"
+$BT window -a a.bed -b b.bed.gz > obs
+echo "chr1	1	100	chr1	75	200" > exp
+check obs exp
+
+echo "    general.t26...\c"
+$BT window -a a.bed.gz -b b.bed > obs
+echo "chr1	1	100	chr1	75	200" > exp
+check obs exp
+
+echo "    general.t27...\c"
+$BT window -a c.bed -b b.bed > obs
+echo -n "" > exp
+check obs exp
+
+echo "    general.t28...\c"
+$BT window -a c.bed.gz -b b.bed > obs
+echo -n "" > exp
+check obs exp
+
+echo "    general.29...\c"
+$BT window -a c.bed.gz -b c.bed.gz > obs
+echo -n "" > exp
+check obs exp
+
+
+echo "    general.t30...\c"
+$BT closest -a a.bed -b b.bed > obs
+echo "chr1	1	100	chr1	75	200" > exp
+check obs exp
+
+echo "    general.t31...\c"
+$BT closest -a a.bed.gz -b b.bed.gz > obs
+echo "chr1	1	100	chr1	75	200" > exp
+check obs exp
+
+echo "    general.t32...\c"
+$BT closest -a a.bed -b b.bed.gz > obs
+echo "chr1	1	100	chr1	75	200" > exp
+check obs exp
+
+echo "    general.t33...\c"
+$BT closest -a a.bed.gz -b b.bed > obs
+echo "chr1	1	100	chr1	75	200" > exp
+check obs exp
+
+echo "    general.t34...\c"
+$BT closest -a c.bed -b b.bed > obs
+echo -n "" > exp
+check obs exp
+
+echo "    general.t35...\c"
+$BT closest -a c.bed.gz -b b.bed > obs
+echo -n "" > exp
+check obs exp
+
+echo "    general.36...\c"
+$BT closest -a c.bed.gz -b c.bed.gz > obs
+echo -n "" > exp
+check obs exp
+
+
+echo "    general.t37...\c"
+$BT merge -i a.bed > obs
+echo "chr1	1	100" > exp
+check obs exp
+
+echo "    general.t38...\c"
+$BT merge -i a.bed.gz > obs
+echo "chr1	1	100" > exp
+check obs exp
+
+echo "    general.t39...\c"
+$BT merge -i b.bed > obs
+echo "chr1	75	200" > exp
+check obs exp
+
+echo "    general.t40...\c"
+$BT merge -i b.bed.gz > obs
+echo "chr1	75	200" > exp
+check obs exp
+
+echo "    general.t41...\c"
+$BT merge -i c.bed > obs
+echo -n "" > exp
+check obs exp
+
+echo "    general.t42...\c"
+$BT merge -i c.bed.gz > obs
+echo -n "" > exp
+check obs exp
+
+rm a.bed.gz b.bed.gz a.bed b.bed genome.txt
+
diff --git a/test/map/test-map.sh b/test/map/test-map.sh
index d9ecbaca890ad1c25b567b97b8c42a0c9cb26604..70d550a92fcc929fccc04e09fbeea7fe86ce93cb 100644
--- a/test/map/test-map.sh
+++ b/test/map/test-map.sh
@@ -694,7 +694,7 @@ echo \
 "
 *****
 ***** ERROR: There are 1 columns given, but there are 2 operations."  > exp
-../../bin/bedtools map -a ivls.bed -b values.bed -o count,sum 2>&1 > /dev/null | head -3 > obs
+$BT map -a ivls.bed -b values.bed -o count,sum 2>&1 > /dev/null | head -3 > obs
 check obs exp
 rm obs exp
 
@@ -708,7 +708,7 @@ echo \
 "
 *****
 ***** ERROR: There are 3 columns given, but there are 2 operations."  > exp
-../../bin/bedtools map -a ivls.bed -b values.bed -c 5,1,2 -o count,sum 2>&1 > /dev/null | head -3 > obs
+$BT map -a ivls.bed -b values.bed -c 5,1,2 -o count,sum 2>&1 > /dev/null | head -3 > obs
 check obs exp
 rm obs exp
 
@@ -721,7 +721,7 @@ echo \
 "
 *****
 ***** ERROR: Column 1 is not a numeric field for database file values.bed."  > exp
-../../bin/bedtools map -a ivls.bed -b values.bed -c 1 -o sum 2>&1 > /dev/null | head -3 > obs
+$BT map -a ivls.bed -b values.bed -c 1 -o sum 2>&1 > /dev/null | head -3 > obs
 check obs exp
 rm obs exp
 
@@ -738,7 +738,7 @@ chr2	0	100	.	.
 chr2	100	200	.	.
 chr3	0	100	6	7
 chr3	100	200	8	23" > exp
-../../bin/bedtools map -a ivls.bed -b values4.bed -c 5,7 -o sum > obs
+$BT map -a ivls.bed -b values4.bed -c 5,7 -o sum > obs
 check obs exp
 rm obs exp
 
@@ -755,7 +755,7 @@ chr2	0	100	.	.	.
 chr2	100	200	.	.	.
 chr3	0	100	10	6	7
 chr3	100	200	120	8	23" > exp
-../../bin/bedtools map -a ivls.bed -b values4.bed -c 2,5,7 -o mean,sum,sum > obs
+$BT map -a ivls.bed -b values4.bed -c 2,5,7 -o mean,sum,sum > obs
 check obs exp
 rm obs exp
 
@@ -771,7 +771,7 @@ chr2	0	100	.
 chr2	100	200	.
 chr3	0	100	76.2222
 chr3	100	200	0.25" > exp
-../../bin/bedtools map -a ivls.bed -b values4.bed -c 7 -o stddev > obs
+$BT map -a ivls.bed -b values4.bed -c 7 -o stddev > obs
 check obs exp
 rm obs exp
 
@@ -786,7 +786,7 @@ chr2	0	100	.
 chr2	100	200	.
 chr3	0	100	114.333
 chr3	100	200	0.5" > exp
-../../bin/bedtools map -a ivls.bed -b values4.bed -c 7 -o sample_stddev > obs
+$BT map -a ivls.bed -b values4.bed -c 7 -o sample_stddev > obs
 check obs exp
 rm obs exp
 
diff --git a/test/reldist/test-reldist.sh b/test/reldist/test-reldist.sh
index eebde8bda5c3608f9477bd0e91b2028d627e131b..fc315127c1f301e9484891a93c95ee5956d6e16a 100644
--- a/test/reldist/test-reldist.sh
+++ b/test/reldist/test-reldist.sh
@@ -1,4 +1,5 @@
 BT=${BT-../../bin/bedtools}
+DATA=${DATA-../../data}
 
 check()
 {
@@ -17,8 +18,8 @@ echo "    reldist.t01...\c"
 echo \
 "reldist	count	total	fraction
 0.00	43424	43424	1.000" > exp
-$BT reldist -a ../../data/refseq.chr1.exons.bed.gz \
-            -b ../../data/refseq.chr1.exons.bed.gz > obs
+$BT reldist -a $DATA/refseq.chr1.exons.bed.gz \
+            -b $DATA/refseq.chr1.exons.bed.gz > obs
 check obs exp
 rm obs exp
 
@@ -79,8 +80,8 @@ echo \
 0.47	850	43408	0.020
 0.48	1006	43408	0.023
 0.49	937	43408	0.022" > exp
-$BT reldist -a ../../data/refseq.chr1.exons.bed.gz \
-            -b ../../data/aluY.chr1.bed.gz > obs
+$BT reldist -a $DATA/refseq.chr1.exons.bed.gz \
+            -b $DATA/aluY.chr1.bed.gz > obs
 check obs exp
 rm obs exp
 
@@ -143,7 +144,7 @@ echo \
 0.48	365	43422	0.008
 0.49	336	43422	0.008
 0.50	38	43422	0.001" > exp
-$BT reldist -a ../../data/refseq.chr1.exons.bed.gz \
-            -b ../../data/gerp.chr1.bed.gz > obs
+$BT reldist -a $DATA/refseq.chr1.exons.bed.gz \
+            -b $DATA/gerp.chr1.bed.gz > obs
 check obs exp
-rm obs exp
\ No newline at end of file
+rm obs exp
diff --git a/test/shuffle/excl.bed b/test/shuffle/excl.bed
new file mode 100644
index 0000000000000000000000000000000000000000..c9300e6581aa732e3fe4264282af451a254134dc
--- /dev/null
+++ b/test/shuffle/excl.bed
@@ -0,0 +1,9 @@
+chr1	0	10000000
+chr1	10000000	20000000
+chr1	20000000	30000000
+chr1	30000000	400000000
+chr1	40000000	500000000
+chr2	0	100000000
+chr3	0	100000000
+chr4	0	100000000
+chr5	0	100000000
diff --git a/test/shuffle/incl.bed b/test/shuffle/incl.bed
new file mode 100644
index 0000000000000000000000000000000000000000..68f76c334c9088ca81d0ccc86d77fc933ea7c8eb
--- /dev/null
+++ b/test/shuffle/incl.bed
@@ -0,0 +1,9 @@
+chr1	0	1000000
+chr1	1000000	2000000
+chr1	2000000	3000000
+chr1	3000000	4000000
+chr1	4000000	5000000
+chr2	0	1000000
+chr3	0	1000000
+chr4	0	1000000
+chr5	0	1000000
diff --git a/test/shuffle/simrep.bed b/test/shuffle/simrep.bed
new file mode 100644
index 0000000000000000000000000000000000000000..7d620fcd7d4e2ddd402e4a5408331e36a0a2c8ae
--- /dev/null
+++ b/test/shuffle/simrep.bed
@@ -0,0 +1,1000 @@
+chr1	10000	10468	trf	789
+chr1	10627	10800	trf	346
+chr1	10757	10997	trf	434
+chr1	11225	11447	trf	273
+chr1	11271	11448	trf	187
+chr1	11283	11448	trf	199
+chr1	19305	19443	trf	242
+chr1	20828	20863	trf	70
+chr1	30862	30959	trf	79
+chr1	44835	44876	trf	73
+chr1	50481	50513	trf	64
+chr1	54712	54817	trf	149
+chr1	59896	59934	trf	58
+chr1	66159	66629	trf	278
+chr1	66160	66630	trf	339
+chr1	66204	66632	trf	202
+chr1	72120	72163	trf	59
+chr1	72124	72164	trf	62
+chr1	72128	72163	trf	52
+chr1	83505	83682	trf	302
+chr1	83791	84041	trf	335
+chr1	88674	88962	trf	441
+chr1	90047	90430	trf	712
+chr1	92209	92243	trf	68
+chr1	98999	99042	trf	86
+chr1	99046	99116	trf	68
+chr1	99046	99115	trf	95
+chr1	99046	99116	trf	104
+chr1	99047	99115	trf	77
+chr1	104160	104196	trf	63
+chr1	108444	108469	trf	50
+chr1	109564	109614	trf	82
+chr1	111439	111490	trf	66
+chr1	120967	121135	trf	150
+chr1	120968	121135	trf	159
+chr1	120968	121135	trf	137
+chr1	120968	121135	trf	166
+chr1	120968	121135	trf	121
+chr1	133744	133777	trf	50
+chr1	134065	134094	trf	58
+chr1	136199	137288	trf	1683
+chr1	136199	137288	trf	1880
+chr1	136199	137288	trf	1887
+chr1	137395	137465	trf	90
+chr1	139377	139457	trf	97
+chr1	144527	144576	trf	98
+chr1	147433	147475	trf	66
+chr1	147434	147478	trf	79
+chr1	158997	159031	trf	59
+chr1	162180	162275	trf	66
+chr1	162196	162353	trf	65
+chr1	162196	162325	trf	97
+chr1	162235	162281	trf	92
+chr1	162287	162344	trf	69
+chr1	162358	162393	trf	54
+chr1	164403	164470	trf	109
+chr1	174401	174686	trf	329
+chr1	174902	174933	trf	62
+chr1	176202	176231	trf	58
+chr1	227417	227805	trf	681
+chr1	236611	236766	trf	283
+chr1	238536	238570	trf	68
+chr1	241136	241161	trf	50
+chr1	241137	241180	trf	52
+chr1	241137	241179	trf	59
+chr1	245334	245365	trf	62
+chr1	245362	245430	trf	84
+chr1	245362	245428	trf	87
+chr1	245364	245430	trf	75
+chr1	245369	245430	trf	50
+chr1	245370	245430	trf	70
+chr1	245370	245428	trf	64
+chr1	245384	245430	trf	74
+chr1	248425	248468	trf	68
+chr1	250477	250511	trf	59
+chr1	254759	254784	trf	50
+chr1	255885	255929	trf	61
+chr1	255885	255929	trf	70
+chr1	257754	257805	trf	66
+chr1	267288	267425	trf	171
+chr1	267289	267425	trf	90
+chr1	267297	267425	trf	109
+chr1	324677	324757	trf	97
+chr1	325225	325313	trf	81
+chr1	326846	327154	trf	438
+chr1	326846	327154	trf	539
+chr1	329259	329284	trf	50
+chr1	329572	329605	trf	50
+chr1	342186	342356	trf	136
+chr1	342186	342355	trf	152
+chr1	342193	342352	trf	229
+chr1	351840	351891	trf	66
+chr1	361047	361090	trf	63
+chr1	363669	363832	trf	290
+chr1	384364	386754	trf	4622
+chr1	387005	387047	trf	57
+chr1	387034	387177	trf	94
+chr1	387036	387181	trf	80
+chr1	392650	392701	trf	84
+chr1	401285	401444	trf	218
+chr1	401573	401748	trf	280
+chr1	404661	404707	trf	92
+chr1	406202	406274	trf	76
+chr1	406227	406286	trf	77
+chr1	406776	406819	trf	68
+chr1	409821	409866	trf	51
+chr1	409865	409900	trf	52
+chr1	421245	421285	trf	64
+chr1	422395	422435	trf	80
+chr1	422560	422588	trf	56
+chr1	424690	424795	trf	75
+chr1	425529	425555	trf	52
+chr1	426691	426716	trf	50
+chr1	436729	437092	trf	658
+chr1	436785	436926	trf	81
+chr1	437637	438182	trf	1018
+chr1	437785	437896	trf	92
+chr1	437793	437899	trf	79
+chr1	440818	440844	trf	52
+chr1	440878	440928	trf	75
+chr1	440878	440997	trf	112
+chr1	440885	440997	trf	98
+chr1	440946	441013	trf	93
+chr1	445172	445363	trf	292
+chr1	445172	445363	trf	292
+chr1	445177	445376	trf	184
+chr1	445177	445400	trf	171
+chr1	445401	445494	trf	154
+chr1	446414	446792	trf	738
+chr1	446414	447053	trf	1224
+chr1	446523	446656	trf	248
+chr1	446575	446923	trf	660
+chr1	446706	447054	trf	642
+chr1	446837	446975	trf	267
+chr1	446941	447668	trf	1247
+chr1	448022	448062	trf	53
+chr1	448299	448328	trf	58
+chr1	448680	448724	trf	53
+chr1	448684	448724	trf	55
+chr1	449273	450589	trf	2380
+chr1	451283	451338	trf	56
+chr1	451399	451632	trf	152
+chr1	451537	451728	trf	276
+chr1	451584	451813	trf	365
+chr1	451678	451726	trf	96
+chr1	451753	451858	trf	144
+chr1	451793	452184	trf	692
+chr1	451816	452119	trf	187
+chr1	451816	452137	trf	269
+chr1	451823	451936	trf	138
+chr1	451876	452092	trf	256
+chr1	451921	452020	trf	117
+chr1	451978	452184	trf	279
+chr1	452783	452893	trf	152
+chr1	453564	453604	trf	55
+chr1	455230	455284	trf	90
+chr1	458520	458548	trf	56
+chr1	462939	463094	trf	283
+chr1	528496	528550	trf	99
+chr1	530176	530216	trf	55
+chr1	530887	530997	trf	152
+chr1	531596	531802	trf	279
+chr1	531596	531987	trf	683
+chr1	531661	531964	trf	178
+chr1	531688	531904	trf	247
+chr1	531934	532229	trf	464
+chr1	532022	532370	trf	268
+chr1	532081	532184	trf	120
+chr1	532087	532174	trf	122
+chr1	532431	532481	trf	64
+chr1	532431	532485	trf	72
+chr1	533174	534114	trf	1835
+chr1	533191	533267	trf	61
+chr1	534667	534710	trf	50
+chr1	534667	534707	trf	52
+chr1	534667	534708	trf	57
+chr1	535062	535091	trf	58
+chr1	535328	535368	trf	53
+chr1	535722	536212	trf	818
+chr1	536099	536447	trf	651
+chr1	536178	536316	trf	267
+chr1	536230	536556	trf	607
+chr1	537589	537739	trf	158
+chr1	537602	537744	trf	221
+chr1	541894	541943	trf	59
+chr1	541894	542022	trf	102
+chr1	541910	542022	trf	93
+chr1	541910	542029	trf	112
+chr1	541979	542029	trf	75
+chr1	542063	542089	trf	52
+chr1	544720	546141	trf	2669
+chr1	546686	547869	trf	2189
+chr1	546748	546993	trf	79
+chr1	547692	547833	trf	81
+chr1	557890	557915	trf	50
+chr1	559051	559079	trf	56
+chr1	559813	559914	trf	67
+chr1	559817	559858	trf	82
+chr1	562161	562201	trf	80
+chr1	563313	563353	trf	64
+chr1	580567	580602	trf	52
+chr1	580599	580641	trf	50
+chr1	580601	580647	trf	53
+chr1	583652	583695	trf	68
+chr1	584186	584244	trf	75
+chr1	585763	585803	trf	80
+chr1	588715	588890	trf	271
+chr1	589019	589170	trf	206
+chr1	597756	597807	trf	84
+chr1	603277	603432	trf	91
+chr1	603277	603432	trf	107
+chr1	603279	603434	trf	109
+chr1	603714	605330	trf	2931
+chr1	603937	604136	trf	96
+chr1	625321	625429	trf	137
+chr1	625857	626020	trf	290
+chr1	628597	628640	trf	63
+chr1	637802	637853	trf	66
+chr1	647337	647474	trf	115
+chr1	647338	647474	trf	104
+chr1	647342	647475	trf	130
+chr1	649704	649806	trf	204
+chr1	660108	660141	trf	50
+chr1	660431	660460	trf	58
+chr1	662565	662776	trf	295
+chr1	662565	662776	trf	359
+chr1	662883	662953	trf	81
+chr1	664865	664945	trf	97
+chr1	683120	683167	trf	76
+chr1	683123	683164	trf	55
+chr1	694826	694878	trf	95
+chr1	698013	698088	trf	69
+chr1	698019	698050	trf	62
+chr1	698023	698125	trf	99
+chr1	698024	698119	trf	75
+chr1	698040	698189	trf	110
+chr1	698131	698184	trf	70
+chr1	698198	698233	trf	54
+chr1	700243	700310	trf	109
+chr1	710207	710475	trf	331
+chr1	711984	712013	trf	58
+chr1	715022	715119	trf	133
+chr1	723748	723815	trf	52
+chr1	724137	727026	trf	1878
+chr1	724137	727026	trf	1878
+chr1	724137	727053	trf	1878
+chr1	726432	726478	trf	57
+chr1	731148	731189	trf	57
+chr1	743653	743700	trf	58
+chr1	743669	743718	trf	59
+chr1	743675	743718	trf	77
+chr1	746613	746648	trf	70
+chr1	747408	747448	trf	71
+chr1	755293	759043	trf	4409
+chr1	755609	755666	trf	53
+chr1	755625	755683	trf	53
+chr1	755765	755821	trf	60
+chr1	756535	756593	trf	55
+chr1	757494	757589	trf	54
+chr1	768037	768091	trf	72
+chr1	768116	768161	trf	90
+chr1	774678	775030	trf	506
+chr1	777293	777321	trf	56
+chr1	779740	779783	trf	77
+chr1	788795	789286	trf	865
+chr1	795558	795591	trf	66
+chr1	797133	797164	trf	53
+chr1	797158	797540	trf	178
+chr1	797168	797548	trf	136
+chr1	797189	797384	trf	63
+chr1	801825	802573	trf	1028
+chr1	804833	804900	trf	71
+chr1	804842	804900	trf	59
+chr1	805547	805588	trf	66
+chr1	806066	806132	trf	87
+chr1	807883	808559	trf	1130
+chr1	807883	808559	trf	1244
+chr1	811209	811814	trf	709
+chr1	816722	816761	trf	53
+chr1	823041	823078	trf	56
+chr1	823700	823757	trf	53
+chr1	823729	823881	trf	50
+chr1	823729	823968	trf	59
+chr1	823789	823828	trf	60
+chr1	823852	824027	trf	280
+chr1	823895	823966	trf	51
+chr1	823971	824057	trf	106
+chr1	823978	824059	trf	63
+chr1	828736	828771	trf	52
+chr1	829181	829220	trf	78
+chr1	834020	834055	trf	52
+chr1	835728	835792	trf	110
+chr1	836174	836199	trf	50
+chr1	839851	840119	trf	242
+chr1	839851	840119	trf	376
+chr1	839858	839943	trf	152
+chr1	839919	840117	trf	288
+chr1	840064	840098	trf	68
+chr1	840392	840494	trf	204
+chr1	842254	842394	trf	271
+chr1	843966	844177	trf	156
+chr1	843993	844076	trf	64
+chr1	844009	844176	trf	77
+chr1	844009	844123	trf	82
+chr1	844028	844123	trf	158
+chr1	844063	844201	trf	176
+chr1	844107	844193	trf	111
+chr1	844145	844229	trf	132
+chr1	844188	844232	trf	52
+chr1	844300	845279	trf	1655
+chr1	844300	845279	trf	1653
+chr1	844300	845279	trf	1777
+chr1	850333	850370	trf	56
+chr1	850976	851057	trf	144
+chr1	850978	851045	trf	57
+chr1	851738	851811	trf	110
+chr1	856983	857083	trf	75
+chr1	857031	857115	trf	74
+chr1	857060	857105	trf	74
+chr1	857067	857105	trf	76
+chr1	865461	865532	trf	142
+chr1	869345	870342	trf	1726
+chr1	871614	871813	trf	380
+chr1	871614	871836	trf	345
+chr1	871614	871836	trf	381
+chr1	873597	873709	trf	215
+chr1	874778	874888	trf	213
+chr1	883034	883124	trf	144
+chr1	884026	884057	trf	53
+chr1	885466	885544	trf	86
+chr1	885525	885653	trf	154
+chr1	885581	885612	trf	55
+chr1	885700	885825	trf	121
+chr1	885771	885825	trf	65
+chr1	885777	885825	trf	60
+chr1	885898	885930	trf	50
+chr1	885900	885928	trf	56
+chr1	890221	890256	trf	54
+chr1	892142	892275	trf	248
+chr1	892838	892953	trf	214
+chr1	895470	895850	trf	389
+chr1	895470	895852	trf	341
+chr1	895480	895852	trf	321
+chr1	895480	895792	trf	220
+chr1	899910	899993	trf	112
+chr1	899922	900224	trf	508
+chr1	900683	900726	trf	50
+chr1	900683	900724	trf	64
+chr1	904261	904289	trf	56
+chr1	904696	904765	trf	79
+chr1	904832	904922	trf	64
+chr1	904840	904937	trf	76
+chr1	904849	904901	trf	56
+chr1	904857	904919	trf	88
+chr1	904894	904950	trf	60
+chr1	904988	905037	trf	50
+chr1	905018	905066	trf	62
+chr1	905101	905145	trf	52
+chr1	905139	905170	trf	53
+chr1	905338	905562	trf	430
+chr1	910475	910561	trf	104
+chr1	910486	910537	trf	59
+chr1	910487	910560	trf	58
+chr1	910487	910558	trf	78
+chr1	910496	910561	trf	55
+chr1	912066	913452	trf	1950
+chr1	913746	913783	trf	65
+chr1	915298	915521	trf	383
+chr1	919955	919987	trf	64
+chr1	919991	920037	trf	92
+chr1	924066	924745	trf	846
+chr1	926889	926923	trf	50
+chr1	928267	928532	trf	372
+chr1	928270	928532	trf	389
+chr1	931634	932247	trf	1043
+chr1	932994	933111	trf	207
+chr1	934123	934164	trf	73
+chr1	934653	934692	trf	51
+chr1	941137	941186	trf	80
+chr1	941138	941186	trf	71
+chr1	943126	943160	trf	68
+chr1	945179	945710	trf	663
+chr1	946284	946707	trf	446
+chr1	951148	951737	trf	781
+chr1	953089	953185	trf	156
+chr1	953143	953581	trf	727
+chr1	953199	953460	trf	171
+chr1	953250	953504	trf	255
+chr1	954849	954889	trf	64
+chr1	955321	955424	trf	77
+chr1	955321	955424	trf	59
+chr1	955366	955419	trf	63
+chr1	961126	961164	trf	58
+chr1	963851	964525	trf	1197
+chr1	964343	964441	trf	80
+chr1	964745	964826	trf	126
+chr1	964766	964864	trf	102
+chr1	964970	966672	trf	1913
+chr1	964970	966699	trf	1483
+chr1	965018	965308	trf	246
+chr1	965719	965868	trf	78
+chr1	966062	966203	trf	237
+chr1	966540	966677	trf	194
+chr1	969012	969213	trf	79
+chr1	969065	969213	trf	81
+chr1	976345	976518	trf	82
+chr1	976360	976505	trf	281
+chr1	976362	976421	trf	84
+chr1	976437	976496	trf	84
+chr1	976476	976522	trf	67
+chr1	977058	977237	trf	340
+chr1	977156	977232	trf	63
+chr1	984503	984583	trf	124
+chr1	987833	988039	trf	277
+chr1	987833	988039	trf	290
+chr1	987902	988052	trf	198
+chr1	987974	988236	trf	445
+chr1	988030	988173	trf	92
+chr1	988150	988316	trf	228
+chr1	988559	988607	trf	87
+chr1	988586	988670	trf	123
+chr1	991335	991369	trf	59
+chr1	991698	991905	trf	297
+chr1	991706	991908	trf	134
+chr1	991828	992100	trf	373
+chr1	991828	992100	trf	431
+chr1	991974	992012	trf	58
+chr1	991982	992014	trf	64
+chr1	992049	992133	trf	123
+chr1	995008	995063	trf	76
+chr1	997426	997584	trf	67
+chr1	997453	997513	trf	77
+chr1	997476	997570	trf	85
+chr1	997483	997584	trf	125
+chr1	999018	999068	trf	63
+chr1	1000223	1000702	trf	840
+chr1	1002912	1002945	trf	57
+chr1	1004112	1004214	trf	186
+chr1	1004412	1004491	trf	131
+chr1	1010238	1010295	trf	91
+chr1	1010263	1010322	trf	68
+chr1	1010278	1010363	trf	93
+chr1	1010966	1011101	trf	252
+chr1	1011232	1014805	trf	5788
+chr1	1016016	1016409	trf	750
+chr1	1019922	1020020	trf	155
+chr1	1022153	1022239	trf	93
+chr1	1023206	1023336	trf	228
+chr1	1023322	1023355	trf	57
+chr1	1023515	1023739	trf	188
+chr1	1024905	1024943	trf	67
+chr1	1027069	1027195	trf	200
+chr1	1027082	1027147	trf	58
+chr1	1027689	1027725	trf	63
+chr1	1028061	1028113	trf	86
+chr1	1034367	1035284	trf	1392
+chr1	1035608	1035699	trf	157
+chr1	1036893	1036956	trf	90
+chr1	1036893	1036956	trf	108
+chr1	1036928	1037071	trf	166
+chr1	1037451	1037476	trf	50
+chr1	1037663	1037716	trf	88
+chr1	1037994	1038029	trf	70
+chr1	1041264	1041299	trf	52
+chr1	1042610	1042845	trf	353
+chr1	1042754	1042884	trf	176
+chr1	1042995	1043052	trf	87
+chr1	1043427	1044497	trf	1479
+chr1	1043427	1044497	trf	1430
+chr1	1043429	1043671	trf	81
+chr1	1043429	1044497	trf	1439
+chr1	1044117	1044168	trf	52
+chr1	1044397	1044448	trf	52
+chr1	1044791	1044820	trf	51
+chr1	1047748	1048055	trf	422
+chr1	1050860	1051130	trf	261
+chr1	1050860	1051124	trf	292
+chr1	1050860	1051121	trf	368
+chr1	1052448	1052587	trf	103
+chr1	1052448	1052587	trf	136
+chr1	1052449	1052587	trf	125
+chr1	1056378	1056453	trf	105
+chr1	1058858	1059628	trf	382
+chr1	1058863	1059628	trf	286
+chr1	1058875	1059629	trf	301
+chr1	1058875	1059342	trf	168
+chr1	1058889	1058970	trf	72
+chr1	1058996	1059106	trf	82
+chr1	1059233	1059602	trf	250
+chr1	1059235	1059595	trf	297
+chr1	1059303	1059373	trf	59
+chr1	1061937	1062127	trf	281
+chr1	1064073	1064139	trf	96
+chr1	1065566	1065596	trf	60
+chr1	1069588	1069676	trf	131
+chr1	1070119	1070237	trf	202
+chr1	1071446	1071496	trf	91
+chr1	1074450	1076089	trf	2927
+chr1	1076480	1076690	trf	271
+chr1	1076486	1076722	trf	88
+chr1	1076486	1076920	trf	135
+chr1	1076716	1076840	trf	164
+chr1	1076793	1076877	trf	82
+chr1	1076874	1076927	trf	81
+chr1	1077426	1077535	trf	218
+chr1	1078622	1078859	trf	285
+chr1	1080780	1080986	trf	140
+chr1	1082517	1082829	trf	570
+chr1	1084221	1084448	trf	429
+chr1	1084981	1085079	trf	88
+chr1	1087203	1087264	trf	104
+chr1	1087774	1088962	trf	1640
+chr1	1091730	1091876	trf	274
+chr1	1092670	1092733	trf	101
+chr1	1092725	1092808	trf	166
+chr1	1099577	1099622	trf	90
+chr1	1101888	1101940	trf	59
+chr1	1101888	1101940	trf	68
+chr1	1101897	1101928	trf	53
+chr1	1103389	1103513	trf	239
+chr1	1105847	1105954	trf	62
+chr1	1105847	1105950	trf	84
+chr1	1105862	1105935	trf	69
+chr1	1108106	1108225	trf	68
+chr1	1108106	1108213	trf	51
+chr1	1108112	1108150	trf	51
+chr1	1108127	1108214	trf	50
+chr1	1108151	1108233	trf	56
+chr1	1108151	1108213	trf	63
+chr1	1111095	1111214	trf	193
+chr1	1111111	1111165	trf	85
+chr1	1111111	1111378	trf	444
+chr1	1111169	1111287	trf	159
+chr1	1111169	1111295	trf	207
+chr1	1111219	1111451	trf	366
+chr1	1111302	1111370	trf	127
+chr1	1111302	1111779	trf	512
+chr1	1111387	1111584	trf	159
+chr1	1111516	1111750	trf	432
+chr1	1111599	1111667	trf	136
+chr1	1111682	1111775	trf	150
+chr1	1111883	1111929	trf	83
+chr1	1112366	1112489	trf	102
+chr1	1112368	1112489	trf	80
+chr1	1112421	1112507	trf	79
+chr1	1112424	1112491	trf	71
+chr1	1112441	1112517	trf	77
+chr1	1112510	1112577	trf	98
+chr1	1112510	1112595	trf	109
+chr1	1112628	1112677	trf	50
+chr1	1112628	1112685	trf	78
+chr1	1116246	1116362	trf	123
+chr1	1116337	1116452	trf	203
+chr1	1116389	1116420	trf	53
+chr1	1119906	1119946	trf	57
+chr1	1120035	1120360	trf	650
+chr1	1122785	1123298	trf	647
+chr1	1127741	1128246	trf	803
+chr1	1129595	1129648	trf	74
+chr1	1130766	1130791	trf	50
+chr1	1133236	1133267	trf	53
+chr1	1133453	1133556	trf	138
+chr1	1137158	1138210	trf	1893
+chr1	1139627	1139677	trf	82
+chr1	1146421	1146681	trf	376
+chr1	1149568	1149616	trf	62
+chr1	1149569	1149606	trf	51
+chr1	1154541	1154589	trf	51
+chr1	1157015	1157044	trf	51
+chr1	1158300	1158549	trf	281
+chr1	1158302	1158549	trf	272
+chr1	1158313	1158393	trf	63
+chr1	1158440	1158497	trf	78
+chr1	1158459	1158518	trf	68
+chr1	1158479	1158547	trf	68
+chr1	1158509	1158569	trf	75
+chr1	1161070	1161160	trf	153
+chr1	1161136	1161175	trf	51
+chr1	1161675	1161800	trf	223
+chr1	1162663	1162879	trf	387
+chr1	1164423	1164479	trf	60
+chr1	1164443	1164568	trf	173
+chr1	1164659	1164697	trf	76
+chr1	1164664	1164705	trf	64
+chr1	1180100	1180675	trf	194
+chr1	1180105	1180674	trf	413
+chr1	1180107	1180635	trf	251
+chr1	1180259	1180635	trf	120
+chr1	1180282	1180656	trf	332
+chr1	1180392	1180518	trf	113
+chr1	1182253	1182282	trf	51
+chr1	1183472	1185067	trf	2517
+chr1	1193812	1193854	trf	59
+chr1	1194367	1194651	trf	480
+chr1	1194368	1194517	trf	232
+chr1	1194369	1194514	trf	183
+chr1	1194369	1194675	trf	201
+chr1	1194446	1194581	trf	191
+chr1	1194481	1194537	trf	96
+chr1	1194506	1194622	trf	141
+chr1	1194683	1194774	trf	101
+chr1	1200934	1201010	trf	125
+chr1	1200944	1201029	trf	102
+chr1	1202260	1202285	trf	50
+chr1	1202904	1203030	trf	180
+chr1	1204479	1204792	trf	608
+chr1	1206181	1206271	trf	155
+chr1	1207354	1207384	trf	60
+chr1	1207988	1208097	trf	182
+chr1	1214445	1214547	trf	141
+chr1	1214462	1214617	trf	265
+chr1	1214509	1214580	trf	88
+chr1	1218004	1218109	trf	120
+chr1	1218007	1218117	trf	116
+chr1	1219479	1219566	trf	61
+chr1	1219480	1219588	trf	155
+chr1	1219483	1219606	trf	109
+chr1	1219484	1219606	trf	144
+chr1	1219529	1219604	trf	51
+chr1	1219542	1219591	trf	55
+chr1	1219595	1219694	trf	119
+chr1	1219672	1219707	trf	54
+chr1	1219672	1219723	trf	50
+chr1	1219884	1220063	trf	263
+chr1	1219884	1220063	trf	295
+chr1	1223579	1225633	trf	2934
+chr1	1223750	1223820	trf	56
+chr1	1229111	1229176	trf	130
+chr1	1231706	1231814	trf	198
+chr1	1232119	1232352	trf	263
+chr1	1232456	1233167	trf	1083
+chr1	1232456	1233187	trf	1346
+chr1	1233864	1233935	trf	106
+chr1	1234790	1234859	trf	138
+chr1	1238883	1238921	trf	53
+chr1	1238973	1239134	trf	259
+chr1	1243313	1243469	trf	231
+chr1	1243333	1243466	trf	74
+chr1	1243558	1243589	trf	62
+chr1	1246148	1246273	trf	250
+chr1	1246244	1246290	trf	74
+chr1	1249896	1249978	trf	130
+chr1	1250511	1250589	trf	129
+chr1	1251042	1251100	trf	62
+chr1	1251042	1251235	trf	71
+chr1	1251117	1251169	trf	77
+chr1	1251158	1251208	trf	55
+chr1	1252775	1252800	trf	50
+chr1	1258002	1258044	trf	59
+chr1	1258018	1258073	trf	62
+chr1	1258019	1258136	trf	137
+chr1	1258477	1258512	trf	54
+chr1	1259246	1259613	trf	293
+chr1	1259288	1259640	trf	336
+chr1	1260142	1260179	trf	56
+chr1	1264919	1264962	trf	50
+chr1	1265069	1265099	trf	51
+chr1	1265182	1265220	trf	58
+chr1	1265375	1265438	trf	72
+chr1	1265502	1265556	trf	72
+chr1	1273216	1273324	trf	171
+chr1	1273220	1273271	trf	50
+chr1	1275245	1275424	trf	222
+chr1	1275260	1275326	trf	64
+chr1	1275267	1275328	trf	67
+chr1	1275281	1275347	trf	55
+chr1	1276118	1276613	trf	154
+chr1	1276118	1276612	trf	274
+chr1	1276191	1276220	trf	58
+chr1	1276263	1276486	trf	219
+chr1	1276554	1276614	trf	70
+chr1	1276776	1276984	trf	228
+chr1	1278237	1278433	trf	347
+chr1	1280317	1280443	trf	198
+chr1	1285358	1286838	trf	2870
+chr1	1290766	1290818	trf	95
+chr1	1290766	1290812	trf	60
+chr1	1290766	1290834	trf	84
+chr1	1291286	1291395	trf	121
+chr1	1291317	1291440	trf	140
+chr1	1291672	1291789	trf	139
+chr1	1291688	1291899	trf	280
+chr1	1291791	1291903	trf	122
+chr1	1296283	1296348	trf	105
+chr1	1296355	1296406	trf	75
+chr1	1296502	1296542	trf	62
+chr1	1296543	1296592	trf	64
+chr1	1296561	1296617	trf	69
+chr1	1297901	1298474	trf	866
+chr1	1298280	1298678	trf	472
+chr1	1298813	1299164	trf	452
+chr1	1299410	1299702	trf	370
+chr1	1300851	1301224	trf	482
+chr1	1301373	1301440	trf	53
+chr1	1301597	1301644	trf	52
+chr1	1301599	1301645	trf	92
+chr1	1301715	1301768	trf	58
+chr1	1301715	1301768	trf	70
+chr1	1301723	1301780	trf	91
+chr1	1301800	1301827	trf	54
+chr1	1302087	1302117	trf	51
+chr1	1302214	1302317	trf	147
+chr1	1302237	1302962	trf	128
+chr1	1302247	1302355	trf	70
+chr1	1302307	1302598	trf	347
+chr1	1302378	1302552	trf	139
+chr1	1302380	1302636	trf	361
+chr1	1302578	1302612	trf	54
+chr1	1302604	1302698	trf	111
+chr1	1302768	1303061	trf	302
+chr1	1302844	1302907	trf	74
+chr1	1302863	1302911	trf	87
+chr1	1303029	1303063	trf	50
+chr1	1303558	1303591	trf	66
+chr1	1317610	1318281	trf	1077
+chr1	1317610	1318281	trf	1077
+chr1	1320746	1321020	trf	431
+chr1	1322516	1322558	trf	84
+chr1	1326979	1327034	trf	92
+chr1	1331951	1331977	trf	52
+chr1	1331957	1332310	trf	446
+chr1	1342954	1343001	trf	58
+chr1	1347226	1347544	trf	155
+chr1	1347234	1347579	trf	215
+chr1	1347251	1347544	trf	379
+chr1	1347271	1347576	trf	182
+chr1	1347293	1347510	trf	277
+chr1	1347495	1347593	trf	160
+chr1	1356049	1356168	trf	177
+chr1	1356062	1356153	trf	89
+chr1	1362713	1362907	trf	121
+chr1	1363337	1363594	trf	218
+chr1	1363338	1363584	trf	330
+chr1	1363338	1363589	trf	369
+chr1	1364227	1364740	trf	424
+chr1	1364378	1364704	trf	402
+chr1	1366406	1366438	trf	64
+chr1	1366430	1366550	trf	192
+chr1	1368390	1368456	trf	114
+chr1	1378218	1378319	trf	193
+chr1	1379053	1379107	trf	108
+chr1	1379726	1379823	trf	185
+chr1	1380549	1380674	trf	214
+chr1	1381412	1381670	trf	329
+chr1	1383880	1383915	trf	70
+chr1	1384513	1384765	trf	98
+chr1	1384514	1384775	trf	198
+chr1	1384517	1384757	trf	100
+chr1	1384517	1384765	trf	98
+chr1	1384540	1384776	trf	63
+chr1	1384613	1384798	trf	289
+chr1	1384713	1384765	trf	70
+chr1	1388177	1388219	trf	50
+chr1	1390596	1390623	trf	54
+chr1	1396969	1397166	trf	313
+chr1	1400969	1400994	trf	50
+chr1	1402019	1402053	trf	59
+chr1	1404479	1404516	trf	74
+chr1	1409555	1409592	trf	56
+chr1	1409556	1409592	trf	58
+chr1	1412924	1413011	trf	147
+chr1	1413057	1413105	trf	89
+chr1	1414752	1414828	trf	125
+chr1	1415232	1415303	trf	83
+chr1	1417220	1417451	trf	167
+chr1	1417307	1417451	trf	189
+chr1	1422926	1423030	trf	172
+chr1	1427911	1428172	trf	353
+chr1	1429788	1429941	trf	261
+chr1	1432534	1432597	trf	126
+chr1	1433277	1433534	trf	329
+chr1	1434966	1434991	trf	50
+chr1	1434972	1435568	trf	771
+chr1	1435982	1436040	trf	73
+chr1	1435984	1436027	trf	50
+chr1	1436803	1437059	trf	322
+chr1	1437233	1437278	trf	58
+chr1	1437600	1438182	trf	757
+chr1	1439334	1439361	trf	54
+chr1	1443549	1443652	trf	161
+chr1	1445861	1445898	trf	67
+chr1	1447259	1447297	trf	76
+chr1	1447859	1447900	trf	50
+chr1	1451663	1451743	trf	151
+chr1	1453382	1453419	trf	58
+chr1	1453730	1453769	trf	51
+chr1	1453957	1454004	trf	58
+chr1	1454092	1454259	trf	196
+chr1	1454148	1454241	trf	107
+chr1	1455280	1455442	trf	189
+chr1	1455303	1455454	trf	158
+chr1	1456678	1456709	trf	62
+chr1	1463744	1463824	trf	106
+chr1	1466208	1466235	trf	54
+chr1	1467157	1467188	trf	53
+chr1	1467438	1467474	trf	56
+chr1	1468157	1468364	trf	324
+chr1	1470421	1470471	trf	100
+chr1	1470524	1470562	trf	51
+chr1	1475221	1475440	trf	282
+chr1	1475226	1475580	trf	268
+chr1	1475226	1475580	trf	273
+chr1	1475226	1475580	trf	250
+chr1	1475308	1475361	trf	54
+chr1	1475870	1475907	trf	51
+chr1	1475872	1475919	trf	51
+chr1	1475985	1476019	trf	50
+chr1	1476022	1476062	trf	53
+chr1	1478430	1478455	trf	50
+chr1	1478967	1479211	trf	431
+chr1	1479084	1479198	trf	59
+chr1	1481888	1481988	trf	121
+chr1	1484901	1484931	trf	51
+chr1	1484947	1485207	trf	310
+chr1	1489521	1489787	trf	415
+chr1	1491398	1491709	trf	324
+chr1	1491623	1491843	trf	302
+chr1	1494586	1494680	trf	143
+chr1	1497825	1498003	trf	320
+chr1	1497825	1498032	trf	290
+chr1	1499766	1499791	trf	50
+chr1	1500485	1500544	trf	118
+chr1	1504571	1504622	trf	50
+chr1	1504572	1504620	trf	60
+chr1	1506213	1506486	trf	408
+chr1	1506470	1506829	trf	456
+chr1	1506624	1506662	trf	76
+chr1	1506858	1506888	trf	60
+chr1	1508397	1508652	trf	365
+chr1	1508809	1508836	trf	54
+chr1	1508809	1508861	trf	63
+chr1	1513789	1513975	trf	261
+chr1	1519478	1520228	trf	761
+chr1	1520670	1520701	trf	53
+chr1	1520698	1521016	trf	467
+chr1	1521329	1521358	trf	58
+chr1	1523831	1523856	trf	50
+chr1	1524540	1524583	trf	86
+chr1	1527628	1528557	trf	1047
+chr1	1527898	1527923	trf	50
+chr1	1528156	1528948	trf	947
+chr1	1528653	1528683	trf	53
+chr1	1529082	1529121	trf	53
+chr1	1529082	1529122	trf	62
+chr1	1529749	1529833	trf	114
+chr1	1529791	1529908	trf	126
+chr1	1530243	1530304	trf	77
+chr1	1530261	1531368	trf	650
+chr1	1530262	1531931	trf	524
+chr1	1530262	1531949	trf	574
+chr1	1530268	1531907	trf	299
+chr1	1530268	1531741	trf	478
+chr1	1530270	1531665	trf	406
+chr1	1530290	1532197	trf	779
+chr1	1530290	1531982	trf	521
+chr1	1530290	1532197	trf	908
+chr1	1530290	1531982	trf	650
+chr1	1530314	1531741	trf	473
+chr1	1530407	1532078	trf	257
+chr1	1531184	1531743	trf	212
+chr1	1531707	1532141	trf	259
+chr1	1531787	1532197	trf	142
+chr1	1531795	1532109	trf	271
+chr1	1531800	1532183	trf	119
+chr1	1531995	1532121	trf	130
+chr1	1532114	1532197	trf	69
+chr1	1535328	1535366	trf	53
+chr1	1539673	1539702	trf	58
+chr1	1540034	1540153	trf	98
+chr1	1540782	1542016	trf	1313
+chr1	1541871	1541920	trf	63
+chr1	1543409	1543506	trf	84
+chr1	1543409	1543491	trf	105
+chr1	1543412	1543505	trf	106
+chr1	1544291	1545218	trf	999
+chr1	1545201	1545231	trf	51
+chr1	1547902	1547954	trf	52
+chr1	1547908	1547954	trf	51
+chr1	1547928	1548697	trf	928
+chr1	1551268	1551294	trf	52
+chr1	1556883	1556933	trf	100
+chr1	1557168	1557196	trf	56
+chr1	1558754	1558840	trf	154
+chr1	1562818	1562984	trf	288
+chr1	1562940	1563022	trf	110
+chr1	1563202	1563335	trf	214
+chr1	1565226	1565251	trf	50
+chr1	1565369	1565439	trf	58
+chr1	1577062	1577101	trf	60
+chr1	1577063	1577161	trf	92
+chr1	1579428	1579502	trf	121
+chr1	1585271	1585316	trf	90
+chr1	1589609	1589640	trf	53
+chr1	1589609	1589646	trf	58
+chr1	1590379	1590411	trf	55
+chr1	1596506	1596554	trf	71
+chr1	1598047	1598316	trf	252
+chr1	1598073	1598309	trf	305
+chr1	1604847	1605406	trf	716
+chr1	1605400	1605429	trf	51
+chr1	1605400	1605433	trf	50
+chr1	1605400	1605432	trf	64
+chr1	1606063	1606095	trf	64
+chr1	1610422	1610457	trf	52
+chr1	1610995	1611578	trf	737
+chr1	1611740	1611772	trf	55
+chr1	1613427	1613479	trf	104
+chr1	1614518	1614553	trf	61
+chr1	1615180	1615225	trf	72
+chr1	1616228	1616253	trf	50
+chr1	1617745	1617778	trf	59
+chr1	1618844	1618897	trf	97
+chr1	1621155	1621733	trf	655
+chr1	1623572	1623610	trf	55
+chr1	1623800	1623876	trf	68
+chr1	1623800	1623863	trf	101
+chr1	1623804	1623851	trf	67
+chr1	1623804	1623876	trf	69
+chr1	1624412	1624601	trf	188
+chr1	1624630	1624664	trf	59
+chr1	1626128	1626163	trf	70
+chr1	1626708	1627282	trf	728
+chr1	1628298	1628462	trf	258
+chr1	1631037	1631077	trf	71
+chr1	1640272	1640311	trf	60
+chr1	1640273	1640371	trf	92
+chr1	1642643	1642717	trf	121
+chr1	1648253	1648291	trf	76
+chr1	1649011	1650025	trf	1681
+chr1	1649025	1650025	trf	1051
+chr1	1649025	1650073	trf	1075
+chr1	1650374	1650511	trf	228
+chr1	1650410	1650604	trf	327
+chr1	1650517	1650656	trf	158
+chr1	1651534	1652331	trf	788
+chr1	1652685	1652952	trf	364
+chr1	1652687	1652975	trf	330
+chr1	1654927	1654962	trf	70
+chr1	1657828	1658488	trf	896
+chr1	1662429	1662576	trf	188
+chr1	1667376	1668255	trf	883
+chr1	1668240	1668285	trf	54
+chr1	1668919	1668951	trf	55
+chr1	1674425	1674996	trf	653
+chr1	1676847	1676885	trf	55
+chr1	1677075	1677138	trf	65
+chr1	1677075	1677151	trf	68
+chr1	1677079	1677126	trf	58
+chr1	1678939	1679513	trf	719
+chr1	1680020	1680104	trf	116
+chr1	1684347	1684375	trf	56
+chr1	1690703	1690818	trf	221
+chr1	1692120	1692169	trf	98
+chr1	1694198	1694233	trf	70
+chr1	1694656	1694974	trf	321
+chr1	1697849	1697889	trf	80
+chr1	1699811	1699848	trf	56
+chr1	1699811	1699848	trf	65
+chr1	1699813	1699848	trf	54
+chr1	1701408	1701454	trf	92
+chr1	1702528	1702568	trf	64
+chr1	1705115	1705169	trf	108
+chr1	1705940	1706116	trf	262
+chr1	1711106	1711131	trf	50
+chr1	1726620	1726658	trf	58
+chr1	1726620	1726665	trf	54
+chr1	1735153	1735745	trf	677
+chr1	1736315	1736878	trf	731
+chr1	1738902	1738932	trf	60
+chr1	1740063	1740101	trf	55
+chr1	1740065	1740096	trf	62
+chr1	1743832	1743868	trf	54
+chr1	1746236	1746267	trf	53
+chr1	1754681	1754706	trf	50
+chr1	1758299	1758360	trf	88
+chr1	1760313	1760352	trf	60
+chr1	1767526	1767571	trf	63
+chr1	1768694	1769300	trf	756
+chr1	1775252	1775532	trf	320
+chr1	1775633	1775681	trf	55
+chr1	1775634	1775680	trf	60
+chr1	1777017	1777054	trf	51
+chr1	1777263	1777311	trf	96
+chr1	1779796	1779838	trf	50
+chr1	1779796	1779842	trf	67
+chr1	1782427	1782710	trf	386
+chr1	1786200	1786444	trf	352
+chr1	1786470	1786774	trf	407
+chr1	1786760	1786798	trf	51
+chr1	1796430	1797029	trf	957
+chr1	1796700	1796739	trf	69
+chr1	1800624	1800650	trf	52
+chr1	1803968	1804045	trf	127
+chr1	1806044	1806071	trf	54
+chr1	1822049	1822099	trf	50
+chr1	1826194	1826271	trf	129
+chr1	1828155	1828487	trf	452
+chr1	1829604	1829693	trf	79
+chr1	1829656	1829713	trf	80
+chr1	1829745	1829936	trf	109
diff --git a/test/shuffle/test-shuffle.sh b/test/shuffle/test-shuffle.sh
new file mode 100644
index 0000000000000000000000000000000000000000..606d60ce02febface901cb5c6303d1d6a8e99a38
--- /dev/null
+++ b/test/shuffle/test-shuffle.sh
@@ -0,0 +1,127 @@
+BT=${BT-../../bin/bedtools}
+check()
+{
+	if diff $1 $2; then
+    	echo ok
+		return 1
+	else
+    	echo fail
+		return 0
+	fi
+}
+
+
+###########################################################
+# test basic shuffle
+###########################################################
+echo "    shuffle.t1...\c"
+echo \
+"chr9	108600879	108601347	trf	789
+chr12	9186177	9186350	trf	346
+chr8	89726287	89726527	trf	434
+chr8	40323278	40323500	trf	273
+chr8	69904335	69904512	trf	187
+chr5	138240459	138240624	trf	199
+chr11	96382483	96382621	trf	242
+chr8	105834146	105834181	trf	70
+chrX	105921488	105921585	trf	79
+chrX	125331456	125331497	trf	73" > exp
+$BT shuffle -seed 42 -i simrep.bed  \
+            -g ../../genomes/human.hg19.genome | head > obs
+check obs exp
+rm obs exp
+
+
+###########################################################
+# test basic shuffle with -incl (choose intervals randomly)
+###########################################################
+echo "    shuffle.t2...\c"
+echo \
+"chr3	542223	542691	trf	789
+chr5	444343	444516	trf	346
+chr1	2520601	2520841	trf	434
+chr5	194760	194982	trf	273
+chr1	2121545	2121722	trf	187
+chr1	2246343	2246508	trf	199
+chr1	2724117	2724255	trf	242
+chr4	304892	304927	trf	70
+chr2	332618	332715	trf	79
+chr5	822410	822451	trf	73
+chr1	1450982	1451014	trf	64
+chr1	3218361	3218466	trf	149
+chr4	338952	338990	trf	58
+chr3	713207	713677	trf	278
+chr1	4378307	4378777	trf	339
+chr1	4451988	4452416	trf	202
+chr1	1545567	1545610	trf	59
+chr1	573175	573215	trf	62
+chr4	931201	931236	trf	52
+chr1	4215777	4215954	trf	302" > exp
+$BT shuffle -incl incl.bed -seed 42 -i simrep.bed  \
+            -g ../../genomes/human.hg19.genome | head -20 > obs
+check obs exp
+rm obs exp
+
+##############################################################
+# test basic shuffle with -incl (choose chroms randomly first)
+##############################################################
+echo "    shuffle.t3...\c"
+echo \
+"chr5	310009	310477	trf	789
+chr4	520601	520774	trf	346
+chr2	130650	130890	trf	434
+chr1	3246343	3246565	trf	273
+chr2	968160	968337	trf	187
+chr3	332618	332783	trf	199
+chr4	638727	638865	trf	242
+chr3	218361	218396	trf	70
+chr1	2259217	2259314	trf	79
+chr3	378307	378348	trf	73
+chr4	447387	447419	trf	64
+chr3	573175	573280	trf	149
+chr2	106791	106829	trf	58
+chr3	618697	619167	trf	278
+chr2	211901	212371	trf	339
+chr5	656883	657311	trf	202
+chr2	993338	993381	trf	59
+chr2	713531	713571	trf	62
+chr2	428268	428303	trf	52
+chr4	590632	590809	trf	302" > exp
+$BT shuffle -incl incl.bed -chromFirst -seed 42 -i simrep.bed  \
+            -g ../../genomes/human.hg19.genome | head -20 > obs
+check obs exp
+rm obs exp
+
+
+##############################################################
+# test basic shuffle with -excl
+##############################################################
+echo "    shuffle.t4...\c"
+echo -n "" > exp
+$BT shuffle -seed 42 -i simrep.bed  \
+            -g ../../genomes/human.hg19.genome \
+            -excl excl.bed \
+| $BT intersect -a - -b excl.bed > obs
+check obs exp
+rm obs exp
+
+##############################################################
+# test basic shuffle with 
+##############################################################
+echo "    shuffle.t5...\c"
+echo \
+"chr1	150415830	150415862	trf	64
+chr1	150415830	150415862	trf	64
+chr5	78078743	78079213	trf	339
+chr4	84711820	84712248	trf	202
+chr4	61777751	61777794	trf	59
+chr3	28583223	28583400	trf	302
+chr1	55933709	55934092	trf	712
+chr1	55933709	55934092	trf	712
+chr1	39686691	39686725	trf	68
+chr2	2555287	2555330	trf	86" > exp
+$BT shuffle -seed 42 -i simrep.bed  \
+            -g ../../genomes/human.hg19.genome \
+| $BT intersect -a - -b excl.bed | head > obs
+check obs exp
+rm obs exp
\ No newline at end of file
diff --git a/test/test.sh b/test/test.sh
index a8eceba9ee8051d82e4c56baf2c0615693c181a8..76ec3f1eaab175eaa543e7af68a388797676d164 100644
--- a/test/test.sh
+++ b/test/test.sh
@@ -49,6 +49,9 @@ cd reldist; bash test-reldist.sh; cd ..
 echo " Testing bedtools slop:"
 cd slop; bash test-slop.sh; cd ..
 
+echo " Testing bedtools shuffle:"
+cd shuffle; bash test-shuffle.sh; cd ..
+
 echo " Testing bedtools subtract:"
 cd subtract; bash test-subtract.sh; cd ..