diff --git a/pkg/filter/filter.go b/pkg/filter/filter.go
index 5aa24ad..4ced633 100644
--- a/pkg/filter/filter.go
+++ b/pkg/filter/filter.go
@@ -64,7 +64,7 @@
 
 type Filter map[string]FilterTerm
 
-var termRE = regexp.MustCompile("^\\s*([a-zA-Z_][.a-zA-Z0-9_]*)\\s*(~|<=|>=|<|>|!=|=)\\s*(.+)\\s*$")
+var termRE = regexp.MustCompile(`^\s*([a-zA-Z_][.a-zA-Z0-9_]*)\s*(~|<=|>=|<|>|!=|=)\s*(.+)\s*$`)
 
 // Parse parses a comma separated list of filter terms
 func Parse(spec string) (Filter, error) {
diff --git a/pkg/filter/filter_test.go b/pkg/filter/filter_test.go
index 3a718e0..a776e49 100644
--- a/pkg/filter/filter_test.go
+++ b/pkg/filter/filter_test.go
@@ -219,7 +219,9 @@
 		},
 	}
 
-	f.Process(data)
+	if _, err = f.Process(data); err != nil {
+		t.Errorf("Error processing data")
+	}
 }
 
 func TestBadRE(t *testing.T) {
diff --git a/pkg/format/formatter.go b/pkg/format/formatter.go
index af92a03..eaa42eb 100644
--- a/pkg/format/formatter.go
+++ b/pkg/format/formatter.go
@@ -71,18 +71,30 @@
 				}
 			}
 		}
-		tabWriter.Write([]byte(header))
-		tabWriter.Write([]byte("\n"))
+		if _, err = tabWriter.Write([]byte(header)); err != nil {
+			return err
+		}
+		if _, err = tabWriter.Write([]byte("\n")); err != nil {
+			return err
+		}
 
 		slice := reflect.ValueOf(data)
 		if slice.Kind() == reflect.Slice {
 			for i := 0; i < slice.Len(); i++ {
-				tmpl.Execute(tabWriter, slice.Index(i).Interface())
-				tabWriter.Write([]byte("\n"))
+				if err = tmpl.Execute(tabWriter, slice.Index(i).Interface()); err != nil {
+					return err
+				}
+				if _, err = tabWriter.Write([]byte("\n")); err != nil {
+					return err
+				}
 			}
 		} else {
-			tmpl.Execute(tabWriter, data)
-			tabWriter.Write([]byte("\n"))
+			if err = tmpl.Execute(tabWriter, data); err != nil {
+				return err
+			}
+			if _, err = tabWriter.Write([]byte("\n")); err != nil {
+				return err
+			}
 		}
 		tabWriter.Flush()
 		return nil
@@ -91,12 +103,20 @@
 	slice := reflect.ValueOf(data)
 	if slice.Kind() == reflect.Slice {
 		for i := 0; i < slice.Len(); i++ {
-			tmpl.Execute(writer, slice.Index(i).Interface())
-			writer.Write([]byte("\n"))
+			if err = tmpl.Execute(writer, slice.Index(i).Interface()); err != nil {
+				return err
+			}
+			if _, err = writer.Write([]byte("\n")); err != nil {
+				return err
+			}
 		}
 	} else {
-		tmpl.Execute(writer, data)
-		writer.Write([]byte("\n"))
+		if err = tmpl.Execute(writer, data); err != nil {
+			return err
+		}
+		if _, err = writer.Write([]byte("\n")); err != nil {
+			return err
+		}
 	}
 	return nil
 
