diff --git a/src/bedToBam/Makefile b/src/bedToBam/Makefile
index 2d02b52c44fada715cb75aeb40ad1caac98f03bc..d94d2e87d6b8af713fffedc5e2e0a2d9f503a7b8 100644
--- a/src/bedToBam/Makefile
+++ b/src/bedToBam/Makefile
@@ -5,14 +5,21 @@ BIN_DIR = ../../bin/
 # -------------------
 # define our includes
 # -------------------
-INCLUDES = -I$(UTILITIES_DIR)/bedFile/ -I$(UTILITIES_DIR)/genomeFile/ -I$(UTILITIES_DIR)/lineFileUtilities/  -I$(UTILITIES_DIR)/BamTools/  -I$(UTILITIES_DIR)/version/ -I$(UTILITIES_DIR)/gzstream/ -I$(UTILITIES_DIR)/fileType/
+INCLUDES = -I$(UTILITIES_DIR)/bedFile/ \
+           -I$(UTILITIES_DIR)/version/ \
+           -I$(UTILITIES_DIR)/gzstream/ \
+           -I$(UTILITIES_DIR)/genomeFile/ \
+           -I$(UTILITIES_DIR)/lineFileUtilities/ \
+           -I$(UTILITIES_DIR)/fileType/ \
+           -I$(UTILITIES_DIR)/BamTools/include \
+		   -I$(UTILITIES_DIR)/BamTools-Ancillary
 
 # ----------------------------------
 # define our source and object files
 # ----------------------------------
 SOURCES= bedToBam.cpp
 OBJECTS= $(SOURCES:.cpp=.o)
-_EXT_OBJECTS=BamWriter.o BGZF.o bedFile.o genomeFile.o lineFileUtilities.o gzstream.o fileType.o
+_EXT_OBJECTS=bedFile.o genomeFile.o lineFileUtilities.o gzstream.o fileType.o
 EXT_OBJECTS=$(patsubst %,$(OBJ_DIR)/%,$(_EXT_OBJECTS))
 BUILT_OBJECTS= $(patsubst %,$(OBJ_DIR)/%,$(OBJECTS))
 PROGRAM= bedToBam
@@ -25,7 +32,7 @@ all: $(PROGRAM)
 
 $(PROGRAM): $(BUILT_OBJECTS) $(EXT_OBJECTS)
 	@echo "  * linking $(PROGRAM)"
-	@$(CXX) $(LDFLAGS) $(CXXFLAGS) -o $(BIN_DIR)/$@ $^ $(LIBS)
+	@$(CXX) $(LDFLAGS) $(CXXFLAGS) -o $(BIN_DIR)/$@ $^ $(LIBS) -L$(UTILITIES_DIR)/BamTools/lib/ -lbamtools
 
 $(BUILT_OBJECTS): $(SOURCES)
 	@echo "  * compiling" $(*F).cpp
diff --git a/src/genomeCoverageBed/Makefile b/src/genomeCoverageBed/Makefile
index 6241d60b892312c8789e8c1b83aef2f537939cae..9b8b4788e71f7bde2fb618437d4866d53bba115f 100644
--- a/src/genomeCoverageBed/Makefile
+++ b/src/genomeCoverageBed/Makefile
@@ -5,14 +5,20 @@ BIN_DIR = ../../bin/
 # -------------------
 # define our includes
 # -------------------
-INCLUDES = -I$(UTILITIES_DIR)/bedFile/ -I$(UTILITIES_DIR)/genomeFile/ -I$(UTILITIES_DIR)/lineFileUtilities/ -I$(UTILITIES_DIR)/version/ -I$(UTILITIES_DIR)/BamTools/ -I$(UTILITIES_DIR)/gzstream/ -I$(UTILITIES_DIR)/fileType/
-
+INCLUDES = -I$(UTILITIES_DIR)/bedFile/ \
+           -I$(UTILITIES_DIR)/version/ \
+           -I$(UTILITIES_DIR)/gzstream/ \
+           -I$(UTILITIES_DIR)/genomeFile/ \
+           -I$(UTILITIES_DIR)/lineFileUtilities/ \
+           -I$(UTILITIES_DIR)/fileType/ \
+           -I$(UTILITIES_DIR)/BamTools/include \
+		   -I$(UTILITIES_DIR)/BamTools-Ancillary
 # ----------------------------------
 # define our source and object files
 # ----------------------------------
 SOURCES= genomeCoverageMain.cpp genomeCoverageBed.cpp
 OBJECTS= $(SOURCES:.cpp=.o)
