use more compact trie (saves 6 bytes per node on 64-bit matchines); it makes compression slower, though, so only an experiment