diff --git a/src/BLRlib/BLRMatchPath.cpp b/src/BLRlib/BLRMatchPath.cpp
index 9c7b9b51de72d323b9f1114473c1ff8ff30c23ff..af275c2c3d690be762798863afbb0bd92c25f5ab 100644
--- a/src/BLRlib/BLRMatchPath.cpp
+++ b/src/BLRlib/BLRMatchPath.cpp
@@ -239,7 +239,7 @@ void BLRMatchPath::writeBED(std::ostream &out) {
 //---------------------------------------------------------------------------
 void BLRMatchPath::writeGFF3(const SDGString &filename) {
     std::ostringstream gffStream;
-    writeBED(gffStream);
+    writeGFF3(gffStream);
     std::ofstream bedFile(filename);
     bedFile << gffStream.str();
 }
@@ -433,4 +433,4 @@ void BLRMatchPath::writeMatch(const BLRJoinParameter& para, const SDGString &fil
     }
     if (verbose > 0)
         std::cout << " done" << std::endl;
-}
\ No newline at end of file
+}
diff --git a/src/BLRlib/BLRMatcherThreadsParameter.cpp b/src/BLRlib/BLRMatcherThreadsParameter.cpp
index 5f2226f70d79665238a10d60a315ecb926fb9773..4e588e72502f2868deecc6e2c494959baf8094ab 100644
--- a/src/BLRlib/BLRMatcherThreadsParameter.cpp
+++ b/src/BLRlib/BLRMatcherThreadsParameter.cpp
@@ -80,6 +80,7 @@ void BLRMatcherThreadsParameter::parseOptArg(int numarg, char* tabarg[])
       }
 	  case 'x':
 	    {
+          clean_before=false;
 	      clean_after=true;
 	      break;
 	    }
diff --git a/src/BLRlib/testfiles/Test_BLRMatchMap.cpp b/src/BLRlib/testfiles/Test_BLRMatchMap.cpp
index 1b7bd5545fb34b1dbce904ade48c6ba2452c7675..4a08ab55469f244109eb7fd8d92ec727936e0104 100644
--- a/src/BLRlib/testfiles/Test_BLRMatchMap.cpp
+++ b/src/BLRlib/testfiles/Test_BLRMatchMap.cpp
@@ -54,7 +54,7 @@ void Test_BLRMatchMap::test_clean_conflicts(void){
 	FileUtils::removeFile(match_file);
 }
 