-_EXT_OBJECTS=bedFile.o genomeFile.o lineFileUtilities.o BamReader.o BamAncillary.o BGZF.o  BamIndex.o gzstream.o fileType.o
+_EXT_OBJECTS=bedFile.o genomeFile.o lineFileUtilities.o BamAncillary.o gzstream.o fileType.o
 EXT_OBJECTS=$(patsubst %,$(OBJ_DIR)/%,$(_EXT_OBJECTS))
 BUILT_OBJECTS= $(patsubst %,$(OBJ_DIR)/%,$(OBJECTS))
 PROGRAM= genomeCoverageBed
@@ -24,7 +30,7 @@ all: $(PROGRAM)
 
 $(PROGRAM): $(BUILT_OBJECTS) $(EXT_OBJECTS)
 	@echo "  * linking $(PROGRAM)"
-	@$(CXX) $(LDFLAGS) $(CXXFLAGS) -o $(BIN_DIR)/$@ $^ $(LIBS)
+	@$(CXX) $(LDFLAGS) $(CXXFLAGS) -o $(BIN_DIR)/$@ $^ $(LIBS) -L$(UTILITIES_DIR)/BamTools/lib/ -lbamtools
 
 $(BUILT_OBJECTS): $(SOURCES)
 	@echo "  * compiling" $(*F).cpp
@@ -33,8 +39,9 @@ $(BUILT_OBJECTS): $(SOURCES)
 $(EXT_OBJECTS):
 	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/lineFileUtilities/
 	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/bedFile/
-	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/genomeFile/	
-	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/BamTools/		
+	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/genomeFile
+	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/BamTools/
+	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/BamTools-Ancillary/
 	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/gzstream/
 	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/fileType/	
 		
diff --git a/src/genomeCoverageBed/genomeCoverageBed.h b/src/genomeCoverageBed/genomeCoverageBed.h
index 8275d92856cb287871d7e65521d1016477d3ef5a..e7b5dd0a5dd44d8173e1914c3535cf34f02f8a29 100644
--- a/src/genomeCoverageBed/genomeCoverageBed.h
+++ b/src/genomeCoverageBed/genomeCoverageBed.h
@@ -12,9 +12,9 @@ Licenced under the GNU General Public License 2.0 license.
 #include "bedFile.h"
 #include "genomeFile.h"
 
-#include "BamReader.h"
 #include "BamAncillary.h"
-#include "BamAux.h"
+#include "api/BamReader.h"
+#include "api/BamAux.h"
 using namespace BamTools;
 
 #include <vector>
diff --git a/src/intersectBed/Makefile b/src/intersectBed/Makefile
index 6541e89d6f7b00abce0c0cbcff99eebf13859a40..41b4e25eeac3670c530d7bdaf28c96206d931385 100644
--- a/src/intersectBed/Makefile
+++ b/src/intersectBed/Makefile
@@ -5,14 +5,20 @@ BIN_DIR = ../../bin/
 # -------------------
 # define our includes
 # -------------------
-INCLUDES = -I$(UTILITIES_DIR)/bedFile/ -I$(UTILITIES_DIR)/lineFileUtilities/ -I$(UTILITIES_DIR)/version/ -I$(UTILITIES_DIR)/BamTools/ -I$(UTILITIES_DIR)/gzstream/ -I$(UTILITIES_DIR)/fileType/
-
+INCLUDES = -I$(UTILITIES_DIR)/bedFile/ \
+           -I$(UTILITIES_DIR)/version/ \
+           -I$(UTILITIES_DIR)/gzstream/ \
+           -I$(UTILITIES_DIR)/genomeFile/ \
+           -I$(UTILITIES_DIR)/lineFileUtilities/ \
+           -I$(UTILITIES_DIR)/fileType/ \
+           -I$(UTILITIES_DIR)/BamTools/include \
+           -I$(UTILITIES_DIR)/BamTools-Ancillary
 # ----------------------------------
 # define our source and object files
 # ----------------------------------
 SOURCES= intersectMain.cpp intersectBed.cpp
 OBJECTS= $(SOURCES:.cpp=.o)
-_EXT_OBJECTS=bedFile.o lineFileUtilities.o BamReader.o BamAncillary.o BamWriter.o BGZF.o  BamIndex.o gzstream.o fileType.o
+_EXT_OBJECTS=bedFile.o lineFileUtilities.o BamAncillary.o gzstream.o fileType.o
 EXT_OBJECTS=$(patsubst %,$(OBJ_DIR)/%,$(_EXT_OBJECTS))
 BUILT_OBJECTS= $(patsubst %,$(OBJ_DIR)/%,$(OBJECTS))
 PROGRAM= intersectBed
