diff --git a/Makefile b/Makefile
index a340d6a8e671602c9df540df58e504d70753c38b..0f78c5ec3653a628f505940b828851949038a927 100644
--- a/Makefile
+++ b/Makefile
@@ -21,10 +21,8 @@ SUBDIRS = $(SRC_DIR)/annotateBed \
 		  $(SRC_DIR)/closestBed \
 		  $(SRC_DIR)/complementBed \
 		  $(SRC_DIR)/coverageBed \
-		  $(SRC_DIR)/cuffToTrans \
 		  $(SRC_DIR)/fastaFromBed \
 		  $(SRC_DIR)/flankBed \
-		  $(SRC_DIR)/fjoin \
 		  $(SRC_DIR)/genomeCoverageBed \
 		  $(SRC_DIR)/intersectBed \
 		  $(SRC_DIR)/linksBed \
diff --git a/src/pairToPair/pairToPair.cpp b/src/pairToPair/pairToPair.cpp
index 00daa46cb03577c8af3a88c1a6652cb2913b408d..8cc90e772d47fdf0c2bc5618023ea1ac8c1f520d 100644
--- a/src/pairToPair/pairToPair.cpp
+++ b/src/pairToPair/pairToPair.cpp
@@ -124,7 +124,7 @@ void PairToPair::FindOverlaps(const BEDPE &a) {
         if ((hitsA2B1.size() > 0) || (hitsA1B2.size() > 0))
             found2 = FindHitsOnBothEnds(a, hitsA2B1, hitsA1B2);
 
-        if (!found1 && !found2)
+        if (!found1 || !found2)
             _bedA->reportBedPENewLine(a);
     }
     else if (_searchType == "either") {
diff --git a/src/pairToPair/pairToPair.h b/src/pairToPair/pairToPair.h
index d69c57242a2eb5d0aa8fb356ea36d0262cf8137a..77d739c2ca950b5e02c27f1173a4cd3f550b92e0 100644
--- a/src/pairToPair/pairToPair.h
+++ b/src/pairToPair/pairToPair.h
@@ -65,7 +65,7 @@ private:
     void FindQualityHitsBetweenEnds(CHRPOS start, CHRPOS end,
         const vector<MATE> &hits, vector<MATE> &qualityHits, int &numOverlaps);
 
-    void FindHitsOnBothEnds(const BEDPE &a, const vector<MATE> &qualityHitsEnd1,
+    bool FindHitsOnBothEnds(const BEDPE &a, const vector<MATE> &qualityHitsEnd1,
         const vector<MATE> &qualityHitsEnd2);
 
     void FindHitsOnEitherEnd(const BEDPE &a, const vector<MATE> &qualityHitsEnd1,
diff --git a/src/pairToPair/pairToPairMain.cpp b/src/pairToPair/pairToPairMain.cpp
index 97115f68f7b87f6b19a655e781bc8c8dae720395..7f5761d01f25d40438d0f9a2a3fdd54d737ab245 100644
--- a/src/pairToPair/pairToPairMain.cpp
+++ b/src/pairToPair/pairToPairMain.cpp
@@ -122,8 +122,8 @@ int main(int argc, char* argv[]) {
         showHelp = true;
     }
 
-    if (haveSearchType && (searchType != "neither") && (searchType != "both") && (searchType != "either")) {
-        cerr << endl << "*****" << endl << "*****ERROR: Request \"both\" or \"neither\"" << endl << "*****" << endl;
+    if (haveSearchType && (searchType != "neither") && (searchType != "both") && (searchType != "either") && (searchType != "notboth")) {
+        cerr << endl << "*****" << endl << "*****ERROR: Request \"both\",\"neither\",\"either\",or \"notboth\"" << endl << "*****" << endl;
         showHelp = true;
     }
 
@@ -160,11 +160,11 @@ void ShowHelp(void) {
 
     cerr << "\t-type \t"                << "Approach to reporting overlaps between A and B." << endl << endl;
     cerr                                << "\t\tneither\tReport overlaps if neither end of A overlaps B." << endl;
-
     cerr                                << "\t\teither\tReport overlaps if either ends of A overlap B." << endl;
-
     cerr                                << "\t\tboth\tReport overlaps if both ends of A overlap B." << endl;
-    cerr                                << "\t\t\t- Default = both." << endl << endl;
+    cerr                                << "\t\tnotboth\tReport overlaps if one or neither of ends of A overlap B." << endl;
+    
+    cerr                                << "\t\t- Default = both." << endl << endl;
 
     cerr << "\t-slop \t"                << "The amount of slop (in b.p.). to be added to each footprint." << endl;
     cerr                                << "\t\t*Note*: Slop is subtracted from start1 and start2 and added to end1 and end2." << endl << endl;