Let phrase construction seek for the same word and set its frequency.
Let WordData be a special case of PhraseData that cares the original order during reading process.
Let word_data keeps the original reading order.
Modify writing process to write words and phrases together.