@@ -23,7 +29,7 @@ all: $(PROGRAM)
 
 $(PROGRAM): $(BUILT_OBJECTS) $(EXT_OBJECTS)
 	@echo "  * linking $(PROGRAM)"
-	@$(CXX) $(LDFLAGS) $(CXXFLAGS) -o $(BIN_DIR)/$@ $^ $(LIBS)
+	@$(CXX) $(LDFLAGS) $(CXXFLAGS) -o $(BIN_DIR)/$@ $^ $(LIBS)  -L$(UTILITIES_DIR)/BamTools/lib/ -lbamtools
 
 $(BUILT_OBJECTS): $(SOURCES)
 	@echo "  * compiling" $(*F).cpp
@@ -33,6 +39,7 @@ $(EXT_OBJECTS):
 	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/bedFile/
 	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/lineFileUtilities/
 	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/BamTools/
+	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/BamTools-Ancillary/
 	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/gzstream/
 	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/fileType/
 		
diff --git a/src/intersectBed/intersectBed.cpp b/src/intersectBed/intersectBed.cpp
index 53222ebc1a04c349c1ae48de6c2736c6c4cfd47e..7a2ebbb37725789daa7b5f87ad7f7354b49fff4a 100644
--- a/src/intersectBed/intersectBed.cpp
+++ b/src/intersectBed/intersectBed.cpp
@@ -240,13 +240,17 @@ void BedIntersect::IntersectBam(string bamFile) {
     reader.Open(bamFile);
 
     // get header & reference information
-    string header  = reader.GetHeaderText();
-    RefVector refs = reader.GetReferenceData();
+    string bamHeader  = reader.GetHeaderText();
+    RefVector refs    = reader.GetReferenceData();
 
     // open a BAM output to stdout if we are writing BAM
     if (_bamOutput == true) {
         // open our BAM writer
-        writer.Open("stdout", header, refs, _isUncompressedBam);
+        writer.Open("stdout", bamHeader, refs);
+        // set compression mode
+        BamWriter::CompressionMode compressionMode = BamWriter::Compressed;
+        if ( _isUncompressedBam ) compressionMode = BamWriter::Uncompressed;
+    	writer.SetCompressionMode(compressionMode);
     }
 
     vector<BED> hits;
diff --git a/src/intersectBed/intersectBed.h b/src/intersectBed/intersectBed.h
index a24cf56836a21f47411c9aa62f7c8c56ba26ca22..095e4818c6d1c7840c92c5b922cad52d34de12fd 100644
--- a/src/intersectBed/intersectBed.h
+++ b/src/intersectBed/intersectBed.h
@@ -13,10 +13,11 @@
 #define INTERSECTBED_H
 
 #include "bedFile.h"
-#include "BamReader.h"
-#include "BamWriter.h"
+
+#include "api/BamReader.h"
+#include "api/BamWriter.h"
+#include "api/BamAux.h"
 #include "BamAncillary.h"
-#include "BamAux.h"
 using namespace BamTools;
 
 
diff --git a/src/pairToBed/Makefile b/src/pairToBed/Makefile
index 3fb5d136b25e0bed274d4971c4c04bbf369fae2d..e173500dc86e50a5c5badb31e51c5032307939a8 100644
--- a/src/pairToBed/Makefile
+++ b/src/pairToBed/Makefile
@@ -5,14 +5,21 @@ BIN_DIR = ../../bin/
 # -------------------
 # define our includes
 # -------------------
-INCLUDES = -I$(UTILITIES_DIR)/bedFilePE/ -I$(UTILITIES_DIR)/bedFile/ -I$(UTILITIES_DIR)/lineFileUtilities/ -I$(UTILITIES_DIR)/version/ -I$(UTILITIES_DIR)/BamTools/ -I$(UTILITIES_DIR)/gzstream/ -I$(UTILITIES_DIR)/fileType/
+INCLUDES = -I$(UTILITIES_DIR)/bedFilePE/ \
+            -I$(UTILITIES_DIR)/bedFile/ \
+            -I$(UTILITIES_DIR)/lineFileUtilities/ \
+            -I$(UTILITIES_DIR)/version/ \
+            -I$(UTILITIES_DIR)/gzstream/ \
+            -I$(UTILITIES_DIR)/fileType/ \
+            -I$(UTILITIES_DIR)/BamTools/include \
+            -I$(UTILITIES_DIR)/BamTools-Ancillary
 
 # ----------------------------------
 # define our source and object files
 # ----------------------------------
 SOURCES= pairToBedMain.cpp pairToBed.cpp
 OBJECTS= $(SOURCES:.cpp=.o)
-_EXT_OBJECTS=bedFilePE.o bedFile.o lineFileUtilities.o BamReader.o BamWriter.o BGZF.o  BamIndex.o gzstream.o fileType.o
+_EXT_OBJECTS=bedFilePE.o bedFile.o lineFileUtilities.o gzstream.o fileType.o
 EXT_OBJECTS=$(patsubst %,$(OBJ_DIR)/%,$(_EXT_OBJECTS))
 BUILT_OBJECTS= $(patsubst %,$(OBJ_DIR)/%,$(OBJECTS))
 PROGRAM= pairToBed
@@ -23,7 +30,7 @@ all: $(PROGRAM)
 
 $(PROGRAM): $(BUILT_OBJECTS) $(EXT_OBJECTS)
 	@echo "  * linking $(PROGRAM)"
-	@$(CXX) $(LDFLAGS) $(CXXFLAGS) -o $(BIN_DIR)/$@ $^ $(LIBS)
+	@$(CXX) $(LDFLAGS) $(CXXFLAGS) -o $(BIN_DIR)/$@ $^ $(LIBS)  -L$(UTILITIES_DIR)/BamTools/lib/ -lbamtools
 
 $(BUILT_OBJECTS): $(SOURCES)
 	@echo "  * compiling" $(*F).cpp
@@ -33,7 +40,8 @@ $(EXT_OBJECTS):
 	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/bedFile/
 	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/bedFilePE/
 	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/lineFileUtilities/
-	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/BamTools/	
+	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/BamTools/
+	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/BamTools-Ancillary/
 	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/gzstream/
 	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/fileType/	
 			
diff --git a/src/pairToBed/pairToBed.cpp b/src/pairToBed/pairToBed.cpp
index 16227a85f5ef645424c1dea550c3a215d5444b75..7c7343df11f250393c2908725f0e8dd5163c53e8 100644
--- a/src/pairToBed/pairToBed.cpp
+++ b/src/pairToBed/pairToBed.cpp
@@ -381,13 +381,17 @@ void BedIntersectPE::IntersectBamPE(string bamFile) {
     reader.Open(bamFile);
 
     // get header & reference information
-    string header = reader.GetHeaderText();
-    RefVector refs = reader.GetReferenceData();
+    string bamHeader = reader.GetHeaderText();
+    RefVector refs   = reader.GetReferenceData();
 
     // open a BAM output to stdout if we are writing BAM
     if (_bamOutput == true) {
         // open our BAM writer
-        writer.Open("stdout", header, refs, _isUncompressedBam);
+        writer.Open("stdout", bamHeader, refs);
+        // set compression mode
+        BamWriter::CompressionMode compressionMode = BamWriter::Compressed;
+        if ( _isUncompressedBam ) compressionMode = BamWriter::Uncompressed;
+        writer.SetCompressionMode(compressionMode);
     }
 
     // track the previous and current sequence
diff --git a/src/pairToBed/pairToBed.h b/src/pairToBed/pairToBed.h
index d168a236980b1df57f6ad9825a665438a31a5091..d307a62ff0a6ae288f99fbaf954e252471fe1c17 100644
--- a/src/pairToBed/pairToBed.h
+++ b/src/pairToBed/pairToBed.h
@@ -12,9 +12,9 @@
 #ifndef INTERSECTBED_H
 #define INTERSECTBED_H
 
-#include "BamReader.h"
-#include "BamWriter.h"
-#include "BamAux.h"
+#include "api/BamReader.h"
+#include "api/BamWriter.h"
+#include "api/BamAux.h"
 using namespace BamTools;
 
 #include "bedFile.h"
diff --git a/src/windowBed/Makefile b/src/windowBed/Makefile
index 9d5878d4ae130b6cb963e79c739507c0f7209de4..f988c40d09580e6ee8f6c1e7e51c9555f236c4e0 100644
--- a/src/windowBed/Makefile
+++ b/src/windowBed/Makefile
@@ -5,14 +5,20 @@ BIN_DIR = ../../bin/
 # -------------------
 # define our includes
 # -------------------
-INCLUDES = -I$(UTILITIES_DIR)/bedFile/ -I$(UTILITIES_DIR)/lineFileUtilities/ -I$(UTILITIES_DIR)/version/ -I$(UTILITIES_DIR)/BamTools/ -I$(UTILITIES_DIR)/gzstream/ -I$(UTILITIES_DIR)/fileType/
-
+INCLUDES = -I$(UTILITIES_DIR)/bedFile/ \
+           -I$(UTILITIES_DIR)/version/ \
+           -I$(UTILITIES_DIR)/gzstream/ \
+           -I$(UTILITIES_DIR)/genomeFile/ \
+           -I$(UTILITIES_DIR)/lineFileUtilities/ \
+           -I$(UTILITIES_DIR)/fileType/ \
+           -I$(UTILITIES_DIR)/BamTools/include \
+           -I$(UTILITIES_DIR)/BamTools-Ancillary
 # ----------------------------------
 # define our source and object files
 # ----------------------------------
 SOURCES= windowMain.cpp windowBed.cpp
 OBJECTS= $(SOURCES:.cpp=.o)
-_EXT_OBJECTS=bedFile.o lineFileUtilities.o BamReader.o BamWriter.o BGZF.o  BamIndex.o gzstream.o fileType.o
+_EXT_OBJECTS=bedFile.o lineFileUtilities.o gzstream.o fileType.o
 EXT_OBJECTS=$(patsubst %,$(OBJ_DIR)/%,$(_EXT_OBJECTS))
 BUILT_OBJECTS= $(patsubst %,$(OBJ_DIR)/%,$(OBJECTS))
 PROGRAM= windowBed
@@ -24,7 +30,7 @@ all: $(PROGRAM)
 
 $(PROGRAM): $(BUILT_OBJECTS) $(EXT_OBJECTS)
 	@echo "  * linking $(PROGRAM)"
-	@$(CXX) $(LDFLAGS) $(CXXFLAGS) -o $(BIN_DIR)/$@ $^ $(LIBS)
+	@$(CXX) $(LDFLAGS) $(CXXFLAGS) -o $(BIN_DIR)/$@ $^ $(LIBS)   -L$(UTILITIES_DIR)/BamTools/lib/ -lbamtools
 
 $(BUILT_OBJECTS): $(SOURCES)
 	@echo "  * compiling" $(*F).cpp
@@ -33,9 +39,10 @@ $(BUILT_OBJECTS): $(SOURCES)
 $(EXT_OBJECTS):
 	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/bedFile/
 	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/lineFileUtilities/
-	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/BamTools/	
+	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/BamTools/
+	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/BamTools-Ancillary/
 	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/gzstream/
-	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/fileType/	
+	@$(MAKE) --no-print-directory -C $(UTILITIES_DIR)/fileType/
 		
 clean:
 	@echo "Cleaning up."
diff --git a/src/windowBed/windowBed.cpp b/src/windowBed/windowBed.cpp
index b961f02c2049076a0da11b6faa744c583206a38a..b8e1a1ead07d50fd3c7e7f23a6e1cb7fd6561032 100644
--- a/src/windowBed/windowBed.cpp
+++ b/src/windowBed/windowBed.cpp
@@ -155,13 +155,17 @@ void BedWindow::WindowIntersectBam(string bamFile) {
     reader.Open(bamFile);
 
     // get header & reference information
-    string header  = reader.GetHeaderText();
-    RefVector refs = reader.GetReferenceData();
+    string bamHeader  = reader.GetHeaderText();
+    RefVector refs    = reader.GetReferenceData();
 
     // open a BAM output to stdout if we are writing BAM
     if (_bamOutput == true) {
         // open our BAM writer
-        writer.Open("stdout", header, refs, _isUncompressedBam);
+        writer.Open("stdout", bamHeader, refs);
+        // set compression mode
+        BamWriter::CompressionMode compressionMode = BamWriter::Compressed;
+        if ( _isUncompressedBam ) compressionMode = BamWriter::Uncompressed;
+        writer.SetCompressionMode(compressionMode);
     }
 
     vector<BED> hits;                   // vector of potential hits
diff --git a/src/windowBed/windowBed.h b/src/windowBed/windowBed.h
index d2af1849698c99bf1f109a5cf33a97a69982e2f6..2256468e2cec2de847342bd7b6cf1c76ec5bdd0a 100644
--- a/src/windowBed/windowBed.h
+++ b/src/windowBed/windowBed.h
@@ -12,9 +12,9 @@
 #ifndef WINDOWBED_H
 #define WINDOWBED_H
 
-#include "BamReader.h"
-#include "BamWriter.h"
-#include "BamAux.h"
+#include "api/BamReader.h"
+#include "api/BamWriter.h"
+#include "api/BamAux.h"
 using namespace BamTools;
 
 #include "bedFile.h"