add some interface for viterbi