-void Test_BLRMatchMap::test_mapPath(void){
+void Test_BLRMatchMap::test_mapPath_join_merge_clean_after(void){
 		bool joiningParameter = true;
 		bool cleanBefore = false;
 		bool cleanAfter = true;
@@ -149,13 +149,7 @@ void Test_BLRMatchMap::test_isOverlapFound_in_add_split_path(void){
 		CPPUNIT_ASSERT_EQUAL(expOverlap, obsOverlap);
 }   
 
-void Test_BLRMatchMap::test_mapAlign_equality(void){
-	BLRMatchMap::MapAlign mapAlign1 = Test_BLRUtils::createMapAlign_instance_for_test_mapAlign_Equality();
-	BLRMatchMap::MapAlign mapAlign2 = Test_BLRUtils::createMapAlign_instance_for_test_mapAlign_Equality();
-	bool expComparaison = true;
-	bool obsComparaison = (mapAlign1 == mapAlign2);
-	CPPUNIT_ASSERT_EQUAL(expComparaison, obsComparaison);
-}
+
 
 
 void Test_BLRMatchMap::test_merge_on_two_queries(void)
diff --git a/src/BLRlib/testfiles/Test_BLRMatchMap.h b/src/BLRlib/testfiles/Test_BLRMatchMap.h
index 6b6e442559c64e9f9dbdfcd99502281b991329fe..a7b381876fc890406e68c8dee2093662ab611dd4 100644
--- a/src/BLRlib/testfiles/Test_BLRMatchMap.h
+++ b/src/BLRlib/testfiles/Test_BLRMatchMap.h
@@ -15,8 +15,7 @@ class Test_BLRMatchMap: public CPPUNIT_NS::TestFixture
 {
   CPPUNIT_TEST_SUITE(Test_BLRMatchMap);
   CPPUNIT_TEST(test_mapAlign_equality);
-  CPPUNIT_TEST(test_clean_conflicts);
-  CPPUNIT_TEST(test_mapPath);
+  CPPUNIT_TEST(test_mapPath_join_merge_clean_after);
   CPPUNIT_TEST(view_add_clean_path_all_S);
   CPPUNIT_TEST(test_isOverlapFound_in_add_split_path);
   CPPUNIT_TEST(test_merge_on_two_queries);
@@ -46,8 +45,8 @@ class Test_BLRMatchMap: public CPPUNIT_NS::TestFixture
 	protected:
     
     void test_mapAlign_equality(void);
-    void test_clean_conflicts(void);
-    void test_mapPath(void);
+    void test_mapPath_join_clean_before(void);
+    void test_mapPath_join_merge_clean_after(void);
     void view_add_clean_path_all_S(void);
     void test_isOverlapFound_in_add_split_path(void);
     void test_merge_on_two_queries(void);
diff --git a/src/BLRlib/testfiles/Test_BLRMatchPath.cpp b/src/BLRlib/testfiles/Test_BLRMatchPath.cpp
index c8fb3e7eea06d1f6bd7dcaf9936507241f2f0ec1..c35f59ed53a5aaa48818bb218368d17858581c8d 100644
--- a/src/BLRlib/testfiles/Test_BLRMatchPath.cpp
+++ b/src/BLRlib/testfiles/Test_BLRMatchPath.cpp
@@ -218,7 +218,31 @@ void Test_BLRMatchPath::test_writeBED(void){
 
 	CPPUNIT_ASSERT_EQUAL(exp.str(), obs.str());
 }
+//---------------------------------------------------------------------------
+void Test_BLRMatchPath::test_writeGFF3(void){
+
+    BLRJoinParameter para = Test_BLRUtils::createParameter();
+    BLRMatchPath matchPath;
+
+    std::ostringstream inputData;
+    inputData << "10\tCHR1v01212004\t100\t250\tTNAT1A\t36\t523\t2e-128\t460\t81.56\n";
+    inputData << "10\tCHR1v01212004\t800\t1000\tTNAT1A\t36\t523\t2e-128\t460\t81.56\n";
+    inputData << "20\tCHR2v01212004\t1050\t2000\tTNAT1A\t580\t480\t7e-78\t87\t79.14\n";
 
+    std::istringstream inputDataStream(inputData.str());
+    matchPath.read(para,inputDataStream, 0);
+
+    std::ostringstream obs;
+    matchPath.writeGFF3(obs);
+
+    std::ostringstream exp;
+    exp << "CHR1v01212004\tmatcher\tmatch\t100\t1000\t868\t+\t.\tID=1;Name=TNAT1A;Target=TNAT1A 36 523;Note=e-value:2e-128,identity:81.56\n";
+    exp << "CHR1v01212004\tmatcher\tmatch_part\t100\t250\t460\t+\t.\tID=1.1;Parent=1;Name=TNAT1A.1;Target=TNAT1A 36 523;Note=e-value:2e-128,identity:81.56\n";
+    exp << "CHR1v01212004\tmatcher\tmatch_part\t800\t1000\t460\t+\t.\tID=1.2;Parent=1;Name=TNAT1A.2;Target=TNAT1A 36 523;Note=e-value:2e-128,identity:81.56\n";
+    exp << "CHR2v01212004\tmatcher\tmatch\t1050\t2000\t87\t-\t.\tID=2;Name=TNAT1A;Target=TNAT1A 480 580;Note=e-value:7e-78,identity:79.14\n";
+    exp << "CHR2v01212004\tmatcher\tmatch_part\t1050\t2000\t87\t-\t.\tID=2.1;Parent=2;Name=TNAT1A.1;Target=TNAT1A 480 580;Note=e-value:7e-78,identity:79.14\n";
+    CPPUNIT_ASSERT_EQUAL(exp.str(), obs.str());
+}
 
 
 
diff --git a/src/BLRlib/testfiles/Test_BLRMatchPath.h b/src/BLRlib/testfiles/Test_BLRMatchPath.h
index 0d7997b91e5ee2b31276c69b58453ba25ca8322e..0999c0930bf9aca7911ca59b90803f39b4fb7bd2 100644
--- a/src/BLRlib/testfiles/Test_BLRMatchPath.h
+++ b/src/BLRlib/testfiles/Test_BLRMatchPath.h
@@ -12,13 +12,14 @@
 
 class Test_BLRMatchPath: public CPPUNIT_NS::TestFixture
 {
-  CPPUNIT_TEST_SUITE(Test_BLRMatchPath);
-  CPPUNIT_TEST(test_read);
-  CPPUNIT_TEST(test_load);
-  CPPUNIT_TEST(test_setFromRpsList);
-  CPPUNIT_TEST(test_setFromRpsList2);
-  CPPUNIT_TEST(test_writeBED);
-  CPPUNIT_TEST_SUITE_END();
+    CPPUNIT_TEST_SUITE(Test_BLRMatchPath);
+    CPPUNIT_TEST(test_read);
+    CPPUNIT_TEST(test_load);
+    CPPUNIT_TEST(test_setFromRpsList);
+    CPPUNIT_TEST(test_setFromRpsList2);
+    CPPUNIT_TEST(test_writeBED);
+    CPPUNIT_TEST(test_writeGFF3);
+    CPPUNIT_TEST_SUITE_END();
 
  public:
     void setUp();
@@ -30,6 +31,7 @@ class Test_BLRMatchPath: public CPPUNIT_NS::TestFixture
     void test_setFromRpsList(void);
     void test_setFromRpsList2(void);
     void test_writeBED(void);
+    void test_writeGFF3(void);
 
 };
 #endif
diff --git a/src/matcher.threads/matcherThreads.cpp b/src/matcher.threads/matcherThreads.cpp
index 7608a8bbba5f735f5b709842849efb32650b8794..9d87cbdc004cd99b2d8434fe15211d7b4a356b43 100644
--- a/src/matcher.threads/matcherThreads.cpp
+++ b/src/matcher.threads/matcherThreads.cpp
@@ -109,8 +109,6 @@ int main(int argc, char *argv[]) {
             std::cerr << "No file :" << para.getLoad_path()  << std::endl << std::flush;
 
 
-
-
         std::list<RangePair> rp_list = match_align.getRpListFromMatchAlign();
         if(para.getVerbose()>0) std::cout<<"list size="<<rp_list.size()<<std::endl;