diff --git a/fomafile.go b/fomafile.go
index 1d46500..2b10736 100644
--- a/fomafile.go
+++ b/fomafile.go
@@ -29,6 +29,7 @@
 
 type Tokenizer interface {
 	Transduce(r io.Reader, w io.Writer) bool
+	Type() string
 }
 
 // Automaton is the intermediate representation
@@ -442,6 +443,40 @@
 	return auto
 }
 
+func LoadTokenizerFile(file string) Tokenizer {
+	f, err := os.Open(file)
+	if err != nil {
+		log.Println(err)
+		return nil
+	}
+	defer f.Close()
+
+	gz, err := gzip.NewReader(f)
+	if err != nil {
+		log.Println(err)
+		return nil
+	}
+	defer gz.Close()
+
+	r := bufio.NewReader(gz)
+
+	mstr, err := r.Peek(len(DAMAGIC))
+
+	if err != nil {
+		log.Println(err)
+		return nil
+	}
+
+	if string(mstr) == MAMAGIC {
+		return ParseMatrix(r)
+	} else if string(mstr) == DAMAGIC {
+		return ParseDatok(r)
+	}
+
+	log.Println("Neither a matrix nor a datok file")
+	return nil
+}
+
 // Set alphabet A to the list of all symbols
 // outgoing from s
 func (auto *Automaton) getSet(s int, A *[]int) {
