trie structure *revised*