diff --git a/task.js b/task.js
index fc505155..a783df6a 100644
--- a/task.js
+++ b/task.js
@@ -12,7 +12,6 @@ const {
   includeAllFiles
 } = require('./task-utils')
 const { fixSourcePaths } = require('./support-utils')
-const { removePlaceholders } = require('./common-utils')
 
 const debug = require('debug')('code-coverage')
 
@@ -59,6 +58,13 @@ const nycReportOptions = (function getNycOption() {
 
 const nycFilename = join(nycReportOptions['temp-dir'], 'out.json')
 
+let coverageMap = (() => {
+  const previousCoverage = existsSync(nycFilename)
+    ? JSON.parse(readFileSync(nycFilename, 'utf8'))
+    : {}
+  return istanbul.createCoverageMap(previousCoverage)
+})()
+
 function saveCoverage(coverage) {
   if (!existsSync(nycReportOptions.tempDir)) {
     mkdirSync(nycReportOptions.tempDir, { recursive: true })
@@ -122,7 +128,7 @@ const tasks = {
   resetCoverage({ isInteractive }) {
     if (isInteractive) {
       debug('reset code coverage in interactive mode')
-      const coverageMap = istanbul.createCoverageMap({})
+      coverageMap = istanbul.createCoverageMap({})
       saveCoverage(coverageMap)
     }
     /*
@@ -148,21 +154,7 @@ const tasks = {
 
     fixSourcePaths(coverage)
 
-    const previousCoverage = existsSync(nycFilename)
-      ? JSON.parse(readFileSync(nycFilename, 'utf8'))
-      : {}
-
-    // previous code coverage object might have placeholder entries
-    // for files that we have not seen yet,
-    // but the user expects to include in the coverage report
-    // the merge function messes up, so we should remove any placeholder entries
-    // and re-insert them again when creating the report
-    removePlaceholders(previousCoverage)
-
-    const coverageMap = istanbul.createCoverageMap(previousCoverage)
     coverageMap.merge(coverage)
-    saveCoverage(coverageMap)
-    debug('wrote coverage file %s', nycFilename)
 
     return null
   },
@@ -172,6 +164,7 @@ const tasks = {
    * NPM script to generate HTML report
    */
   coverageReport() {
+    saveCoverage(coverageMap)
     if (!existsSync(nycFilename)) {
       console.warn('Cannot find coverage file %s', nycFilename)
       console.warn('Skipping coverage report')