diff --git a/FuzzerMerge.cpp b/FuzzerMerge.cpp
index 549d180..870a875 100644
--- a/FuzzerMerge.cpp
+++ b/FuzzerMerge.cpp
@@ -131,9 +131,10 @@
 
 // Decides which files need to be merged (add those to NewFiles).
 // Returns the number of new features added.
-void Merger::Merge(const Set<uint32_t> &InitialFeatures,
-                   Set<uint32_t> *NewFeatures, const Set<uint32_t> &InitialCov,
-                   Set<uint32_t> *NewCov, Vector<std::string> *NewFiles) {
+size_t Merger::Merge(const Set<uint32_t> &InitialFeatures,
+                     Set<uint32_t> *NewFeatures,
+                     const Set<uint32_t> &InitialCov, Set<uint32_t> *NewCov,
+                     Vector<std::string> *NewFiles) {
   NewFiles->clear();
   assert(NumFilesInFirstCorpus <= Files.size());
   Set<uint32_t> AllFeatures = InitialFeatures;
@@ -181,6 +182,7 @@
       if (InitialCov.find(Cov) == InitialCov.end())
         NewCov->insert(Cov);
   }
+  return NewFeatures->size();
 }
 
 Set<uint32_t> Merger::AllFeatures() const {
diff --git a/FuzzerMerge.h b/FuzzerMerge.h
index 7a0cd4b..c14dd58 100644
--- a/FuzzerMerge.h
+++ b/FuzzerMerge.h
@@ -63,9 +63,9 @@
   bool Parse(std::istream &IS, bool ParseCoverage);
   bool Parse(const std::string &Str, bool ParseCoverage);
   void ParseOrExit(std::istream &IS, bool ParseCoverage);
-  void Merge(const Set<uint32_t> &InitialFeatures, Set<uint32_t> *NewFeatures,
-             const Set<uint32_t> &InitialCov, Set<uint32_t> *NewCov,
-             Vector<std::string> *NewFiles);
+  size_t Merge(const Set<uint32_t> &InitialFeatures, Set<uint32_t> *NewFeatures,
+               const Set<uint32_t> &InitialCov, Set<uint32_t> *NewCov,
+               Vector<std::string> *NewFiles);
   size_t ApproximateMemoryConsumption() const;
   Set<uint32_t> AllFeatures() const;
 };
diff --git a/tests/FuzzerUnittest.cpp b/tests/FuzzerUnittest.cpp
index f3fee95..d9bdfc1 100644
--- a/tests/FuzzerUnittest.cpp
+++ b/tests/FuzzerUnittest.cpp
@@ -644,9 +644,9 @@
                   size_t NumNewFeatures) {
   Merger M;
   Vector<std::string> NewFiles;
-  Set<uint32_t> NewFeatures;
+  Set<uint32_t> NewFeatures, NewCov;
   EXPECT_TRUE(M.Parse(Input, true));
-  EXPECT_EQ(NumNewFeatures, M.Merge({}, &NewFeatures, &NewFiles));
+  EXPECT_EQ(NumNewFeatures, M.Merge({}, &NewFeatures, {}, &NewCov, &NewFiles));
   EQ(NewFiles, Result);
 }
 
@@ -690,7 +690,7 @@
 
 
   Vector<std::string> NewFiles;
-  Set<uint32_t> NewFeatures;
+  Set<uint32_t> NewFeatures, NewCov;
 
   EXPECT_TRUE(M.Parse("3\n2\nAA\nBB\nC\n"
                         "STARTED 0 1000\nFT 0 1 2 3\n"
@@ -704,7 +704,7 @@
   EQ(M.Files[0].Features, {1, 2, 3});
   EQ(M.Files[1].Features, {4, 5, 6});
   EQ(M.Files[2].Features, {1, 3, 6});
-  EXPECT_EQ(0U, M.Merge({}, &NewFeatures, &NewFiles));
+  EXPECT_EQ(0U, M.Merge({}, &NewFeatures, {}, &NewCov, &NewFiles));
   EQ(NewFiles, {});
 
   EXPECT_TRUE(M.Parse("3\n1\nA\nB\nC\n"
@@ -715,7 +715,7 @@
   EQ(M.Files[0].Features, {1, 2, 3});
   EQ(M.Files[1].Features, {4, 5, 6});
   EQ(M.Files[2].Features, {1, 3, 6});
-  EXPECT_EQ(3U, M.Merge({}, &NewFeatures, &NewFiles));
+  EXPECT_EQ(3U, M.Merge({}, &NewFeatures, {}, &NewCov, &NewFiles));
   EQ(NewFiles, {"B"});
 
   // Same as the above, but with InitialFeatures.
@@ -729,7 +729,7 @@
   InitialFeatures.insert(1);
   InitialFeatures.insert(2);
   InitialFeatures.insert(3);
-  EXPECT_EQ(3U, M.Merge(InitialFeatures, &NewFeatures, &NewFiles));
+  EXPECT_EQ(3U, M.Merge(InitialFeatures, &NewFeatures, {}, &NewCov, &NewFiles));
   EQ(NewFiles, {"B"});
 }
 
