diff --git a/TODO.md b/TODO.md
index 408799f..3cd3a52 100644
--- a/TODO.md
+++ b/TODO.md
@@ -26,9 +26,9 @@
 * Podcasts
 
 ## 1.0
+* ✓ concurrent processing
 * Review all errors wrapped properly
 * Change log from byte to string
-* concurrent processing
 * Config validation
     * Cron spec
     * Name - No spaces
diff --git a/app/db.go b/app/db.go
index e4b37c1..faf7b1e 100644
--- a/app/db.go
+++ b/app/db.go
@@ -84,33 +84,36 @@ func (d *db) Filter(entries []parser.FeedEntry) ([]parser.FeedEntry, error) {
 }
 
 func (d *db) Save(records []Record) error {
+	if len(records) == 0 {
+		return nil
+	}
+
 	f, err := os.OpenFile(d.dbPath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
 	if err != nil {
 		return err
 	}
-	defer func() {
-		f.Sync()
-		f.Close()
-	}()
+	defer f.Close()
+
 	csvw := csv.NewWriter(f)
-	if len(d.seenLinks) == 0 { //New file, write header
+	defer csvw.Flush()
+
+	if d.IsNewFeed() {
 		csvw.Write([]string{
-			"Date",
-			"Link",
-			"Status",
-			"Filter",
-			"Content",
+			/* 1 */ "Date",
+			/* 2 */ "Link",
+			/* 3 */ "Status",
+			/* 4 */ "Filter",
+			/* 5 */ "Content",
 		})
 	}
 	for _, r := range records {
 		csvw.Write([]string{
-			r.Time.Format(TimeFormat),
-			r.FeedEntry.Link,
-			string(r.Status),
-			r.Filter,
-			fmt.Sprintf("- %s", strings.ReplaceAll(r.FeedEntry.Content, "\n", " ")),
+			/* 1 */ r.Time.Format(TimeFormat),
+			/* 2 */ r.FeedEntry.Link,
+			/* 3 */ string(r.Status),
+			/* 4 */ r.Filter,
+			/* 5 */ fmt.Sprintf("
- %s", strings.ReplaceAll(r.FeedEntry.Content, "\n", " ")),
 		})
 	}
-	csvw.Flush()
 	return nil
 }