diff --git a/.gitignore b/.gitignore
index e4b40a2..a3d640f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,6 @@
 sandbox
+todo.org
+tmp
 tokenizer.code-workspace
 ~*
 .*
diff --git a/datokenizer.go b/datokenizer.go
index 3c6310b..f2d9304 100644
--- a/datokenizer.go
+++ b/datokenizer.go
@@ -324,7 +324,7 @@
 
 				// Only a limited list of transitions are allowed
 				if inSym != outSym {
-					if outSym == tok.tokenend {
+					if outSym == tok.tokenend && inSym == tok.epsilon {
 						tokenend = true
 					} else if outSym == tok.epsilon {
 						nontoken = true
@@ -1180,11 +1180,10 @@
 		if dat.isTokenEnd(t) {
 
 			if buffi > 0 {
-				data := []byte(string(buffer[:buffo]))
 				if DEBUG {
-					fmt.Println("-> Flush buffer: [", string(data), "]", showBuffer(buffer, buffo, buffi))
+					fmt.Println("-> Flush buffer: [", string(buffer[:buffo]), "]", showBuffer(buffer, buffo, buffi))
 				}
-				writer.Write(data)
+				writer.WriteString(string(buffer[:buffo]))
 				rewindBuffer = true
 			}
 			if DEBUG {
@@ -1240,11 +1239,10 @@
 	if dat.getCheck(dat.getBase(t)+uint32(dat.final)) == t {
 
 		if buffi > 0 {
-			data := []byte(string(buffer[:buffi]))
 			if DEBUG {
-				fmt.Println("-> Flush buffer: [", string(data), "]")
+				fmt.Println("-> Flush buffer: [", string(buffer[:buffi]), "]")
 			}
-			writer.Write(data)
+			writer.WriteString(string(buffer[:buffi]))
 
 			if dat.isTokenEnd(t) {
 				writer.WriteRune('\n')
@@ -1271,20 +1269,18 @@
 	// Check epsilon transitions until a final state is reached
 	t0 = t
 	t = dat.getBase(t0) + uint32(dat.epsilon)
+	a = dat.epsilon
+	newchar = false
 	if dat.getCheck(t) == t0 {
 		// Remember state for backtracking to last tokenend state
-		a = dat.epsilon
-		newchar = false
 		goto PARSECHAR
 	} else if epsilonState != 0 {
 		t0 = epsilonState
 		epsilonState = 0 // reset
 		buffo = epsilonOffset
-		a = dat.epsilon
 		if DEBUG {
 			fmt.Println("Get from epsilon stack and set buffo!", showBuffer(buffer, buffo, buffi))
 		}
-		newchar = false
 		goto PARSECHAR
 	}
 	return false
diff --git a/datokenizer_test.go b/datokenizer_test.go
index 5faf0fc..e7e37d5 100644
--- a/datokenizer_test.go
+++ b/datokenizer_test.go
@@ -847,9 +847,9 @@
 			os.Exit(1)
 		}
 	}
-	// 2021-08-11
-	//   BenchmarkTransduce-4       18669             68511 ns/op
-	//   BenchmarkTransduce-4       18656             63068 ns/op
-	//   BenchmarkTransduce-4       15210             67403 ns/op
-	//   BenchmarkTransduce-4       18358             62233 ns/op
+	// 2021-08-11 (go 1.16)
+	// go test -bench=. -test.benchmem
+	//   BenchmarkTransduce-4       19069             60609 ns/op           11048 B/op        137 allocs/op
+	// 2021-08-112 (go 1.16)
+	//   BenchmarkTransduce-4       20833             55241 ns/op            9676 B/op          3 allocs/op
 }
