diff --git a/datokenizer.go b/datokenizer.go
index cf3f9c4..5868a36 100644
--- a/datokenizer.go
+++ b/datokenizer.go
@@ -26,7 +26,10 @@
 )
 
 // Special symbols in sigma
-var EPSILON, UNKNOWN, IDENTITY, FINAL int
+var EPSILON = -1
+var UNKNOWN = -1
+var IDENTITY = -1
+var FINAL = -1
 
 type mapping struct {
 	source int
@@ -292,7 +295,17 @@
 					tok.transitions[arrstate+1][FINAL] = &edge{}
 				}
 
-				fmt.Println("Add", arrstate+1, "->", arrtarget+1, "(", string(tok.sigma_rev[arrin]), ":", string(tok.sigma_rev[arrout]), ")")
+				fmt.Println("Add",
+					arrstate+1, "->", arrtarget+1,
+					"(",
+					arrin,
+					":",
+					arrout,
+					") (",
+					string(tok.sigma_rev[arrin]),
+					":",
+					string(tok.sigma_rev[arrout]),
+					")")
 
 				continue
 			}
@@ -510,21 +523,30 @@
 	t := 1 // Start position
 	chars := []rune(input)
 	i := 0
-	fmt.Println("Length of string is", len(chars))
+	//	fmt.Println("Length of string is", len(chars))
 	for ; i < len(chars); i++ {
-		a := tok.sigma[chars[i]]
+		a, ok := tok.sigma[chars[i]]
+
+		// Support identity symbol if char not in sigma
+		if !ok && IDENTITY != -1 {
+			fmt.Println("IDENTITY symbol", chars[i], "->", IDENTITY)
+			a = IDENTITY
+		}
 		tu := t
+	CHECK:
 		t = tok.get_base(tu) + a
-		fmt.Println("Check", string(tok.sigma_rev[a]), ":", t)
-		if t > tok.get_check(1) {
-			fmt.Println("Out of array")
-			break
-		} else if tok.get_check(t) != tu {
+		if t > tok.get_check(1) || tok.get_check(t) != tu {
 			fmt.Println("Match is not fine!", t, "and", tok.get_check(t), "vs", tu)
+
+			// Try again with unknown symbol, in case identity failed
+			if !ok && a == IDENTITY {
+				a = UNKNOWN
+				goto CHECK
+			}
 			break
 		} else if tok.get_base(t) < 0 {
+			// Move to representative state
 			t = -1 * tok.get_base(t)
-			// } else {
 		}
 	}
 
@@ -535,7 +557,7 @@
 		return false
 	}
 
-	// fmt.Println("Hmm...", tok.get_check(tok.get_base(t)+FINAL), "-", t)
+	fmt.Println("Hmm...", tok.get_check(tok.get_base(t)+FINAL), "-", t)
 
 	if tok.get_check(tok.get_base(t)+FINAL) == t {
 		return true
diff --git a/datokenizer_test.go b/datokenizer_test.go
index f714e10..64631c4 100644
--- a/datokenizer_test.go
+++ b/datokenizer_test.go
@@ -1,6 +1,7 @@
 package datokenizer
 
 import (
+	"fmt"
 	"testing"
 
 	"github.com/stretchr/testify/assert"
@@ -30,3 +31,17 @@
 	assert.True(tok.match("wahlen"))
 	assert.False(tok.match("baum"))
 }
+
+func TestSimpleTokenizer(t *testing.T) {
+	assert := assert.New(t)
+
+	fmt.Println("-------------------")
+
+	tok := parse_file("testdata/simpletok.fst")
+	tok.buildDA()
+	assert.True(tok.match("bau"))
+	/*
+		assert.True(tok.match("bad"))
+		assert.True(tok.match("wald gehen"))
+	*/
+}
diff --git a/testdata/simpletok.fst b/testdata/simpletok.fst
new file mode 100644
index 0000000..1cb6d68
--- /dev/null
+++ b/testdata/simpletok.fst
Binary files differ
