diff --git a/datokenizer.go b/datokenizer.go
index 4f1e12d..cb3b822 100644
--- a/datokenizer.go
+++ b/datokenizer.go
@@ -99,7 +99,6 @@
 	maxSize    int
 	loadFactor float64
 	array      []bc
-	// lastFilledBase uint32
 
 	// Special symbols in sigma
 	epsilon  int
@@ -504,7 +503,6 @@
 		identity:   tok.identity,
 		epsilon:    tok.epsilon,
 		tokenend:   tok.tokenend,
-		// lastFilledBase: 1,
 	}
 
 	dat.resize(dat.final)
@@ -518,6 +516,7 @@
 
 	mark := 0
 	size := 0
+	var base uint32
 
 	// Create a mapping from s (in Ms aka Intermediate FSA)
 	// to t (in Mt aka Double Array FSA)
@@ -541,7 +540,8 @@
 		tok.getSet(s, &A)
 
 		// Set base to the first free slot in the double array
-		dat.array[t].setBase(dat.xCheck(A))
+		base = dat.xCheck(A)
+		dat.array[t].setBase(base)
 
 		// TODO:
 		//   Sort the outgoing transitions based on the
@@ -556,7 +556,7 @@
 				s1 := tok.transitions[s][a].end
 
 				// Store the transition
-				t1 := dat.array[t].getBase() + uint32(a)
+				t1 := base + uint32(a)
 				dat.array[t1].setCheck(t)
 
 				// Set maxSize
@@ -600,10 +600,10 @@
 				}
 			} else {
 				// Store a final transition
-				dat.array[dat.array[t].getBase()+uint32(dat.final)].setCheck(t)
+				dat.array[base+uint32(dat.final)].setCheck(t)
 
-				if dat.maxSize < int(dat.array[t].getBase()+uint32(dat.final)) {
-					dat.maxSize = int(dat.array[t].getBase() + uint32(dat.final))
+				if dat.maxSize < int(base+uint32(dat.final)) {
+					dat.maxSize = int(base + uint32(dat.final))
 				}
 			}
 		}
@@ -719,20 +719,9 @@
 func (dat *DaTokenizer) xCheck(symbols []int) uint32 {
 
 	// Start at the first entry of the double array list
-	base := uint32(1) // dat.lastFilledBase
-	// skip := false
+	base := uint32(1)
+
 OVERLAP:
-
-	/*
-		if !skip {
-			if dat.getCheck(base) != 0 {
-				dat.lastFilledBase = base
-			} else {
-				skip = true
-			}
-		}
-	*/
-
 	// Resize the array if necessary
 	dat.resize(int(base) + dat.final)
 	for _, a := range symbols {
@@ -1115,7 +1104,9 @@
 				fmt.Println("Current char", string(char), showBuffer(buffer, buffo, buffi))
 			}
 
-			// TODO: Better not repeatedly check for a!
+			// TODO:
+			//   Better not repeatedly check for a!
+			//   Possibly keep a buffer with a.
 			if int(char) < 256 {
 				a = dat.sigmaASCII[int(char)]
 			} else {
diff --git a/datokenizer_test.go b/datokenizer_test.go
index d11abbe..73282d2 100644
--- a/datokenizer_test.go
+++ b/datokenizer_test.go
@@ -848,7 +848,8 @@
 	}
 }
 
-func BenchmarkLoadDatokFile(b *testing.B) {
+// This test is deprecated as the datok file changes over time
+func XBenchmarkLoadDatokFile(b *testing.B) {
 	for i := 0; i < b.N; i++ {
 		dat := LoadDatokFile("testdata/tokenizer.datok")
 		if dat == nil {
@@ -858,6 +859,17 @@
 	}
 }
 
+func BenchmarkToDoubleArray(b *testing.B) {
+	tok := LoadFomaFile("testdata/simple_bench.fst")
+	for i := 0; i < b.N; i++ {
+		dat := tok.ToDoubleArray()
+		if dat == nil {
+			fmt.Println("Fail!")
+			os.Exit(1)
+		}
+	}
+}
+
 // 2021-08-11 (go 1.16)
 // go test -bench=. -test.benchmem
 //   BenchmarkTransduce-4         19069             60609 ns/op           11048 B/op        137 allocs/op
@@ -873,3 +885,6 @@
 //   BenchmarkLoadDatokFile-4               7         143143934 ns/op        203158450 B/op      5743 allocs/op
 //   BenchmarkTransduce-4               34939             34363 ns/op           14056 B/op          3 allocs/op
 //   BenchmarkLoadDatokFile-4               7         149511609 ns/op        203217193 B/op      5915 allocs/op
+// 2021-08-17
+//   BenchmarkTransduce-4               31204             32678 ns/op           14752 B/op          3 allocs/op
+//   BenchmarkToDoubleArray-4           44138             26850 ns/op           10704 B/op         29 allocs/op
diff --git a/testdata/simple_bench.fst b/testdata/simple_bench.fst
new file mode 100644
index 0000000..d399284
--- /dev/null
+++ b/testdata/simple_bench.fst
Binary files differ
